قائم شدہ پراکسی اسٹریم کے ذریعے phpseclib 3 SFTP
قائم شدہ HTTP یا SOCKS ٹنل کے ذریعے SFTP شروع کرنے کے لیے phpseclib 3 کا عوامی اسٹریم کنسٹرکٹر استعمال کریں۔
phpseclib 3 کھلے اسٹریم وسیلے کو قبول کرتا ہے جہاں اس کا SSH/SFTP کنسٹرکٹر بصورت دیگر ہوسٹ نام وصول کرتا۔ پراکسی کے ذریعے جا رہے کنکشن کے لیے یہ عوامی حوالگی نقطہ ہے۔
پہلے، کنیکٹر اصل SFTP سرور اور اس کے پورٹ تک HTTP CONNECT یا SOCKS ٹنل قائم کرتا ہے۔ پھر قائم شدہ اسٹریم SFTP کو دیں:
use phpseclib3\Net\SFTP;
$sftp = new SFTP($tunnel);
$actualHostKey = $sftp->getServerPublicHostKey();
if ($actualHostKey === false
|| !hash_equals($expectedHostKey, $actualHostKey)) {
throw new RuntimeException('Unexpected SFTP server key');
}
if (!$sftp->login($sftpUser, $sftpCredential)) {
throw new RuntimeException('SFTP login failed');
}
$tunnel پہلے سے جڑی اسٹریم ہے، پراکسی URL نہیں۔ $expectedHostKey سرور کی قابلِ اعتماد عوامی کلید کی سٹرنگ ہے، جو ایپلیکیشن کے پروویژننگ عمل سے حاصل ہوتی ہے، phpseclib کے واپس کردہ فارمیٹ میں۔ لاگ ان کریڈنشل ایپلیکیشن کا منتخب کردہ معاون پاس ورڈ یا لوڈ شدہ کلید آبجیکٹ ہو سکتا ہے۔
تعین کریں کہ کنیکٹر کیا واپس کرتا ہے
اسٹریم کو پہلے ہی SFTP سرور کی طرف لے جانا چاہیے۔ HTTP CONNECT کے لیے اس کا مطلب ہے کہ پراکسی نے منزل قبول کر لی ہے اور مکمل پراکسی جوابی ہیڈر استعمال ہو چکے ہیں۔ SOCKS کے لیے متعلقہ گفت و شنید کامیابی سے مکمل ہونی چاہیے۔ اس حد سے آگے پہلے سے پڑھے گئے کوئی بھی SSH بائٹس SSH عمل درآمد کے لیے دستیاب رہنے چاہئیں۔
اس موقع پر phpseclib SSH تبادلہ کرتا ہے اور اسی اسٹریم پر SFTP شروع کرتا ہے۔ ایپلیکیشن اپنے معمول کے SFTP آپریشنز استعمال کر سکتی ہے۔ کنسٹرکٹر انٹرفیس ایسی ایپلیکیشن ذیلی کلاس سے بچتا ہے جس کا کام اندرونی ساکٹ فیلڈز کو بدلنا ہو۔