SFTP phpseclib 3 permezz ta' stream proxy stabbilit
Uża l-kostruttur pubbliku ta' stream ta' phpseclib 3 biex tibda SFTP permezz ta' tunnel HTTP jew SOCKS stabbilit.
phpseclib 3 jaċċetta riżorsa ta' stream miftuħa fejn il-kostruttur SSH/SFTP tiegħu altrimenti jirċievi isem tal-host. Dan huwa l-punt pubbliku ta' kunsinna għal konnessjoni li diġà qed tinġarr permezz ta' proxy.
L-ewwel, il-konnettur jistabbilixxi tunnel HTTP CONNECT jew SOCKS lejn is-server SFTP attwali u l-port tiegħu. Imbagħad għaddi l-stream stabbilit lis-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 huwa stream diġà konness, mhux URL tal-proxy. $expectedHostKey hija l-istring tal-kjavi pubblika fiduċjarja tas-server, miksub permezz tal-proċess ta' tħejjija tal-applikazzjoni, fil-format li jirritorna phpseclib. Il-kredenzjali tad-dħul tista' tkun il-password appoġġjata jew oġġett ta' kjavi mgħobbi li jagħżel l-applikazzjoni.
Iddefinixxi x'jirritorna l-konnettur
L-istream diġà jrid iwassal għas-server SFTP. Għal HTTP CONNECT, dan ifisser li l-proxy aċċetta d-destinazzjoni u li l-intestaturi tar-risposta sħaħ tal-proxy ġew ikkunsmati. Għal SOCKS, in-negozjati rilevanti jridu jkunu tlestew b'suċċess. Kwalunkwe byte SSH li diġà nqara lil hinn minn dak il-limitu għandu jibqa' disponibbli għall-implimentazzjoni SSH.
F'dak il-punt phpseclib jagħmel l-iskambju SSH u jibda SFTP fuq l-istess stream. L-applikazzjoni tista' tuża l-operazzjonijiet SFTP tas-soltu tagħha. L-interface tal-kostruttur tevita sottoklassi tal-applikazzjoni li x-xogħol tagħha jkun li tissostitwixxi oqsma interni tas-socket.