Apache Commons Net-ൽ HTTP CONNECT പ്രോക്സിയിലൂടെ FTP-ക്കായി FTPHTTPClient ഉണ്ട്. അതിന്റെ ഉപയോഗപ്രദമായ സവിശേഷത 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 ക്ലയന്റല്ല. SOCKS സേവനം ലഭ്യമായ FTPS-ന് FTPSClient-ന്റെ സോക്കറ്റ്-പ്രോക്സി ഇന്റർഫേസ് വേറിട്ട ക്ലയന്റ് പാതയാണ്. CONNECT പാത നൽകുന്നു, FTP ക്രെഡൻഷ്യലുകളോ ഫയൽ ഉള്ളടക്കമോ സ്വയം എൻക്രിപ്റ്റ് ചെയ്യുന്നില്ല.

പിശകുകൾ അവ സൃഷ്ടിച്ച ഘട്ടവുമായി ബന്ധിപ്പിച്ച് നിർത്തുക: ടണൽ ക്രമീകരണത്തിനിടയിലുള്ള HTTP നിരസിക്കൽ, FTP ലോഗിൻ വിസമ്മതം, അല്ലെങ്കിൽ FTP/ഡാറ്റ കൈമാറ്റ പരാജയം. FTP പാസ്വേഡ് മാറ്റുന്നത് പാസീവ് ഡാറ്റ പോർട്ട് നിരസിക്കുന്ന പ്രോക്സി നയം പരിഹരിക്കാൻ കഴിയില്ല.

അനുബന്ധ ലേഖനങ്ങൾ