内容简介:SOCKS Protocol Version 5 Library.Full TCP/UDP and IPv4/IPv6 support. Goals: KISS, less is more, small API, code is like the original protocol.
socks5
SOCKS Protocol Version 5 Library.
Full TCP/UDP and IPv4/IPv6 support. Goals: KISS, less is more, small API, code is like the original protocol.
Install
$ go get github.com/txthinking/socks5
Struct is like concept in protocol
- Negotiation:
-
type NegotiationRequest structfunc NewNegotiationRequest(methods []byte) func (r *NegotiationRequest) WriteTo(w *net.TCPConn) func NewNegotiationRequestFrom(r *net.TCPConn)
-
type NegotiationReply structfunc NewNegotiationReply(method byte) func (r *NegotiationReply) WriteTo(w *net.TCPConn) func NewNegotiationReplyFrom(r *net.TCPConn)
-
- User and password negotiation:
-
type UserPassNegotiationRequest structfunc NewUserPassNegotiationRequest(username []byte, password []byte) func (r *UserPassNegotiationRequest) WriteTo(w *net.TCPConn) func NewUserPassNegotiationRequestFrom(r *net.TCPConn)
-
type UserPassNegotiationReply structfunc NewUserPassNegotiationReply(status byte) func (r *UserPassNegotiationReply) WriteTo(w *net.TCPConn) func NewUserPassNegotiationReplyFrom(r *net.TCPConn)
-
- Request:
-
type Request structfunc NewRequest(cmd byte, atyp byte, dstaddr []byte, dstport []byte) func (r *Request) WriteTo(w *net.TCPConn) func NewRequestFrom(r *net.TCPConn)
-
- Reply:
-
type Reply structfunc NewReply(rep byte, atyp byte, bndaddr []byte, bndport []byte) func (r *Reply) WriteTo(w *net.TCPConn) func NewReplyFrom(r *net.TCPConn)
-
- Datagram:
-
type Datagram structfunc NewDatagram(atyp byte, dstaddr []byte, dstport []byte, data []byte) func NewDatagramFromBytes(bb []byte) (*Datagram, error) func (d *Datagram) Bytes() []byte
-
Advanced API
You can process client's request by yourself after reading *Request from client. Also, here is a advanced interfaces.
-
type Server struct -
type Handler interfaceTCPHandle(*Server, *net.TCPConn, *Request) error UDPHandle(*Server, *net.UDPAddr, *Datagram) error
This is example:
s, _ := NewClassicServer(addr, ip, username, password, tcpTimeout, tcpDeadline, udpDeadline, udpSessionTime) s.Run(Handler)
- If you want a standard socks5 server, pass in nil
- If you want to handle data by yourself, pass in a custom Handler
Users:
以上所述就是小编给大家介绍的《socks5 - SOCKS Protocol Version 5 Library in Go. Full TCP/UDP and IPv4/IPv6 support》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入Linux内核架构
Wolfgang Mauerer / 郭旭 / 人民邮电出版社 / 201005 / 149.00元
众所周知,Linux操作系统的源代码复杂、文档少,对程序员的要求高,要想看懂这些代码并不是一件容易事。本书结合内核版本2.6.24源代码中最关键的部分,深入讨论Linux内核的概念、结构和实现。具体包括进程管理和调度、虚拟内存、进程间通信、设备驱动程序、虚拟文件系统、网络、时间管理、数据同步等方面的内容。本书引导你阅读内核源代码,熟悉Linux所有的内在工作机理,充分展现Linux系统的魅力。 ......一起来看看 《深入Linux内核架构》 这本书的介绍吧!