FTP-zu-Mountpoint

Hey,

also Dynamisch gelinked die die Version bei mir grundsätzlich, allerdings habe ich ein paar Probleme.

1)
Wenn ich z.B. meinen User matze nutze, der auf die Festplatte an meiner anderen Box zugriff hatt, dann passiert :
Code:
 # curlftpfs -v -d -f ftp://fritz.box/ ftp/ -o user=matze
Enter host password for user 'matze':
< 220-   __  _   __  __ ___ __
< 220-  |__ |_) |__ |__  |   /
< 220-  |   |\  |__ |__  |  /_
< 220-
< 220-   The fun has just begun...
< 220
> USER matze
< 331 Please specify the password.
> PASS XXXXXXXX
< 500 OOPS: cannot change directory:/home/matze
* Access denied: 500
Error connecting to ftp: Access denied: 500
Dann will er in das Verzeichnis /home/matze, welches auf Box 2 in der /etc/passwd für User matze eingtragen ist als Home, aber auf Box1 nicht existiert und da will ich ja auch nicht hin, sondern auf die Platte. Wie kann ich als das Heimat oder Startverzeichnis angeben?

2) Nutze ich mal den User root, der ja überall zugriff hat, um dieses zu umgehen, dann baut er die Verbindung auf, aber ein ls ist immer leer und auch anlegen kann ich nix, während des ls zeigt curlftpfs folgendes:
Code:
> PASV
< 227 Entering Passive Mode (XXXXXXXXXXXXXXXX)
> LIST -a
< 150 Here comes the directory listing.
< 226 Directory send OK.
Aber nix kommt an.
 
Hi, bei mir will es dynamisch nicht laufen, und im Moment hab ich einige andere Dinge um die Ohren. Deshalb komme ich erstmal nicht zum weiter probieren.

Aber zu deinem Problem fällt mir auf, dass du auf der Fritz Box an den FTP-Server fritz.box verbindest. Ist das dann nicht die gleiche box? Du willst doch eigentlich auf die andere, oder übersehe ich da was? Vielleicht versuch es mal mit der IP statt dem Namen...

Das 2. Phänomen hatte ich auch. Das Verzeichnis scheint übertragen zu werden, aber nix wird angezeigt. Dann scheint mein statisches binary ja zumindest gleich schlecht zu funktionieren. Also werde ich da bei Gelegenheit auch noch ein paar tests machen...
 
ok, ich wollte eigentlich auf meine erste Box, diese wird im Netz mit fritz.box oder box.mg angesprochen, leider hatte die zweite Box auch in der /etc/hosts sich selber als firtz.box, was ich vergessen hatte, also hast du recht, der erste Fehler ist von mir ne falsche Konfiguration gewesen mit den richtigen namen klappt es. Aber leider habe ich immernoch keinen Inhalt.
 
So also ich habe mich aktuell auch mal veruscht das ganz fürs statische linken hinzubekommen, mein aktueller Stand ist:
Code:
Index: make/curlftpfs/Makefile.in
===================================================================
--- make/curlftpfs/Makefile.in  (Revision 0)
+++ make/curlftpfs/Makefile.in  (Revision 0)
@@ -0,0 +1,3 @@
+ifeq ($(strip $(FREETZ_PACKAGE_CURLFTPFS)),y)
+PACKAGES+=curlftpfs
+endif
Index: make/curlftpfs/external.in
===================================================================
--- make/curlftpfs/external.in  (Revision 0)
+++ make/curlftpfs/external.in  (Revision 0)
@@ -0,0 +1,6 @@
+config EXTERNAL_FREETZ_PACKAGE_CURLFTPFS
+       depends on EXTERNAL_ENABLED && FREETZ_PACKAGE_CURLFTPFS
+       bool "CurlFtpFs"
+       default n
+       help
+               TODO
Index: make/curlftpfs/Config.in
===================================================================
--- make/curlftpfs/Config.in    (Revision 0)
+++ make/curlftpfs/Config.in    (Revision 0)
@@ -0,0 +1,26 @@
+config FREETZ_PACKAGE_CURLFTPFS
+       bool "CurlFtpFS 0.9.2 (binary only)"
+       default n
+       select FREETZ_LIB_libcurl if ! FREETZ_PACKAGE_CURLFTPFS_STATIC
+       select FREETZ_LIB_libiconv if ! FREETZ_PACKAGE_CURLFTPFS_STATIC
+       select FREETZ_LIB_libglib2 if ! FREETZ_PACKAGE_CURLFTPFS_STATIC
+       select FREETZ_PACKAGE_FUSE
+       help
+               CurlFtpFS is a filesystem for accessing FTP hosts based on FUSE and libcurl, which offers the following features amongst others:
+               - SSLv3 and TLSv1 support
+               - the ability to connect through tunneling HTTP proxies
+               - automatic reconnection upon FTP server time-out
+               (Text from Wikipedia)
+               http://curlftpfs.sourceforge.net/
+
+config FREETZ_PACKAGE_CURLFTPFS_STATIC
+       bool "Statically link libraries"
+       depends on FREETZ_PACKAGE_CURLFTPFS
+       default n
+       help
+               CurlFtpFS needs the following shared libraries which can be linked in statically
+               by activating this switch:
+               - libfuse
+               - libglib2
+               - libiconv
+               - libcurl
Index: make/curlftpfs/curlftpfs.mk
===================================================================
--- make/curlftpfs/curlftpfs.mk (Revision 0)
+++ make/curlftpfs/curlftpfs.mk (Revision 0)
@@ -0,0 +1,52 @@
+$(call PKG_INIT_BIN, 0.9.2)
+$(PKG)_LIB_VERSION:=4.1.1
+$(PKG)_SOURCE:=curlftpfs-$($(PKG)_VERSION).tar.gz
+$(PKG)_SITE:=http://surfnet.dl.sourceforge.net/sourceforge/curlftpfs
+
+ifeq ($(strip $(FREETZ_PACKAGE_CURLFTPFS_STATIC)),y)
+$(PKG)_BINARY:=$($(PKG)_DIR)/curlftpfs
+CURLFTP_LDFLAGS:=-static -all-static
+else
+$(PKG)_BINARY:=$($(PKG)_DIR)/curlftpfs
+CURLFTP_LDFLAGS:=
+endif
+
+
+$(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/bin/curlftpfs
+
+$(PKG)_DEPENDS_ON := fuse libiconv glib2 curl
+
+$(PKG)_CONFIG_SUBOPTS += FREETZ_PACKAGE_CURLFTPFS_STATIC
+
+$(PKG)_CONFIGURE_ENV += PKG_CONFIG_PATH="$(TARGET_MAKE_PATH)/../usr/lib/pkgconfig"
+$(PKG)_CONFIGURE_ENV += am_cv_func_iconv=yes
+
+$(PKG)_CONFIGURE_OPTIONS += $(if $(FREETZ_PACKAGE_CURLFTPFS_STATIC),--disable-shared,--enable-shared)
+$(PKG)_CONFIGURE_OPTIONS += $(if $(FREETZ_PACKAGE_CURLFTPFS_STATIC),--enable-static,--disable-static)
+
+
+
+$(PKG_SOURCE_DOWNLOAD)
+$(PKG_UNPACKED)
+$(PKG_CONFIGURED_CONFIGURE)
+
+$($(PKG)_BINARY): $($(PKG)_DIR)/.configured
+       PATH="$(TARGET_PATH)" \
+               $(MAKE) -C $(CURLFTPFS_DIR) \
+               LDFLAGS="$(TARGET_LDFLAGS) $(CURLFTP_LDFLAGS)" \
+               LIBS="-lfuse -liconv -lcurl -lglib-2.0 -lpthread"
+
+$($(PKG)_TARGET_BINARY): $($(PKG)_BINARY)
+       $(INSTALL_BINARY_STRIP)
+
+$(pkg):
+
+$(pkg)-precompiled: $($(PKG)_TARGET_BINARY)
+
+$(pkg)-clean:
+       -$(MAKE) -C $(CURLFTPFS_DIR) clean
+
+$(pkg)-uninstall:
+       $(RM) $(CURLFTPFS_TARGET_BINARY)
+
+$(PKG_FINISH)
Index: make/Config.in
===================================================================
--- make/Config.in      (Revision 3043)
+++ make/Config.in      (Arbeitskopie)
@@ -80,6 +80,7 @@
 source make/br2684ctl/Config.in
 source make/cryptsetup/Config.in
 source make/ctorrent/Config.in
+source make/curlftpfs/Config.in
 source make/davfs2/Config.in
 source make/debootstrap/Config.in
 source make/digitemp/Config.in

Leider hängt er an dieser Stelle
Code:
PATH="/home/matthias/dsmod/neu/test-curl/toolchain/target/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" \
                make -j2 -C source/curlftpfs-0.9.2 \
                LDFLAGS=" -static -all-static" \
                LIBS="-lfuse -liconv -lcurl -lglib-2.0 -lpthread"
make[1]: Betrete Verzeichnis '/home/matthias/dsmod/neu/test-curl/source/curlftpfs-0.9.2'
make  all-recursive
make[2]: Betrete Verzeichnis '/home/matthias/dsmod/neu/test-curl/source/curlftpfs-0.9.2'
Making all in compat
make[3]: Betrete Verzeichnis '/home/matthias/dsmod/neu/test-curl/source/curlftpfs-0.9.2/compat'
make[3]: Für das Ziel »all« ist nichts zu tun.
make[3]: Verlasse Verzeichnis '/home/matthias/dsmod/neu/test-curl/source/curlftpfs-0.9.2/compat'
Making all in doc
make[3]: Betrete Verzeichnis '/home/matthias/dsmod/neu/test-curl/source/curlftpfs-0.9.2/doc'
make[3]: Für das Ziel »all« ist nichts zu tun.
make[3]: Verlasse Verzeichnis '/home/matthias/dsmod/neu/test-curl/source/curlftpfs-0.9.2/doc'
make[3]: Betrete Verzeichnis '/home/matthias/dsmod/neu/test-curl/source/curlftpfs-0.9.2'
/bin/bash ./libtool --tag=CC --mode=link /home/matthias/dsmod/neu/test-curl/toolchain/target/bin/mipsel-linux-uclibc-gcc  -Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -W -Wno-sign-compare -D_REENTRANT -I/home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/include/glib-2.0 -I/home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib/glib-2.0/include   -I/home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/include/fuse     -static -all-static -o curlftpfs  ftpfs.o libcurlftpfs.a -lfuse -liconv -lcurl -lglib-2.0 -lpthread
/home/matthias/dsmod/neu/test-curl/toolchain/target/bin/mipsel-linux-uclibc-gcc -Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -W -Wno-sign-compare -D_REENTRANT -I/home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/include/glib-2.0 -I/home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib/glib-2.0/include -I/home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/include/fuse -static -o curlftpfs ftpfs.o  libcurlftpfs.a /home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib/libfuse.so /home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib/libcurl.so -lssl -lcrypto -ldl /home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib/libglib-2.0.so /home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib/libiconv.so /home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib/libintl.so -lpthread   -Wl,--rpath -Wl,/home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib -Wl,--rpath -Wl,/home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib
/home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/bin-ccache/../lib/gcc/mipsel-linux-uclibc/4.2.1/../../../../mipsel-linux-uclibc/bin/ld: attempted static link of dynamic object `/home/matthias/dsmod/neu/test-curl/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib/libfuse.so'
collect2: ld returned 1 exit status
make[3]: *** [curlftpfs] Fehler 1
make[3]: Verlasse Verzeichnis '/home/matthias/dsmod/neu/test-curl/source/curlftpfs-0.9.2'
make[2]: *** [all-recursive] Fehler 1
make[2]: Verlasse Verzeichnis '/home/matthias/dsmod/neu/test-curl/source/curlftpfs-0.9.2'
make[1]: *** [all] Fehler 2
make[1]: Verlasse Verzeichnis '/home/matthias/dsmod/neu/test-curl/source/curlftpfs-0.9.2'
make: *** [source/curlftpfs-0.9.2/curlftpfs] Fehler 2

Jemand ne Idee? Dynamisch läuft, das Problem auf der Box besteht weiterhin, es kommt kein Listing an.
 
Hi,

für das Linker-Problem hab ich spontan keine Lösung.
Wollte nur anmerken, dass man für Sourceforge nun folgende Syntax nutzen soll:
Code:
$(PKG)_SITE:=@SF/curlftpfs

Beste Grüße,
Whoopie
 
Ja, den Linkerfehler hatte ich seinerzeit auch. Hatte dann das Kommando per Hand so angepasst, das er nicht die dynamischen sondern die statischen Libs gelinkt hat - so bin ich an das statische Binary gekommen.

Warum beim ls nix kommt, ist mir ein Rätsel. Leider bin ich kein Linux-Entwickler, aber ich schau mir mal den Code an - vielleicht läßt sich da was erkennen.
 
Wo hast du denn die statische Lib her?
 
Öh, die hatte der wohl irgendwie gebaut :noidea:

Hatte das Kommando einfach nochmal ausgeführt und statt der .so Dateien die .a Libs angegeben.
 
So, hab mir mal den Code angesehen. In der ftpfs-ls.c wird in der Funktion parse_dir_unix der String zerhackt. Und ich vermute, da geht was schief... Und deshalb spingt er mit return 0 raus und nix passiert. Wenn ich am Wochenende mal Zeit zum probieren habe, versuche ich das mal zu fixen ;-)

EDIT:
Kann mir einer erzählen, warum bei folgendem sscanf als res nur 8 raus kommt?! Obwohl der letzte Parameter korrekt in file abgelegt wird, scheint er doch nicht korrekt interpretiert zu werden (res müsste 9 sein). Aber nur auf der Fritz-Box :noidea:
Code:
  res = sscanf(line,
               "%11s"
               "%lu"  SPACES
               "%32s" SPACES
               "%32s" SPACES
               "%llu" SPACES
               "%3s"  SPACES
               "%2s"  SPACES
               "%5s"  "%*c"
               "%1023c",
               mode, &nlink, user, group, &size, month, day, year, file);
Folgender Beispielstring:
Code:
-rw-r--r--    1 ftp      ftp         57429 Jan 09 14:05 hist-deu.txt

PS: SPACES ist ein #define, das ist korrekt ;-)
 
Zuletzt bearbeitet:
Ich muss ehrlich zugeben, dass ich davon keine Ahnung habe:noidea: sorry :)
 
Macht ja nix ;-) Ich bin auf jeden Fall dabei, es umzuprogrammieren. Werde dann einen Patch zur Verfügung stellen, dann kannst du das mal probieren. Ich gehe aber davon aus, dass es danach funktioniert :)

Bleibt dann nur noch das Problem mit dem statischen bauen...
 
Danke ;)

Zum statischen Bauen: Kannst du nochmal den Aufruf posten, wenn du den noch irgendwo hast? Vielleicht frage ich auch nochmal jemanden, der sich damit mehr Auskennt. (nein, nicht die Auskunft ;) )
 
EDIT:
Hab es jetzt doch wieder hin bekommen. Ein check-out auf den aktuellen Stand (3049), einspielen des Packages (incl. Patch, s.u.) und neu bauen kam wieder der linker Fehler. Dann hab ich das letzt Kommando wie folgt geändert und im source/curlftpfs-0.9.2 Verzeichnis nochmals aufgerufen:
Code:
/home/markus/freetz/trunk/toolchain/target/bin/mipsel-linux-uclibc-gcc -Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -W -Wno-sign-compare -D_REENTRANT -I/home/markus/freetz/trunk/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/include/glib-2.0 -I/home/markus/freetz/trunk/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib/glib-2.0/include -I/home/markus/freetz/trunk/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/include/fuse -static -o curlftpfs ftpfs.o  libcurlftpfs.a /home/markus/freetz/trunk/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib/libfuse.a /home/markus/freetz/trunk/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib/libcurl.a -lssl -lcrypto -ldl /home/markus/freetz/trunk/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib/libglib-2.0.a /home/markus/freetz/trunk/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib/libiconv.a /home/markus/freetz/trunk/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib/libintl.a -lpthread   -Wl,--rpath -Wl,/home/markus/freetz/trunk/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib -Wl,--rpath -Wl,/home/markus/freetz/trunk/toolchain/build/gcc-4.2.1-uClibc-0.9.29/mipsel-linux-uclibc/usr/lib

Ich habe einfach alle .so in .a umbenannt, fertig ;-) Anbei auch das aktuelle statische Binary.

Wie schon angekündigt, hab ich auch den Sourcecode gepatcht (sscanf anders implementiert). Beim erstem mount hing er komischerweise, der zweite Versuch aber funktionierte prima. Hab aber nur grob getestet.

Das Patch-File gehört nach make/curlftpfs/patches.
 

Anhänge

  • patch.tgz
    1.4 KB · Aufrufe: 9
  • curlftpfs-static.gz
    600 KB · Aufrufe: 11
Zuletzt bearbeitet:
Noch ein Update:
Es scheint nur im Single-Threaded Modus zu funktionieren (-s). Wenn man es im Vordergrund laufen läßt, klappt es auch (dann ist es auch nur ein thread, denke ich). Warum es sonst nicht läuft: Keine Idee :confused:

Schreibzugriff geht leider auch nicht :-( Zumindest hängt ein touch. Ein echo in eine Datei ging, aber die Daten kommen auch nicht korrekt an. Irgendwie ist da noch ziemlich der "Wurm" drin...
 
Zuletzt bearbeitet:
Hey erstmal nen großes Kompliment mit -s geht das listung und auch das Anziegen der Datein per cat.

Leider hast du Recht und ein Touch bliebt hängen, die Datei wird aber angelegt. Es hängt allerdings danach die Komplette-Verbindung, schade.

Vielliecht kann man das mal upstream melden, vielleicht hat dort jemand ne Idee bei den Entwicklern selber.
 
Tja, irgendwie verhält sich das alles sehr seltsam. Dass der sscanf nicht lief, war schon komisch. Und die anderen Phänomene sind auch sehr seltsam. Auf meinem Host funktioniert alles ohne Probleme.

Also entweder die Compiler-Einstellungen sind nicht ganz passend oder die verwendeten Libs haben auch noch Macken. Die neuen Fehler stimmen mich etwas pessimistisch. Aber ich werde nochmal schauen, ob ich im Code was erkennen kann. Aber nicht mehr heute ;-)
 
Das wird sich schon noch finden, vielleicht hinterlasse ich auf nachher mal auf der Sourceforge-Projektseite im Forum eine Nachricht. Das bekommen wir schon noch hin. Hier wurde auch mal was von "22-Jan-2007 - Bad libcurl versions" gesprochen, allerdings sind die viel älter.

Das Listing geht ja dank dir schonmal :)

Ich habe mich derweil mal an dem Patch für freetz zu schaffen gemacht und damit ist jetzt auch das statisch, sowie dynamische linken möglich. Deinen Patch habe ich auch schon integriert. Da Patch hängt anbei. Bei Gelegenheit muss ich die External-Option nochmal richtig einbauen. Die beiden Binarys sind bei mir aber gelaufen.
 

Anhänge

  • curlftpfs.patch.txt
    8.8 KB · Aufrufe: 15
Zuletzt bearbeitet:
Hey, super. Werde das bei Gelegenheit mal probieren! Danke erstmal :)

Edit:
Hi Matze, kompilieren klappt jetzt auch statisch, spitze :)
 
Zuletzt bearbeitet:
hmmm,
habe ja gehofft, dass nach dem Versionbump von curl die Probleme verschwunden sind, aber leider sind sie doch geblieben bei mir.
Vieleicht müssten wir doch nochmal ein Ticket bei den curlftpfs-machern öffnen, wenn keiner mehr eine Idee hat.
 
Hab momentan wenig Zeit, daher bin ich auch noch nicht dazu gekommen, das Ganze nochmal etwas näher unter die Lupe zu nehmen. Aber ist nicht vergessen :cool:
 

Zurzeit aktive Besucher

Neueste Beiträge

Statistik des Forums

Themen
246,274
Beiträge
2,249,293
Mitglieder
373,863
Neuestes Mitglied
RuthBeatty
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.