Se connecter à un FTP via un Proxy de type FTP (le tout en java)

leod38 Messages postés 4 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 janvier 2010 - 28 mai 2009 à 15:39
 nasresebbih - 1 mars 2013 à 16:22
Bonjour à tous , je vous arrête tout de suite je ne suis pas la sans avoir fait des recherches approfondit sur gogole
Mais bon , tous le monde raconte les memes choses mais toujours de facon incomplete ....

alors voila je cherche à me connecter dans un premier temps a un ftp en passant par un proxy ...
jusqu'ici rien de tres original.

le problème c'est que je fait du double login ...

je me connect au proxy (proxyhost,proxyuser,proxypassword)
puis de la je cherche a me connecter au ftp(host,user,pass)

les 2 users et password sont diferents

J'ai donc cherché des librairies correct et gratuite en java pour faire ceci

FTP4J qui indique ceci dans sa doc :

<li>FTPProxyConnector (it.sauronsoftware.ftp4j.connectors.FTPProxyConnector)
This one can connect through a FTP proxy, supporting both the SITE and the OPEN command style for demanding the connection with the remote host. Other kinds of FTP proxies, such the ones requiring a username@remotehost authentication, can be used without a specific connector, since they have been intended to be transparent to the client. </li>cette librarie fonctionne tres bien mais je n'arrive pas à l'utiliser car le probleme justement c'est que le ftp ne fonctionne qu'avec le style [mailto:user@host user@host] et non le style site ou open.

(j'arrive à me connecter via les commandes dos et via filezilla)

mais impossible de faire une simple connection avec cette librarie java

j'ai essayer également avec la librairie de jakarta et pas mieux :

les seuls parametres de proxy que l'on trouve ressemble a ceci

System.getProperties().put("socksProxyPort","1099");
System.getProperties().put("socksProxyHost","x.x.x.x"); //ip

autant dire totalement incomplet pour moi , rien pour login et mdp diférents ...

enfin bref je nage complet , si quelqu'un pouvait m'indiquer comment m'en sortir , ce serai cool
merci d'avance

leod

6 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
28 mai 2009 à 16:54
Salut,

allez, je joue le méchant :
recherche google avec les mots "java proxy socks username".
1ère réponse : http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html
chapitre SOCKS protocol support settings
il est fait mention de 2 propriétés
java.net.socks.username et java.net.socks.password

Tu peux utiliser aussi les authenticator
0
leod38 Messages postés 4 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 janvier 2010
29 mai 2009 à 08:26
Merci de ta réponse , en effet je suis tombé sur ce genre de code
mais je n'arrive pas à l'implémenter de la bonne facon

voici un des codes que j'ai testé sans succes :

package javaapplication1;


import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.util.Properties;
import org.apache.commons.net.ftp.FTPClient;


public class Main {


    public static void main(String[] args) {


    //connexion au proxy


    Properties prop = System.getProperties();
    prop.put("ftp.proxHost","ipdemonproxy");
    prop.put("ftp.proxyPort","portdemonproxy");
   
    Authenticator.setDefault(new Authenticator(){
            @Override
 protected PasswordAuthentication getPasswordAuthentication() {
    return new PasswordAuthentication("login1", "pass1".toCharArray());
  }
    });
  
    //connexion au ftp


    FTPClient f = new FTPClient();
    try{
    f.connect("urldemonftp",21);
    f.login("login2","pass2");
    }
    catch(Exception e)
    {
        System.out.println("erreur :" +e);
    }
  }
}

ca ne marche pas , tu me dit d'utiliser socks mais un proxy socks est different d'un proxy FTP non ?
j'avoue que je ne suis pas tres a l'aise coté reseau
si tu pouvais me completer mon code pour que ca fonctionne
0
titonium Messages postés 1 Date d'inscription vendredi 13 septembre 2002 Statut Membre Dernière intervention 30 juin 2009
30 juin 2009 à 11:42
essai plutot ca :

Properties prop = System.getProperties();
prop.put("socksProxyHost","ipdetonproxy");
prop.put("socksProxyPort",portdetonproxy);
Authenticator.setDefault(new Authenticator()
{
@Override
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("tonlogindeproxy", "tonmdpdeproxy".toCharArray());
}
});
0
devServlet Messages postés 1 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 8 janvier 2010
8 janv. 2010 à 15:40
Ingénieur d'études
Bonjour,
Quelqu'un avait il éssayé ce bout de code et ca a marché, si oui peut on voir comment vous l'avez implementé? Car chez moi ca marche pas.mode silencieux complet
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
leod38 Messages postés 4 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 janvier 2010
8 janv. 2010 à 16:17
voici ce que j'ai finalement utilisé
librairie FTP4J

code de la classe FtpConnection.java

package com.ste.esb.ws.ftp.connection;

import it.sauronsoftware.ftp4j.FTPClient;
import it.sauronsoftware.ftp4j.FTPFile;
import java.io.File;

/**
*
* @author Leod38
*
**/

public class FtpConnection {

//Data members
private FTPClient Client ;

//constructors
public FtpConnection(String proxyHost, String proxyLogin, String proxyPass, String login, String host, String pass) throws Exception {

try{
Client = new FTPClient();
Client.connect(proxyHost);
Client.login(proxyLogin,proxyPass);
Client.login(login+'@'+host,pass);
}
catch(Exception e){
throw e;
}
}

public void Close() throws Exception {
try{
Client.disconnect(true);
}
catch(Exception e){
throw e;
}
}

//Methods
public void changeDirectory(String repository) throws Exception {
try{
Client.changeDirectory(repository);
}
catch(Exception e){
throw e;
}
}

public void delete(String fileName) throws Exception {
try{
Client.deleteFile(fileName);
}
catch(Exception e){
throw e;
}
}

public void download(String string, File file) throws Exception {
try{
Client.download(string, file);
}
catch(Exception e){
throw e;
}
}

public boolean find(String fileName) throws Exception {
try{
FTPFile[] MyList = Client.list();
int i=0;
boolean Response = false;
while(i < MyList.length){
if(MyList[i].getName().equals(fileName)){
Response = true;
}
i++;
}
return Response;
}
catch(Exception e){
throw e;
}
}

public FTPFile[] list() throws Exception {
try{
return Client.list();
}
catch(Exception e){
throw e;
}
}

public void upload(String repository, String fileName) throws Exception {
try{
Client.upload(new java.io.File(repository+fileName));
}
catch(Exception e){
throw e;
}
}
}
0
Merci de ta réponse , mais je veut implémenter par netbeans svp!
sebbihstic@gmail.com
0
Rejoignez-nous