FTP-Connection über FTP-Proxy

Status
Nicht offen für weitere Antworten.

MatthiasH

Mitglied
Ich versuche verzweifelt eine FTP-Connection über ein FTP-Proxy hinzukriegen.

Die FTP-Connection an sich klappt, dass konnte ich ohne Umweg übers Proxy testen.
Doch hier in der Firma muss ich zwangsweise über das FTP-Proxy, da ich sonst auf der Firewall lande.

Ich habe schon vieles probiert mit den FTP libaries von jakarta und ftp4j.

Die Proxies hab ich in jeder erdenklichen Weise schon über System.setProperties gesetzt, doch ich lande immer wieder auf der Firewall.....

hier mal der code mit der jakarta ftp libary:

Java:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;

import org.apache.commons.net.PrintCommandListener;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPConnectionClosedException;
import org.apache.commons.net.ftp.FTPReply;


public class ftpClient1
{

    public static final void main(String[] args)
    {
        boolean error = false;
        String server, username, password;
        FTPClient ftp;
        String proxyHost = "XXXXXXXXXXX";
	    String proxyPort = "XXXX";
	    
	    System.setProperty("ftp.proxySet","true");
		System.setProperty("ftp.proxyHost",proxyHost);
		System.setProperty("ftp.proxyPort",proxyPort);
//		System.setProperty("ftp.nonProxyHosts",proxyHost);
		
		System.setProperty("ftpProxySet","true");
		System.setProperty("ftpProxyHost",proxyHost);
		System.setProperty("ftpProxyPort",proxyPort);
//		System.setProperty("ftp.nonProxyHosts",proxyHost);
		
//		System.setProperty("http.proxySet","true");
//		System.setProperty("http.proxyHost",proxyHost);
//		System.setProperty("http.proxyPort",proxyPort);
//		System.setProperty("http.nonProxyHosts",proxyHost);
		
//		System.setProperty("proxySet","true");
//		System.setProperty("proxyHost",proxyHost);
//		System.setProperty("proxyPort",proxyPort);
//		System.setProperty("nonProxyHosts",proxyHost);
		
//		System.setProperty("socksProxySet","true");
//		System.setProperty("socksProxyHost",proxyHost);
//		System.setProperty("socksProxyPort",proxyPort);
		
        server = "XXXX";
        username = "XXXX";
        password = "XXXX";

        ftp = new FTPClient();
//        ftp.enterLocalPassiveMode();
//        ftp.setRemoteVerificationEnabled(false);  
        ftp.addProtocolCommandListener(new PrintCommandListener(
                                           new PrintWriter(System.out)));
        try
        {
            int reply;
            ftp.connect(server);
            System.out.println("Connected to " + server + ".");

            reply = ftp.getReplyCode();

            if (!FTPReply.isPositiveCompletion(reply))
            {
                ftp.disconnect();
                System.err.println("FTP server refused connection.");
                System.exit(1);
            }
        }
        catch (IOException e)
        {
            if (ftp.isConnected())
            {
                try
                {
                    ftp.disconnect();
                }
                catch (IOException f)
                {
                    // do nothing
                }
            }
            System.err.println("Could not connect to server.");
            e.printStackTrace();
            System.exit(1);
        }

__main:
        try
        {
            if (!ftp.login(username, password))
            {
                ftp.logout();
                error = true;
                break __main;
            }

            System.out.println("Remote system is " + ftp.getSystemName());

            
            ftp.enterLocalPassiveMode();


            ftp.logout();
        }
        catch (FTPConnectionClosedException e)
        {
            error = true;
            System.err.println("Server closed connection.");
            e.printStackTrace();
        }
        catch (IOException e)
        {
            error = true;
            e.printStackTrace();
        }
        finally
        {
            if (ftp.isConnected())
            {
                try
                {
                    ftp.disconnect();
                }
                catch (IOException f)
                {
                    // do nothing
                }
            }
        }

        System.exit(error ? 1 : 0);
    } // end main

}


Mit dem ftp.connect() lande ich wie gesagt auf der Firewall und da schlägt der Login natürlich fehl.... bei den meisten meiner Versuche habe ich dann folgenden Fehler bekommen beim ftp.login():

421-Access denied - wrong user name or password

org.apache.commons.net.ftp.FTPConnectionClosedException: FTP response 421 received. Server closed connection.

Hoffe mir kann da jemand helfen.

Java: JSE6
BS: Mac OS X Leopard

In den Proxysettings von Leopard hab ich auch rumgewerkelt.
FTP-Proxy an/aus - FTP als Ausnahme und wieder raus usw.

Aber es geht einfach nicht...
Hoffe es kann mir jemand helfen..

gruß
Matthias
 

MatthiasH

Mitglied
Man hat mir versichert, dass man beim Proxy keine Authentifizierung benötigt....

Außerdem bekomme ich die selbe Fehlermeldung, wenn ich keinerlei FTP-Proxy angebe (weder in der JVM noch in den Systemeinstellungen).

Und als FTP Reply nach dem Connect kriege ich folgendes zurück:
220 Check Point FireWall-1 Secure FTP server running on XXX

Heisst wohl, dass er das FTP-Proxy so wie ich es angegeben habe nicht erkennt....

Hab mich auch schon totgegoogled nach ner Lösung, aber erfolglos :-/
 

sparrow

Top Contributor
Was ist das denn für ein Proxy? Zufällig Squid?
Ich kenne FTP-Proxys vor allem so, dass sie gegenüber dem Client meist HTTP sprechen.
Das heißt: der Proxy empfängt entsprechende Daten vom FTP-Server und bereitet die dann entsprechend optisch mit Hilfe von HTML auf und sendet das an den Client.
 

MatthiasH

Mitglied
Es ist ein richtiger FTP-Proxy... also ein Frox-Proxy...

Ich kenne FTP-Proxys vor allem so, dass sie gegenüber dem Client meist HTTP sprechen.

Ja sowas ähnliches habe ich auch gelesen....
aber was heisst das jetzt für mich....???
muss ich den ftp über http ansprechen und das ftp-proxy als http-proxy angeben?
URL url = new URL("ftp://username:password@ftp.whatever.com/file.zip") ???

nur über http kann ich ja dann keine befehle wie list abrufen, was ich eigentlich für meine zwecke bräuchte....!?
 

MatthiasH

Mitglied
Kann das sein, dass es gar nicht geht mit Java eine FTP-Connection über ein FTP-Proxy aufzubauen???

Ich lese nämlich immer nur von HTTPTunnel und SocksProxy.....

Scheint so als würde keine ftp-libary so wirklich das Connecten über FTP-Proxies supporten...
 

HoaX

Top Contributor
Am besten du fragst mal den Admin des FTP-Proxies wie dieser heißt und funktioniert und leitest das an uns weiter ...
 

EuropaChat

Mitglied
Sorry, wollte dir helfen, aber wurde gerade in einem anderen Forum gesperrt, dort habe ich deine Frage gepostet, und in diesem Forum kann man Bits sammeln. Nun meinen sie das ich Bits sammeln wollte. Naja vllt. antwortet doch noch jemand auf diesen Beitrag.

Ich Google nun mal, vllt. komm ich ja auf die Lösung.
 

HoaX

Top Contributor
Sorry, wollte dir helfen, aber wurde gerade in einem anderen Forum gesperrt, dort habe ich deine Frage gepostet, und in diesem Forum kann man Bits sammeln. Nun meinen sie das ich Bits sammeln wollte. Naja vllt. antwortet doch noch jemand auf diesen Beitrag.

Ich Google nun mal, vllt. komm ich ja auf die Lösung.
Hä?
 

MatthiasH

Mitglied
Am besten du fragst mal den Admin des FTP-Proxies wie dieser heißt und funktioniert und leitest das an uns weiter ...

Es ist ein Frox Proxy...

und über den funktioniert nur FTP im passiven Modus, sonst öffnet der proxy nen anderen channel und ich lande auf unserer Firewall.
 

HoaX

Top Contributor
Frox? Du meinst sicherlich Socks4/5?!

Edit: Ok, grad mal gegooglet ... gibt wohl wirklich einen FTP-Proxy der Frox heißt ...
 

HoaX

Top Contributor
Auf der Seite Frox transparent ftp-proxy home page steht dass es ein transparenter Proxy ist. D.h. es ist nicht die Aufgabe deines Programms dich darüber zu verbinden, sondern dein Admin muss sich darum kümmern dass der Traffic darüber geleitet wird. Evtl. wird es das ja schon, da es ja ohne geht wie du sagst.

Hätte mich auch gewundet wenn es anders wäre, denn innerhalb des FTP-Protokolls wird im Gegensatz zu HTTP nicht nochmal der Hostname/IP des Server gesendet. D.h. der Proxy hätte nie gewusst wohin die Verbindung hätte gehen sollen.
 
Zuletzt bearbeitet:

MatthiasH

Mitglied
Hm ich hab es mal mit QFtp probiert,

Java:
QNetworkProxy proxy = new QNetworkProxy();
	        proxy.setHostName(proxyHost);
	        proxy.setPort(proxyPort);
	        proxy.setType(com.trolltech.qt.network.QNetworkProxy.ProxyType.FtpCachingProxy);
	        
	        QFtp ftp = new QFtp();
	        ftp.connectToHost(server);
	        ftp.login(username, password);
	        ftp.setTransferMode(TransferMode.Passive);

nachdem es erstmal nur in JSE 5 mit 32 bit lief

krieg ich nun beim connectToHost():

QObject::startTimer: QTimer can only be used with threads started with QThread

hat nicht jemand ein Beispiel für QFTP in Java, ich habe dazu nichts gefunden :-/ ??
 

HoaX

Top Contributor
Wieso bastelst du da immernoch dran rum? Es ist ein transparenter Proxy, der sollte ohne dein zutun machen was er soll!?
Zu QFtp wird dir nur Vamp898 oder die Doku weiterhelfen können...
 

Vamp898

Mitglied
das QNetworkProxy kannst du dir durch das hier sparen =)

QFtp

Ich bräucht evtl. den ganzen source + die genaue fehlermeldung um zu sagen was da schief gelaufen ist. Weil bei mir funktionierts wenn ichs genau so mache wie du^^

Das hier ist das Beispielprogramm aus der API

Java:
   ftp.connectToHost("ftp.trolltech.com");
    ftp.login();
    ftp.cd("qt");
    ftp.get("INSTALL");
    ftp.close();
 

MatthiasH

Mitglied
Java:
import java.io.IOException;
import java.io.PrintWriter;

import com.trolltech.qt.network.QFtp;
import com.trolltech.qt.network.QNetworkProxy;
import com.trolltech.qt.network.QFtp.TransferMode;

public class qFTP 
{

	
	public static final void main(String[] args)
    {
        
		String server, username, password;
        String proxyHost = "XXXXXXXXX";
	    String proxyPort = "XXXX";
		
        server = "XXXXXXXXXX";
        username = "XXXXXXX";
        password = "XXXXXXX";
        try
        {
	        QFtp ftp = new QFtp();
                System.out.println("Setting Proxy...");
	        ftp.setProxy(proxyHost, proxyPort);
	        System.out.println("Trying to connect...");
	        ftp.connectToHost(server);
	        System.out.println("Trying to login...");
	        ftp.login(username, password);
	        System.out.println("Login successful...");
	        ftp.setTransferMode(TransferMode.Passive);
        }
        catch (Exception e)
        {
        	e.printStackTrace();
        }

    }
}

ohne -XstartOnFirstThread:
WARNING!!


Qt Jambi does not appear to be running on the main thread and will most likely be unstable and crash. Please make sure to launch your 'java' command with the '-XstartOnFirstThread' command line option. For instance:

> java -XstartOnFirstThread com.trolltech.examples.AnalogClock


Setting Proxy...
QObject::startTimer: QTimer can only be used with threads started with QThread
Trying to connect...
Trying to login...
Login successful...


mit -XstartOnFirstThread:
Setting Proxy...
QObject::startTimer: QTimer can only be used with threads started with QThread
Trying to connect...
Trying to login...
Login successful


alles mit JRE 1.5 in MAC OS X 10.5


EDIT: hab noch ein paar state() eingbaut >>>> jederzeit unconnected
errorString() nach dem connectToHost() gibt >>>> Unknown Error
 
Zuletzt bearbeitet:

MatthiasH

Mitglied
Hm also ich habs mal über Kommandozeile versucht...

da komm ich folgenderweise klar:

ftp> open proxyHost proxyPort
Connected to proxyHost
220 Ready
Name : User@Server
331 ok
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

ftp> epsv4
EPSV/EPRT on IPv4 off.

ftp> ls
Und er zeigt endlich alle files an

ohne den extended passive mode (epsv4) wird die verbindung geschlossen....
 

HoaX

Top Contributor
Was hält dich jetzt davon am Qt Qt sein zu lassen, dein altes funktionierendes Programm zu nehmen, da du den Proxy nicht setzen brauchst, und glücklich zu sein?!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A UCP Connection über Proxy möglich? Netzwerkprogrammierung 7
Z Socket Connection reset by peer nur per IP nicht über localhost Netzwerkprogrammierung 13
x46 Connection reset by peer: socket write error Netzwerkprogrammierung 6
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
Thalion TCP Connection zu langsam Netzwerkprogrammierung 2
S Client Server Connection Netzwerkprogrammierung 4
C Handle Connection Problem Netzwerkprogrammierung 3
R Socket InputStream readObject > Connection Reset Netzwerkprogrammierung 3
L ssh connection; Zugriff auf 'screen' Prozess Netzwerkprogrammierung 5
C Client connection per Portforwarding auf einen lokalen Serverport Netzwerkprogrammierung 3
M Connection refused? Netzwerkprogrammierung 2
D Connection refused Netzwerkprogrammierung 3
B Client/Server Connection Problem Netzwerkprogrammierung 2
D Socket Socket absichtlich so schließen, dass Gegenseite java.net.SocketException: Connection reset wirft Netzwerkprogrammierung 4
C Socket Connection refused bei Internetverbindung - Welcher Port? Netzwerkprogrammierung 5
K Socket Exception Connection reset Netzwerkprogrammierung 9
VfL_Freak Socket SocketException: Connection reset Netzwerkprogrammierung 11
C Socket Socket: Connection timed out Netzwerkprogrammierung 3
T Empfangen klappt Senden nicht - Connection timed out Netzwerkprogrammierung 12
H java.net.ConnectException: Connection refused Netzwerkprogrammierung 3
RELAXccc HTTP Connection timed out: connect ?an was kann es liegen? Netzwerkprogrammierung 4
G Exception: Connection reset by peer: socket write error Netzwerkprogrammierung 2
N Socket verliert die Connection. Netzwerkprogrammierung 4
M RMI - Connection Problem Netzwerkprogrammierung 7
trash HTTP Internet Connection bei Proxy ?! Netzwerkprogrammierung 3
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
H RMI Connection refused bei RMI-Registry Netzwerkprogrammierung 10
S SSH-Connection - Auto-Vervollständigung mittels TAB Netzwerkprogrammierung 4
A Chatprogramm: Connection refused Netzwerkprogrammierung 4
T RMI RMI und VPN - callbackObject Connection refused Netzwerkprogrammierung 13
A Socket Client Server Connection wird aufgebaut aber keine daten geschickt. Netzwerkprogrammierung 5
J Connection Speed Test ohne Applet Netzwerkprogrammierung 5
0din Connection refused bei localhost?! Netzwerkprogrammierung 7
T Wie connection Reset abfragen/abfangen? Netzwerkprogrammierung 10
A RMI java.rmi.ConnectException: Connection refused to host: 1 Netzwerkprogrammierung 4
M chat funktioniert nicht (Connection refused: connect) Netzwerkprogrammierung 3
G InputStreamReader lässt TCP-Connection offen Netzwerkprogrammierung 9
X URL connection Problem Netzwerkprogrammierung 3
R ConnectException: Connection refused to host: 192.168.1.4 ? Netzwerkprogrammierung 8
sparrow Connection Reset bei Webserver, Java WebStart als Client Netzwerkprogrammierung 9
tfa RMI-Problem: Connection refused to host: 127.0.0.2 Netzwerkprogrammierung 4
G Connection zu MySQL ohne ODBC Netzwerkprogrammierung 8
IT-MaD Connection reset by peer: socket write error Netzwerkprogrammierung 2
B RMI & Connection refused to host Netzwerkprogrammierung 12
G httpUnit: Connection timed out Netzwerkprogrammierung 3
lhein java.io.IOException: Unable to establish loopback connection Netzwerkprogrammierung 4
Paule Connection Applet Servlet ohne Socket bzw RMI Netzwerkprogrammierung 2
B Multithreaded Server: Connection reset Netzwerkprogrammierung 4
T JDBC Verbindungsabbruch (Connection reset) Netzwerkprogrammierung 2
M SocketException: Connection reset Netzwerkprogrammierung 10
G MAC / IP Connection Netzwerkprogrammierung 10
M Problem: connection abbrechen und login erkennen Netzwerkprogrammierung 2
M Umlaute gehen bei URL Connection verloren Netzwerkprogrammierung 6
M seltsam: java.net.SocketException: Connection reset Netzwerkprogrammierung 1
B RMI Connection Problem Netzwerkprogrammierung 13
T Dateien wia P2P Connection versenden Netzwerkprogrammierung 2
D Socketverbindung schlägt fehl - Connection refused: connect Netzwerkprogrammierung 4
H java.net.SocketException: Software caused connection abort Netzwerkprogrammierung 4
R FTP Connection zu Server Netzwerkprogrammierung 4
M Ausgangsport für FTp-Connection festlegen??? Netzwerkprogrammierung 3
K Tabelle im Web über Listener aufrufen Netzwerkprogrammierung 1
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
B Zip Dateien über FTP laden Netzwerkprogrammierung 2
x46 byte[] über BufferedReader auslesen Netzwerkprogrammierung 18
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
L Webbasierte Anwendung - Authentifizierung über LDAP/ActiveDirectory Netzwerkprogrammierung 5
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
S Daten über TCP/IP senden Netzwerkprogrammierung 3
T Broadcast-message über spez. Netzwerk-Schnittstelle Netzwerkprogrammierung 1
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
M Erstelltes Programm über Internet Browser ausführen Netzwerkprogrammierung 26
T VPN-Verbindung über Java Netzwerkprogrammierung 4
V Einfachen Javaserver über das Internet erreichbar machen Netzwerkprogrammierung 2
J FTP Upload über Proxy funktioniert nicht Netzwerkprogrammierung 1
E Kurze Textnachrichten über einen Server von meinem Handy auf den Computer laden. Netzwerkprogrammierung 9
J FTP FTP Zugriff über Proxy Server Netzwerkprogrammierung 1
Thallius Java Application über ZScaler benutzer? Netzwerkprogrammierung 0
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
V einfaches hin und her von Text über Server Netzwerkprogrammierung 2
P RMI Client Server Programm über Internet Netzwerkprogrammierung 2
antonbracke Multiuser Software über XMPP Server Netzwerkprogrammierung 1
Z Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich Netzwerkprogrammierung 3
cezary Socket ServerSocket starten über GUIIm unterstehenden Code versuche Netzwerkprogrammierung 6
I ASCII über serielle Schnittstelle Netzwerkprogrammierung 1
N RMI "RMI über Lan funktioniert nicht" & "RMI-Server im Lan scannen" Netzwerkprogrammierung 13
L Mit Java über PHP in MySQL anmelden (Login script) Netzwerkprogrammierung 3
M Socket String Arrays über Socket an Server schicken Netzwerkprogrammierung 2
T Socket Methoden über Internet aufrufen Netzwerkprogrammierung 1
S Socket Kommunikation über Internet Netzwerkprogrammierung 1
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
P RMI Threads die über RMI auf Datenbank zugreifen Netzwerkprogrammierung 2
S Datei schreiben über Applet Netzwerkprogrammierung 8
G Klassen über Netzwerk kommunizieren lassen Netzwerkprogrammierung 6
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
Kjubert Synchronisieren von Objekten über Client/Server - bester Weg? Netzwerkprogrammierung 7
S ImageIcon über Socket schicken (Serialisierung) Netzwerkprogrammierung 6
H Socket Objekte über Socket? Allgemeine Verständnisprobleme in Sachen Socket Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben