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

Signaler
Messages postés
4
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 janvier 2010
-
 nasresebbih -
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
A voir également:

6 réponses

Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
3
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
Messages postés
4
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 janvier 2010

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
Messages postés
1
Date d'inscription
vendredi 13 septembre 2002
Statut
Membre
Dernière intervention
30 juin 2009

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());
}
});
Messages postés
1
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
8 janvier 2010

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
Messages postés
4
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 janvier 2010

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;
}
}
}
Merci de ta réponse , mais je veut implémenter par netbeans svp!
sebbihstic@gmail.com