Page 1 sur 1

connexion ftp à travers un proxy

Posté : 26 mai 2009, 10:10
par albert80
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]

Posté : 26 mai 2009, 15:23
par enneite
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?

Posté : 26 mai 2009, 15:57
par albert80
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.

Posté : 26 mai 2009, 16:01
par pascaltje
l'exemple dans le 1er commentaire de la doc marche-t-il ?
http://fr.php.net/manual/fr/function.ft ... .php#46865

A+

Pascal

Posté : 26 mai 2009, 16:14
par enneite
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]

Posté : 26 mai 2009, 16:21
par albert80
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.

Posté : 26 mai 2009, 16:26
par enneite
il faudrait qu'on ait l'allure de ton code pour y voir plus clair...

Posté : 26 mai 2009, 16:47
par albert80
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.

Posté : 26 mai 2009, 18:06
par Nagol
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.

Posté : 26 mai 2009, 19:15
par albert80
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

Posté : 27 mai 2009, 01:16
par Sékiltoyai
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…