phpseclib 3 pieņem atvērtu plūsmas resursu tur, kur tā SSH/SFTP konstruktors citādi saņemtu resursdatora nosaukumu. Tas ir publiskais nodošanas punkts savienojumam, kas jau tiek pārvadāts caur starpniekserveri.

Vispirms savienotājs izveido HTTP CONNECT vai SOCKS tuneli uz faktisko SFTP serveri un tā portu. Pēc tam izveidoto plūsmu nodod 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 ir jau savienota plūsma, nevis starpniekservera URL. $expectedHostKey ir servera uzticamā publiskās atslēgas virkne, kas iegūta lietotnes sagatavošanas procesā, tādā formātā, kādu atgriež phpseclib. Pieslēgšanās akreditācijas dati var būt atbalstītā parole vai lietotnes izvēlēts ielādēts atslēgas objekts.

Definējiet, ko savienotājs atgriež

Plūsmai jau jāved uz SFTP serveri. HTTP CONNECT gadījumā tas nozīmē, ka starpniekserveris ir pieņēmis galamērķi un pilnīgas starpniekservera atbildes galvenes ir patērētas. SOCKS gadījumā attiecīgajām sarunām jābūt veiksmīgi pabeigtām. Visiem SSH baitiem, kas jau nolasīti aiz šīs robežas, jāpaliek pieejamiem SSH ieviešanai.

Šajā brīdī phpseclib veic SSH apmaiņu un sāk SFTP tajā pašā plūsmā. Lietotne var izmantot ierastās SFTP darbības. Konstruktora saskarne izvairās no lietotnes apakšklases, kuras uzdevums būtu aizstāt iekšējos ligzdas laukus.

Saistītie raksti