ਸਥਾਪਿਤ ਪ੍ਰੌਕਸੀ ਸਟ੍ਰੀਮ ਰਾਹੀਂ 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 ਸੰਚਾਲਨ ਵਰਤ ਸਕਦੀ ਹੈ। ਕੰਸਟ੍ਰਕਟਰ ਇੰਟਰਫੇਸ ਅਜਿਹੇ ਐਪਲੀਕੇਸ਼ਨ ਉਪਵਰਗ ਤੋਂ ਬਚਦਾ ਹੈ ਜਿਸਦਾ ਕੰਮ ਅੰਦਰੂਨੀ ਸਾਕਟ ਫੀਲਡ ਬਦਲਣਾ ਹੋਵੇ।