Commons Net FTPHTTPClient: HTTP־פּראָקסי טונעלן פֿאַר פּאַסיוון FTP
טונעלירט FTP־קאָנטראָל און פּאַסיווע דאַטן־פֿאַרבינדונגען דורך אַן HTTP־פּראָקסי מיט Commons Net'ס באַזונדערן קליענט.
Apache Commons Net אַנטהאַלט FTPHTTPClient פֿאַר FTP דורך אַן HTTP CONNECT־פּראָקסי. זײַן נוצלעכע אייגנשאַפֿט איז ניט בלויז דערגרייכן דעם FTP־לאָגין־פּאָרט: ער שטעלט אויך אויף פּראָקסי־טונעלן פֿאַר די פּאַסיווע דאַטן־פֿאַרבינדונגען וואָס ליסטעס און טעקע־איבערפֿירונגען ניצן.
דער קאָנסטרוקטאָר באַקומט דעם פּראָקסי־ענדפּונקט און אָפּציאָנעלע פּראָקסי־באַשטעטיקונגען. דער FTP־סערווער בלײַבט דער אַרגומענט פֿאַר connect, און login באַקומט דעם FTP־קאָנטע:
FTPHTTPClient ftp = new FTPHTTPClient(
"proxy.example.net", 8080, proxyUser, proxyPassword
);
try {
ftp.connect("ftp.example.net", 21);
if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
throw new IOException(ftp.getReplyString());
}
if (!ftp.login(ftpUser, ftpPassword)) {
throw new IOException(ftp.getReplyString());
}
ftp.enterLocalPassiveMode();
if (!ftp.setFileType(FTP.BINARY_FILE_TYPE)
|| !ftp.retrieveFile(remoteFile, output)) {
throw new IOException(ftp.getReplyString());
}
ftp.logout();
} finally {
if (ftp.isConnected()) {
ftp.disconnect();
}
}
דער איבערפֿיר־שטיק פֿאַרזעצט Commons Net'ס FTP־אימּפּאָרטן, java.io.IOException, באַשטעטיקונג־וואַריאַבלען וואָס די אַפּליקאַציע שטעלט צו, און אַן אויסגאַנג־שטראָם וואָס געהערט צום רופֿער. remoteFile איז דער געמיינטער טעקע־נאָמען אויף דער סערווער־זײַט. די אַפּליקאַציע מוז אויך פֿאַרמאַכן איר אויסגאַנג־שטראָם אין דער ריכטיקער צײַט.
שטעלט אָן דעם פּאַסיוון מאָדע נאָך פֿאַרבינדונג און פֿאַר אַ דאַטן־אָפּעראַציע. די אימּפּלעמענטאַציע פֿון FTPHTTPClient אָפּוואַרפֿט דאַטן־פֿאַרבינדונגען אין אַקטיוון מאָדע. אין פּאַסיוון מאָדע פֿאַרהאַנדלט זי דעם דאַטן־ענדפּונקט מיט FTP און עפֿנט נאָך אַ פֿאַרבינדונג צום HTTP־פּראָקסי, דערנאָך בעט זי אַ CONNECT־טונעל צו יענעם ענדפּונקט.
יענער צווייטער טונעל דערקלערט אַ פּראָסטע גרענעץ: פּראָקסי־דערלויבעניש פֿאַר דעם FTP־קאָנטראָל־פּאָרט איז ניט גענוג. די דערלויבטע צילן און פּאָרטן מוזן אַרײַננעמען דעם סערווערס פּאַסיווע דאַטן־ענדפּונקטן. אַ געראָטענע באַגריסונג און אַרײַנלאָגירן באַווײַזן בלויז אַז דער קאָנטראָל־וועג האָט געאַרבעט.
די אימּפּלעמענטאַציע שטעלט צו Basic־פּראָקסי־אויטענטיפֿיקאַציע ווען סיי דער פּראָקסי־באַניצער־נאָמען און סיי דאָס פּאַראָל זײַנען פֿאַראַן. דאָס איז אַנדערש פֿון FTP USER/PASS־אויסטויש. אַ פּראָקסי וואָס פֿאָדערט אַן אַנדער אויטענטיפֿיקאַציע־מעכאַניזם דאַרף אַ פּאַסיקן פֿאַרבינדער; דער קאָנסטרוקטאָר מאַכט ניט יעדע סכעמע צוטריטלעך.
Commons Net דאָקומענטירט די קלאַס ווי עקספּערימענטאַל, דעריבער אָפּשאַצט זי קעגן די פֿאָדערונגען פֿון דער אַפּליקאַציע און דעם פּראָקסי פֿאַר איר אָננעמען. זי איז אַן FTP־קליענט, ניט קיין FTPS־ אָדער SFTP־קליענט. פֿאַר FTPS מיט אַ פֿאַראַנען SOCKS־דינסט איז FTPSClient'ס סאָקעט־פּראָקסי־אינטערפֿייס אַ באַזונדערער קליענט־וועג. CONNECT שטעלט צו דעם וועג און פֿאַרשיפֿרט ניט אַליין FTP־באַשטעטיקונגען אָדער טעקע־אינהאַלט.
האַלט טעותן פֿאַרבונדן מיט דער סטאַדיע וואָס האָט זיי פֿאַרויסגערופֿן: אַ HTTP־אָפּוואַרף בעט דעם טונעל־אויפֿשטעל, אַ FTP־לאָגין־אָפּוואַרף, אָדער אַ FTP/דאַטן־איבערפֿיר־דורכפֿאַל. פֿאַרבייטן דאָס FTP־פּאַראָל קען ניט לייזן אַ פּראָקסי־פּאָליטיק וואָס אָפּוואַרפֿט דעם פּאַסיוון דאַטן־פּאָרט.