Asio bezonas SOCKS5-interŝanĝon post konektiĝo al la prokurilo
Traktu SOCKS5 kiel protokolan statomaŝinon super la Asio-ingo, kun plenaj legadoj, validigitaj respondoj kaj celloka TLS nur post sukcesa CONNECT.
Konekti Asio TCP-ingon al SOCKS5-aŭskultanto plenumas unu paŝon: la TCP-konekton al tiu aŭskultanto. Ĝi ne petas la prokurilon konektiĝi al la fina servilo. Por permesita testo kontraŭ publika celo, la listo de SOCKS5-prokuriloj proponas kandidatojn por tiu unua TCP-finpunkto; la konektilo tamen devas plenumi la interŝanĝon sube.
SOCKS5-konektilo poste devas plenumi la protokolan interŝanĝon:
- Sendu saluton de versio 5 listigantan la aŭtentikigajn metodojn, kiujn la kliento subtenas.
- Legu la elektitan metodon kaj plenumu ĝian aŭtentikigan interŝanĝon kiam necese.
- Sendu CONNECT kun la adrestipo, adreso kaj haveno de la celo en retbajta ordo.
- Legu la respondon, kontrolu ĝian version kaj la rezultokodon, kaj konsumu la plenan variablolongan ligitan adreson kaj havenon.
- Transdonu la starigitan fluon al la protokolo de la aplikaĵo.
Helpanto nomata socks5::async_proxy_connect apartenas al la SOCKS-efektivigo, kiu provizas tiun helpanton. Nomi ĝin apud boost::asio ne igas ĝin parto de la TCP-inga interfaco de Asio.
TCP-legadoj povas redoni nur parton de respondo. Kunmetu legadojn por la postulataj bajtaj nombroj, poste elektu la restan longon el la kampo de adrestipo. Ne supozu, ke ĉiu servila respondo havas la fiksan IPv4-aranĝon.
Por HTTPS, plenumu la TLS-manpremon de la celo post sukcesa SOCKS CONNECT, konservante la SNI kaj la kontrolon de gastigantnomo de la celo. Sukcesa prokurila respondo sola ne aŭtentikigas la retejon.
Konservu nuligon kaj templimojn tra la tuta agorda sinsekvo. Se la limtempo por starigi la TCP-konekton pasas, la postaj saluta, aŭtentikiga kaj CONNECT-interŝanĝoj restas senlimaj.