SFTP ຂອງ phpseclib 3 ຜ່ານ stream proxy ທີ່ສ້າງແລ້ວ
ໃຊ້ constructor stream ສາທາລະນະຂອງ phpseclib 3 ເພື່ອເລີ່ມ SFTP ຜ່ານ tunnel HTTP ຫຼື SOCKS ທີ່ສ້າງແລ້ວ.
phpseclib 3 ຮັບ resource stream ທີ່ເປີດຢູ່ບ່ອນທີ່ constructor SSH/SFTP ຂອງມັນຈະໄດ້ຮັບຊື່ host. ນີ້ແມ່ນຈຸດສົ່ງຕໍ່ສາທາລະນະສຳລັບການເຊື່ອມຕໍ່ທີ່ຖືກຂົນສົ່ງຜ່ານ proxy ແລ້ວ.
ທຳອິດ, connector ສ້າງ tunnel HTTP CONNECT ຫຼື SOCKS ໄປຫາເຊີບເວີ SFTP ຕົວຈິງ ແລະ port ຂອງມັນ. ຈາກນັ້ນສົ່ງ stream ທີ່ສ້າງແລ້ວໄປຫາ 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 ແມ່ນ stream ທີ່ເຊື່ອມຕໍ່ແລ້ວ, ບໍ່ແມ່ນ URL ຂອງ proxy. $expectedHostKey ແມ່ນ string ກະແຈສາທາລະນະທີ່ໄວ້ໃຈຂອງເຊີບເວີ, ໄດ້ມາຜ່ານຂະບວນການກະກຽມຂອງແອັບພລິເຄຊັນ, ໃນຮູບແບບທີ່ phpseclib ສົ່ງຄືນ. ຂໍ້ມູນເຂົ້າສູ່ລະບົບອາດເປັນລະຫັດຜ່ານທີ່ຮອງຮັບ ຫຼື ວັດຖຸກະແຈທີ່ໂຫລດແລ້ວທີ່ແອັບພລິເຄຊັນເລືອກ.
ກຳນົດສິ່ງທີ່ connector ສົ່ງຄືນ
stream ຕ້ອງນຳໄປຫາເຊີບເວີ SFTP ແລ້ວ. ສຳລັບ HTTP CONNECT, ໝາຍຄວາມວ່າ proxy ຍອມຮັບປາຍທາງແລ້ວ ແລະ ຫົວຂໍ້ຕອບສະໜອງຂອງ proxy ທັງໝົດຖືກໃຊ້ໝົດແລ້ວ. ສຳລັບ SOCKS, ການເຈລະຈາທີ່ກ່ຽວຂ້ອງຕ້ອງສຳເລັດແລ້ວ. SSH byte ໃດໆທີ່ອ່ານໄປແລ້ວເກີນຂອບເຂດນັ້ນຕ້ອງຍັງໃຊ້ໄດ້ສຳລັບການຈັດຕັ້ງ SSH.
ໃນຈຸດນັ້ນ phpseclib ເຮັດການແລກປ່ຽນ SSH ແລະ ເລີ່ມ SFTP ເທິງ stream ດຽວກັນ. ແອັບພລິເຄຊັນສາມາດໃຊ້ການດຳເນີນການ SFTP ປົກກະຕິຂອງມັນ. ອິນເຕີເຟສຂອງ constructor ຫຼີກລ້ຽງ subclass ຂອງແອັບພລິເຄຊັນທີ່ໜ້າທີ່ແມ່ນການປ່ຽນແທນຊ່ອງ socket ພາຍໃນ.