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 پاس ورڈ بدلنا ایسی پراکسی پالیسی حل نہیں کر سکتا جو غیر فعال ڈیٹا پورٹ کو مسترد کرتی ہو۔

متعلقہ مضامین