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-ийн socket-proxy интерфейс нь тусдаа клиентийн зам юм. CONNECT нь замыг өгдөг бөгөөд FTP-ийн нэвтрэх мэдээлэл эсвэл файлын агуулгыг өөрөө шифрлэдэггүй.

Алдааг үүссэн үе шаттай нь холбож байлгаарай: туннель тохируулах үеийн HTTP татгалзал, FTP-д нэвтрэхээс татгалзах, эсвэл FTP/өгөгдөл дамжуулалтын алдаа. FTP нууц үгийг солих нь идэвхгүй өгөгдлийн портыг татгалздаг прокси бодлогыг шийдэж чадахгүй.

Холбоотой нийтлэлүүд