Lasu Go-kuntekston nuligi la starigon de SOCKS-ligo
Uzu la elportitan interfacon ContextDialer por Go-SOCKS-vojo kaj distingi ligan nuligon disde templimoj sur posta aplikada trafiko.
func dialViaSOCKS(ctx context.Context, destination string) (net.Conn, error) {
dialer, err := proxy.SOCKS5(
"tcp",
"127.0.0.1:1080",
nil,
&net.Dialer{Timeout: 5 * time.Second},
)
if err != nil {
return nil, err
}
contextDialer, ok := dialer.(proxy.ContextDialer)
if !ok {
return nil, errors.New("SOCKS dialer lacks context support")
}
return contextDialer.DialContext(ctx, "tcp", destination)
}Ene de ekzistanta Go-retpakaĵo, uzu la importojn context, errors, net, time kaj x/net/proxy. La argumento nil elektas neniujn SOCKS-akreditaĵojn. Por publika celo sur permesita publika prokura vojo, la listo de SOCKS5-prokuroj proponas kandidatojn por la finpunkto de la dialer.
La elportita aserto proxy.ContextDialer igas nesubtenatajn efektivigojn eksplicite malsukcesi. Kontrolu la disfalditan dependaĵon anstataŭ nomi internan dialer-tipon aŭ lanĉi blokantan gorutinon, kiun la vokanto ne povas administri.
La kunteksto regas la starigon de la ligo. Post kiam net.Conn estas redonita, apliku taŭgajn legajn/skribajn aŭ pli altnivelajn petajn templimojn. La liga tempolimo de baza dialer kaj la totala buĝeto de aplikaĵo estas malsamaj limoj.
Por HTTP-transporta integriĝo, konservu ĝian normalan TLS- kaj HTTP-konduton. La redonita kuntekstokonscia SOCKS-fluo estas la transdono al la transporto, ne respondo nek vivdaŭra politiko por ĉiuj postaj bitokoj.