Go ಸಂದರ್ಭವು SOCKS ಸಂಪರ್ಕ ಸ್ಥಾಪನೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲಿ
Go SOCKS ಮಾರ್ಗಕ್ಕಾಗಿ ರಫ್ತಾದ ContextDialer ಇಂಟರ್ಫೇಸ್ ಬಳಸಿ ಮತ್ತು ಸಂಪರ್ಕ ರದ್ದತಿಯನ್ನು ನಂತರದ ಅಪ್ಲಿಕೇಶನ್ ಸಂಚಾರದ ಗಡುವುಗಳಿಂದ ಪ್ರತ್ಯೇಕಿಸಿ.
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)
}ಇರುವ Go ನೆಟ್ವರ್ಕಿಂಗ್ ಪ್ಯಾಕೇಜ್ನಲ್ಲಿ context, errors, net, time ಮತ್ತು x/net/proxy ಆಮದುಗಳನ್ನು ಬಳಸಿ. nil ವಾದವು ಯಾವುದೇ SOCKS ರುಜುವಾತುಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದಿಲ್ಲ. ಅನುಮತಿಸಲಾದ ಸಾರ್ವಜನಿಕ-ಪ್ರಾಕ್ಸಿ ಮಾರ್ಗದಲ್ಲಿ ಸಾರ್ವಜನಿಕ ಗಮ್ಯಸ್ಥಾನಕ್ಕಾಗಿ SOCKS5 ಪ್ರಾಕ್ಸಿ ಪಟ್ಟಿ ಡಯಲರ್ನ ಅಂತಿಮ ಬಿಂದುವಿಗೆ ಅಭ್ಯರ್ಥಿಗಳನ್ನು ನೀಡುತ್ತದೆ.
ರಫ್ತಾದ proxy.ContextDialer ಸಮರ್ಥನೆಯು ಬೆಂಬಲವಿಲ್ಲದ ಅನುಷ್ಠಾನಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ವಿಫಲಗೊಳಿಸುತ್ತದೆ. ಆಂತರಿಕ ಡಯಲರ್ ಪ್ರಕಾರವನ್ನು ಹೆಸರಿಸುವ ಬದಲು ಅಥವಾ ಕರೆಗಾರನು ನಿರ್ವಹಿಸಲಾಗದ ನಿರ್ಬಂಧಿಸುವ goroutine ಪ್ರಾರಂಭಿಸುವ ಬದಲು ನಿಯೋಜಿಸಲಾದ ಅವಲಂಬನೆಯನ್ನು ಪರಿಶೀಲಿಸಿ.
ಸಂದರ್ಭವು ಸಂಪರ್ಕ ಸ್ಥಾಪನೆಯನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ. net.Conn ಹಿಂತಿರುಗಿಸಿದ ನಂತರ, ಸೂಕ್ತವಾದ ಓದು/ಬರಹ ಅಥವಾ ಹೆಚ್ಚಿನ ಹಂತದ ವಿನಂತಿ ಗಡುವುಗಳನ್ನು ಅನ್ವಯಿಸಿ. ಮೂಲ ಡಯಲರ್ನ ಸಂಪರ್ಕ ಕಾಲಾವಧಿ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ನ ಒಟ್ಟು ಬಜೆಟ್ ವಿಭಿನ್ನ ಮಿತಿಗಳು.
HTTP ಸಾಗಣೆ ಸಂಯೋಜನೆಗಾಗಿ ಅದರ ಸಾಮಾನ್ಯ TLS ಮತ್ತು HTTP ನಡವಳಿಕೆಯನ್ನು ಉಳಿಸಿಕೊಳ್ಳಿ. ಹಿಂತಿರುಗಿಸಿದ ಸಂದರ್ಭ-ಅರಿವಿನ SOCKS ಸ್ಟ್ರೀಮ್ ಸಾಗಣೆಗೆ ಹಸ್ತಾಂತರವಾಗಿದೆ, ಪ್ರತಿಕ್ರಿಯೆ ಅಲ್ಲ ಮತ್ತು ನಂತರದ ಎಲ್ಲಾ ಬೈಟ್ಗಳಿಗೆ ಜೀವಿತಾವಧಿ ನೀತಿ ಅಲ್ಲ.