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 क्रिया वापरू शकतो. कन्स्ट्रक्टर इंटरफेस अशा अनुप्रयोग उपवर्गाला टाळतो ज्याचे काम अंतर्गत सॉकेट फील्ड बदलणे असेल.

संबंधित लेख