This commit is contained in:
ginuerzh 2015-05-12 05:32:11 +00:00
parent 9ef10b90a9
commit 9d8445735f
2 changed files with 19 additions and 12 deletions

View File

@ -140,13 +140,13 @@ func socks5Handle(conn net.Conn) {
req, err := gosocks5.ReadRequest(conn) req, err := gosocks5.ReadRequest(conn)
if err != nil { if err != nil {
//log.Println(err) log.Println(err)
return return
} }
switch req.Cmd { switch req.Cmd {
case gosocks5.CmdConnect: case gosocks5.CmdConnect:
//log.Println("connect", req.Addr.String()) log.Println("connect", req.Addr.String())
tconn, err := Connect(req.Addr.String(), Proxy) tconn, err := Connect(req.Addr.String(), Proxy)
if err != nil { if err != nil {
gosocks5.NewReply(gosocks5.HostUnreachable, nil).Write(conn) gosocks5.NewReply(gosocks5.HostUnreachable, nil).Write(conn)

23
ws.go
View File

@ -20,16 +20,20 @@ func NewWSConn(conn *websocket.Conn) *WSConn {
} }
func (conn *WSConn) Read(b []byte) (n int, err error) { func (conn *WSConn) Read(b []byte) (n int, err error) {
_, b, err = conn.ReadMessage() _, r, err := conn.NextReader()
n = len(b) if err != nil {
return return
}
return r.Read(b)
} }
func (conn *WSConn) Write(b []byte) (n int, err error) { func (conn *WSConn) Write(b []byte) (n int, err error) {
n = len(b) w, err := conn.NextWriter(websocket.BinaryMessage)
err = conn.WriteMessage(websocket.BinaryMessage, b) if err != nil {
return return
}
defer w.Close()
return w.Write(b)
} }
func (conn *WSConn) SetDeadline(t time.Time) error { func (conn *WSConn) SetDeadline(t time.Time) error {
@ -58,9 +62,12 @@ func (s *WSServer) handle(w http.ResponseWriter, r *http.Request) {
} }
defer conn.Close() defer conn.Close()
c := NewWSConn(conn) c := gosocks5.ServerConn(NewWSConn(conn), serverConfig)
if err := c.Handleshake(); err != nil {
socks5Handle(gosocks5.ServerConn(c, serverConfig)) log.Println(err)
return
}
socks5Handle(c)
} }
func (s *WSServer) ListenAndServe() error { func (s *WSServer) ListenAndServe() error {