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.

Artikli relatati