connexion ftp à travers un proxy

Petit nouveau ! | 5 Messages

26 mai 2009, 10:10

bonjour à tous,
j'ai le problème suivant : Je cherche à transferer un fichier sur un serveur ftp :
serveurftp = ftp.serveur.fr; user = userftp ; pass = passftp

je suis sur un réseau d'entreprise et je dois passer par un proxy
serveur proxy = www.proxy.fr ; user = DOMAIN\userproxy , pass = passproxy

le problème est que pour me connecter au proxy, j'utilise un nom d'utilisateur appartenant à un domaine (DOMAIN\userproxy) et là, visiblement, ça passe pas.

j'ai essayé avec ftp_connect, ftp_login, ftp_raw, je n'arrive pas à me connecter au proxy.
à la main, avec un client ftp, j'y arrive.

merci de votre aide

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Eléphant du PHP | 245 Messages

26 mai 2009, 15:23

pourquoi ne pas essayer de se connecter directement au serveur ftp, en passant les parametres de celui aux fonctions FTP de PHP ??

Pourquoi vouloir passer par le proxy?

Petit nouveau ! | 5 Messages

26 mai 2009, 15:57

JE suis dans un réseau d'entreprise, je n'ai pas le choix.
Tous les protocoles d'acces vers l'extérieur sont filtrés.
l'administrateur réseau m'a accordé les droits de faire du ftp à partir du serveur qui fait tourner apache/php vers le site ftp qui m'interesse, mais en passant par le proxy.

ViPHP
ViPHP | 1024 Messages

26 mai 2009, 16:01

l'exemple dans le 1er commentaire de la doc marche-t-il ?
http://fr.php.net/manual/fr/function.ft ... .php#46865

A+

Pascal

Eléphant du PHP | 245 Messages

26 mai 2009, 16:14

JE suis dans un réseau d'entreprise, je n'ai pas le choix.
Tous les protocoles d'acces vers l'extérieur sont filtrés.
l'administrateur réseau m'a accordé les droits de faire du ftp à partir du serveur qui fait tourner apache/php vers le site ftp qui m'interesse, mais en passant par le proxy.

est tu sur au moins que ton serveur proxy dispose d'un serveur FTP?
si ce n'est pas le cas, tu narriveras jamais à te connecter à lui via ftp_connect()...
quand tu dis "à la main, j'arrive à me connecter", s'agit-il du proxy ou du serveur distant?
si c'est au serveur distant, essaie la connexion avec ftp_connect() ...

Et sinon j'y pense, dans l'utilisation de ftp_connect:
essaie de remplacer DOMAIN\userproxy par simplement DOMAIN (si ca ne marche pas, par simplement userproxy)
regarde les identifiants de connexions passé dans ton client FTP, ce sont ceux là qu'il faut utiliser normalement mais bon...

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Petit nouveau ! | 5 Messages

26 mai 2009, 16:21

l'exemple dans le 1er commentaire de la doc marche-t-il ?
http://fr.php.net/manual/fr/function.ft ... .php#46865

A+

Pascal
merci pour ta réponse
Non, malheureusement, ça ne marche pas.

Eléphant du PHP | 245 Messages

26 mai 2009, 16:26

il faudrait qu'on ait l'allure de ton code pour y voir plus clair...

Petit nouveau ! | 5 Messages

26 mai 2009, 16:47

JE suis dans un réseau d'entreprise, je n'ai pas le choix.
Tous les protocoles d'acces vers l'extérieur sont filtrés.
l'administrateur réseau m'a accordé les droits de faire du ftp à partir du serveur qui fait tourner apache/php vers le site ftp qui m'interesse, mais en passant par le proxy.

est tu sur au moins que ton serveur proxy dispose d'un serveur FTP?
si ce n'est pas le cas, tu narriveras jamais à te connecter à lui via ftp_connect()...
quand tu dis "à la main, j'arrive à me connecter", s'agit-il du proxy ou du serveur distant?
si c'est au serveur distant, essaie la connexion avec ftp_connect() ...

Et sinon j'y pense, dans l'utilisation de ftp_connect:
essaie de remplacer DOMAIN\userproxy par simplement DOMAIN (si ca ne marche pas, par simplement userproxy)
regarde les identifiants de connexions passé dans ton client FTP, ce sont ceux là qu'il faut utiliser normalement mais bon...
merci de ta réponse
à la main :
j'ouvre IE. Par défaut, ma config réseau d'entreprise me propose la connexion au proxy. je rentre user : DOMAIN\userproxy
pass : passproxy

puis dans l'url, je met ftp://userftp:[email protected]
et je suis connecté

***************
voilà un des exemples trouvés sur la toile que j'ai testé. Il utilise la librairie curl.
	$ftp = array();
	$ftp["site"] = "ftp.serveur.fr";
	$ftp["utilisateur"] = "userftp";
	$ftp["motPasse"] = "passftp";

	$le_fichier_xml = "fichier.xml";
	
	$source = $le_fichier_xml;
	$fp = fopen($source, 'r');
	$urlFTP = "ftp://".$ftp["utilisateur"].":".$ftp["motPasse"]."@".$ftp["site"];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt ($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); // j'ai essayé sans cette option
    curl_setopt ($ch, CURLOPT_PROXY,"www.proxy.fr");
    curl_setopt ($ch, CURLOPT_PROXYUSERPWD,"DOMAIN\\userproxy:passproxy"); // j'ai essayé avec un antislash simple, mais il doit falloir l'échapper, donc j'en ai mis deux.
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // j'ai essayé sans ces deux lignes
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_URL, $urlFTP);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    curl_setopt($ch, CURLOPT_UPLOAD, 1);
    curl_setopt($ch, CURLOPT_INFILE, $fp);
    curl_setopt($ch, CURLOPT_INFILESIZE, filesize($source));

    $output = curl_exec($ch);
    $info = curl_getinfo($ch);
     if ($output === false || $info['http_code'] != 200)
    {
        $output = "No cURL data returned for $urlFTP [". $info['http_code']. "]";
        if (curl_error($ch))
           $output .= "\n". curl_error($ch);
        else
            echo "echec curl_error<br/>\n";
    }
    else 
    {
      // 'OK' status; format $output data if necessary here
    	echo "fin OK: ";
    }
    // then return or display the single string $output


    fclose($fp);
mais rien à faire il me répond : couldn't connect to host
Je crois vraiment que le problème vient du user proxy qui contient un nom de domaine. Ca doit être l'antislash qui lui plait pas.

ViPHP
ViPHP | 3300 Messages

26 mai 2009, 18:06

dis à ton admin d'arrêter de casser les ****, l'admin system est au service des ressources de l'entreprise si il te force à passer par un prox c'est qu'il fait pas son job.
Fait du php depuis que ca existe ou presque :)

Petit nouveau ! | 5 Messages

26 mai 2009, 19:15

dis à ton admin d'arrêter de casser les ****, l'admin system est au service des ressources de l'entreprise si il te force à passer par un prox c'est qu'il fait pas son job.
Ok merci de l'idée, mais je pense que ça va pas être facile

ViPHP
ViPHP | 5924 Messages

27 mai 2009, 01:16

Quand tu essayes par les fonctions ftp, comment fais-tu ?
Sinon, dans le code curl, le proxy que tu as mis est un proxy HTTP…