Curl et accès FTP non passif

Didier Guillion

Membre expert
Club iGen
20 Juillet 2001
3 244
164
61
Toulouse
www.myriad-online.com
Bonjour,

Je suis en train de travailler sur une extension d'un de mes programmes : Galerie pour lui permettre de poster lui-même des dossiers et leur contenu sur un site Web.

J'utilise la commande "curl" qui fonctionne plutot bien sauf quand le serveur ftp travaille en mode non passif.

Quelqu'un a t 'il une piste a me donner ?

Cordialement
 
Didier Guillion a dit:
Est ce specifique a mon serveur ?
Là comme ça, c'est difficile de répondre. Si tu veux, tu peux m'ouvrir un compte temporaire pour que je fasse des tests. Si tu es équipé de PGP, tu peux m'envoyer les login à l'adresse que tu trouveras sur mon site (je ne donne jamais mes adresses en clair sur un site Web à cause des spammeurs). Sinon, tu peux faire un message privé.

À+
 
Merci de ta réponse,

Malheureusement le seul site où j'ai des problemes est celui de mon hébergeur et je ne peut y ouvrir de compte temporaire.

Apparemment, mon hébergeur a mis en place des protections plutot severes et interdit le mode passif.

Ce qui m'étonne c'est que RBrowser Lite par exemple y accede sans probleme.

Peut etre devrais je utiliser une autre commande que "curl" ?

Peut etre la commande "ftp" ?

Ou directement passer par l'URLAccess ? Ou une Framework specifique ?

Tu me conseille quoi ?

Cordialement
 
Didier Guillion a dit:
Tu me conseille quoi ?
Ben rien, je n'ai pas assez d'informations pour te donner un avis pertinent.
frown.gif


Essaie l'option --disable-epsv de curl, on ne sait jamais.

À+
 
Bonjour,

Comme curl ne fonctionne pas tres bien et que dans tous les cas, meme s'il fonctionne, il ne permet pas d'envoyer plusieurs fichiers a la fois, j'ai essayé d'utiliser la commande "ftp" a la place.

Cela fonctionne tant que l'on n'accede pas a l'Internet via un proxy.

La commande 'curl' permet de définir le proxy avec, par exemple, le parametre "--proxy 192.168.0.5:10080"

Quelqu'un connait il l'equivalent de ce parametre pour la commande "ftp" ?

Cordialement
 
Si j'ai bien compris ce que tu veux faire, tu veux utiliser des commandes système pour mettre des fichiers en ligne avec ton logiciel. As-tu pensé à regarder tes process quand tu fais un curl, le mot de passe y est peut-être visible.

Jette un oeil ici. La documentation est claire et tu auras ton client FTP intégré dans le soft. Quant à mettre en ligne plusieurs fichiers, si tu ne t'en sors pas, fais une boucle et mets-les un à un. Mais là, je ne t'apprends rien.
wink.gif


À+
 
Merci Bilbo,

Mais si j'ai bien compris, libcurl est simplement une version "linkable" de "curl". Or, curl est installé par defaut sous X, donc pas de problemes pour l'invoquer.

Le probleme est que curl ne permet de transferer qu'un fichier a la fois, avec authentification a chaque fichier. Cela fonctionne mais est 3 fois plus lent qu'un access FTP standard.

Donc, je passe par "ftp" qui permet de transferer plusieurs fichiers à la fois, cela fonctionne aussi, SAUF quand on passe (comme moi) par un proxy local, donc je cherche la methode pour dire à "ftp" que je passe par un proxy local.

Cordialement
 
Didier Guillion a dit:
Mais si j'ai bien compris, libcurl est simplement une version "linkable" de "curl". Or, curl est installé par defaut sous X, donc pas de problemes pour l'invoquer.
Je ne suis pas d'accord avec cette approche, mais ça te regarde.
zen.gif


Didier Guillion a dit:
Cela fonctionne mais est 3 fois plus lent qu'un access FTP standard.
Ça me surprend. Je n'ai pas de tels problèmes. Mais je dois dire que je ne suis pas derrière un proxy. Je suppose que tes options de la commande ne sont pas optimisées, ce n'est qu'une supposition. Mais pour info, RBrowserLite utilise libcurl.

Didier Guillion a dit:
Donc, je passe par "ftp" qui permet de transferer plusieurs fichiers à la fois, cela fonctionne aussi, SAUF quand on passe (comme moi) par un proxy local, donc je cherche la methode pour dire à "ftp" que je passe par un proxy local.
J'avais compris.
wink.gif
Mais là, je ne peux pas t'aider davantage. Remarque, le fait que tu sois derrière un proxy est plutôt une bonne nouvelle : si ça marche chez toi, il y a de bonnes chances que ça marche aussi chez l'utilisateur final.

À+
 
Bonjour,

Bon, pour ceux que cela interesse, voici comment utiliser la commande ftp via un proxy.

soit server_address l'adresse du serveur
soit server_user le nom de l'utilisateur
soit server_password le mot de passe utilisateur
soit server_proxy_address l'adresse du proxy
soit server_proxy_port le numero de port de proxy

Cela donne :

ftp "ftp://server_user%40server_address:server_password@ server_proxy_address:server_proxy_port"

Cordialement
 
Didier Guillion a dit:
Bonjour,

Bon, pour ceux que cela interesse, voici comment utiliser la commande ftp via un proxy.

soit server_address l'adresse du serveur
soit server_user le nom de l'utilisateur
soit server_password le mot de passe utilisateur
soit server_proxy_address l'adresse du proxy
soit server_proxy_port le numero de port de proxy

Cela donne :

ftp "ftp://server_user%40server_address:server_password@ server_proxy_address:server_proxy_port"

Cordialement
Ça peut être utile. Merci.
zen.gif
 
Bonjour,

Bon j'ai suivi ta suggestion et ce week end j'ai linké le tout avec LibCurl.
Cela marche en effet beaucoup mieux.
A noter que j'ai eut des problemes avec l'ancienne version de Galerie qui utilisait les commandes curl et ftp via un appel shell: ces commandes n'étaient pas trouvées sur Mac OS X.2.

En tout cas, je recommande également la librairie LibCurl, elle est compacte et efficace.

Cordialement
 
Didier Guillion a dit:
En tout cas, je recommande également la librairie LibCurl, elle est compacte et efficace.

De manière générale, linker une bibliothèque ne peut se révéler que plus performant par rapport à l'exécution d'une commande externe faisant appel à la même lib.

Instancier un nouveau process correspondant à l'appel de la commande externe, ça coûte en temps. Certes, ça ne se chiffre pas en secondes, loin de là, mais si tu dois faire cet appel de manière fréquente, l'addition du coût en millisecondes finira par être perceptible.

Une petite chose sympathique pour l'utilisateur : essayer d'utiliser le paramétrage de proxy défini dans les préférences système
smile.gif
C'est rageant de devoir toujours ressaisir ces paramètres séparément dans chaque application.
 
nekura a dit:
Une petite chose sympathique pour l'utilisateur : essayer d'utiliser le paramétrage de proxy défini dans les préférences système
smile.gif
C'est rageant de devoir toujours ressaisir ces paramètres séparément dans chaque application.

Tu as deja reussit a faire fonctionner un proxy FTP sur Mac OS X ?
Moi, j'ai callé, il y a un truc que je ne comprends pas quelque part...

Cordialement