Asio jeħtieġ skambju SOCKS5 wara li jgħaqqad mal-proxy
Qis SOCKS5 bħala magna tal-istat tal-protokoll fuq is-socket ta' Asio, b'qari sħiħ, tweġibiet validati u TLS tad-destinazzjoni biss wara li CONNECT jirnexxi.
Li tgħaqqad socket TCP ta' Asio ma' semmiegħ SOCKS5 tlesti pass wieħed: il-konnessjoni TCP ma' dak is-semmiegħ. Ma titlobx lill-proxy biex jgħaqqad mas-server finali. Għal test permess fuq mira pubblika, il-lista tal-proxy SOCKS5 toffri kandidati għal dak l-ewwel punt tat-tarf TCP; il-konnettur xorta għandu jlesti l-iskambju hawn taħt.
Konnettur SOCKS5 imbagħad għandu jmexxi l-iskambju tal-protokoll:
- Ibgħat tislima tal-verżjoni 5 li telenka l-metodi ta' awtentikazzjoni li jappoġġja l-klijent.
- Aqra l-metodu magħżul u wettaq l-iskambju ta' awtentikazzjoni tiegħu meta jkun meħtieġ.
- Ibgħat CONNECT bit-tip tal-indirizz tad-destinazzjoni, l-indirizz u l-port fl-ordni tal-byte tan-netwerk.
- Aqra t-tweġiba, iċċekkja l-verżjoni tagħha u l-kodiċi tar-riżultat, u kkonsma l-indirizz marbut u l-port sħaħ ta' tul varjabbli.
- Għaddi l-fluss stabbilit lill-protokoll tal-applikazzjoni.
Helper imsejjaħ socks5::async_proxy_connect jappartjeni għall-implimentazzjoni SOCKS li tipprovdi dak il-helper. Li ssemmih ħdejn boost::asio ma jagħmilx parti mill-interface tas-socket TCP ta' Asio.
Il-qari TCP jista' jirritorna biss parti minn tweġiba. Ikkomponi qari għall-għadd ta' bytes meħtieġa, imbagħad agħżel it-tul li jifdal mill-qasam tat-tip tal-indirizz. Tassumix li kull tweġiba tas-server għandha t-tqassim fiss IPv4.
Għall-HTTPS, wettaq il-handshake TLS tad-destinazzjoni wara li SOCKS CONNECT jirnexxi, filwaqt li tippreserva l-SNI u l-verifika tal-isem tal-host tad-destinazzjoni. Tweġiba tal-proxy b'suċċess waħedha ma tawtentikax is-sit web.
Żomm il-kanċellazzjoni u l-iskadenzi matul is-sekwenza kollha tas-setup. Jekk jiskadi l-ħin għall-istabbiliment tal-konnessjoni TCP, l-iskambji ta' tislima, awtentikazzjoni u CONNECT li jiġu wara jibqgħu mingħajr limitu.