# FTP Client mit Squid als Proxy



## huckfinn (30. Aug 2007)

Hallo liebe Freunde, 

Ich habe hier ein komisches Phänomen. Ich versuche mit einem FTP Client auf einen Server durch meinen squid Proxy im Netz zuzugreifen. 
Wenn ich eine gewöhnliche URL zur Verbindung nehme und das System vorher umstelle 

```
String webDirectory ="ftp://e0srp01u.ecs.nasa.gov/srtm/version2/SRTM3/Eurasia/";
        String dstDircetory ="/home/huckfinn/Blackhole/Geodaten/SRTM-3/Plain-HGT/";

        System.setProperty( "proxySet", "true" );
        System.setProperty( "proxyHost", "141.53.197.121" );
        System.setProperty( "proxyPort", "3128" );

         fileName = "N60E008".hgt.zip";
        URL url = new URL(webDirectory+fileName);
        InputStream fin = url.openStream();

        System.out.print(" copy ");
        File file = new File(dstDircetory+fileName);
        FileOutputStream fos = new FileOutputStream(file);
        IOUtils.copy(fin,fos);

        System.out.println(" ready!");
        fin.close(); fos.close();
```

ist alles gut. 

Benutze ich einen FTPClient von Jakarta Comons Net geht nix:

```
String ftpServer    ="e0srp01u.ecs.nasa.gov";
        String ftpPath      ="/srtm/version2/SRTM3/Eurasia/";
        String dstPath      ="/home/huckfinn/Blackhole/Geodaten/SRTM-3/Plain-HGT";
        FTCClient client = new FTPClient();
      /* ---

        Ich habe diese Varianten gefunden das System auf Proxy zu setzten
        alle funktionieren nicht 
        System.getProperties().put( "socksProxySet", "true" );
        System.getProperties().put( "socksProxyPort", "3128");
        System.getProperties().put( "socksProxyHost" ,"141.53.197.121");
        
        System.setProperty( "ftp.proxySet", "true" );
        System.setProperty( "ftp.proxyHost", "141.53.197.121" );
        System.setProperty( "ftp.proxyPort", "3128" );
        */
        System.setProperty( "proxySet", "true" );
        System.setProperty( "proxyHost", "141.53.197.121" );
        System.setProperty( "proxyPort", "3128" );
        
        if (user==null) user ="anonymous";
        if (passwd==null) passwd = "eine.mail@host";

         client.connect(host);
         ... HIER HÄNGT DAS TEIL SICH AUF UND BEENDET SICH MIT EINE TIMEOUT!
```

Hat jemand eine Idee woran es liegen kan und welche der Konfigurationen in den System.properties 
ist gültig.

Thx Huck


----------



## tuxedo (31. Aug 2007)

Das müsste doch in der Doku zu "FTPClient von Jakarta Comons Net" nachzulesen sein?! Hast du google schon befragt?

- Alex


----------



## tuxedo (31. Aug 2007)

Gegoogelt und gleich beim ersten Ergebnis fündig geworden:

http://wiki.apache.org/jakarta-commons/Net/FrequentlyAskedQuestions
-> Q: Does FTPClient support FTP connections through an FTP proxy server?

Da steht aber auch nur was von Socks Proxy. Beherrscht ein Proxy Socks vielleicht nicht (falsch konfiguriert?)?

- Alex


----------



## tuxedo (31. Aug 2007)

Noch was:

http://de.nntp2http.com/comp/lang/java/2006/03/c1e936fcc8e8d5cbbec5c93e618c81fc.html

Seite öffnen, lesen und unten den Antwortlink anklicken und wieder lesen. 

Denke dann weißt du wieso du ein TimeOut bekommst.

- Alex


----------



## huckfinn (4. Sep 2007)

Gegoogelt habe ich und auch den gleichen Link bekommen, aber der ist nicht aussagekräftig. Socks ist doch genauso wie Squid ein weiterer Proxy. Am Proxy selbst kann es nicht liegen da ja die erste Verbindungsart klappt! Wenn ich das ganze mit netstat auf dem Proxy anschaue geht  die Verbindung  auch auf aber der Status wechselt nicht auf CONNECTED. 


Bis denne Huck


----------



## tuxedo (4. Sep 2007)

?? Was ist denn hier dran nicht aussagekräftig? 



> Squid spricht zum Client immer HTTP. Du mußt also einen HTTP-Clienten
> einsetzen, ihm den Proxy beibiegen und die FTP-URL angeben. Squid
> übersetzt das dann zum Host (wie bei curl).
> 
> Alternativen dazu sind diverse FTP-Proxies statt Squid.


----------



## huckfinn (4. Sep 2007)

Ah, ich verstehe langsam wo das Problem liegt. Es ist also mein Irrtum, wenn ich glaube daß die Kommunikation vom Client zum Squid Proxy über den Port 21 läuft. Heißt das, wenn ich FTP unter Squid freigebe, daß das Teil mit den Clients (Browser oder wget oder 'ne Java URL) immer über das HTTP Protokoll kommuniziert oder wie muß ich mir das vorstellen.

Thx Huck


----------



## tuxedo (4. Sep 2007)

So scheint es. Es wird vielleicht Port 21 genutzt, aber Squid kommuniziert, so wie ich das verstanden habe, mit HTTP zurück. Und da du ja FTP machen willst, versteht der (FTP-)Client das HTTP-Gelaber von Squid nicht.

- Alex


----------



## huckfinn (4. Sep 2007)

Ok ich werden das ganze mal mit DeleGate probieren. Vielen Dank Huckfinn


----------

