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 ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಬಳಸಬಹುದು. ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ಇಂಟರ್‌ಫೇಸ್ ಆಂತರಿಕ ಸಾಕೆಟ್ ಕ್ಷೇತ್ರಗಳನ್ನು ಬದಲಿಸುವ ಕೆಲಸವನ್ನು ಹೊಂದಿರುವ ಅಪ್ಲಿಕೇಶನ್ ಉಪವರ್ಗವನ್ನು ತಪ್ಪಿಸುತ್ತದೆ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು