From c8b2e99003ecd2ed4ccb650e258636504a005b6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=B9=BF?= Date: Fri, 15 Nov 2024 16:49:01 +0800 Subject: [PATCH] complete code, need debug --- .vscode/launch.json | 24 ++++ client/dataconn.go | 169 +++++++++++++++++++++++++++++ client/main.go | 100 +++++++++++++++++ client/main_test.go | 15 +++ go.mod | 1 + go.sum | 6 + server/handleAgent.go | 8 +- server/handleClient.go | 4 +- server/handlePipe.go | 11 +- server/main.go | 2 +- server/session.go | 2 +- tunnelagent/main.go | 59 ++++++++++ tunnelclient/main.go | 87 +++++++++++++++ tunnelserver/__debug_bin2913043442 | Bin 0 -> 9724003 bytes util/const.go | 10 ++ util/entity.go | 5 + 16 files changed, 492 insertions(+), 11 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 client/dataconn.go create mode 100644 client/main.go create mode 100644 client/main_test.go create mode 100644 tunnelagent/main.go create mode 100644 tunnelclient/main.go create mode 100755 tunnelserver/__debug_bin2913043442 diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..a929be1 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + // 使用 IntelliSense 了解相关属性。 + // 悬停以查看现有属性的描述。 + // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch Package client", + "type": "go", + "request": "launch", + "mode": "auto", + "program": "${workspaceFolder}/tunnelclient", + "args":["--target-session", "HNCZhU8G86HSfTZv", "--local-port", "2222"] + }, + { + "name": "Launch Package", + "type": "go", + "request": "launch", + "mode": "auto", + "program": "${workspaceFolder}/tunnelserver/main.go" + } + + ] +} \ No newline at end of file diff --git a/client/dataconn.go b/client/dataconn.go new file mode 100644 index 0000000..538b83f --- /dev/null +++ b/client/dataconn.go @@ -0,0 +1,169 @@ +package client + +import ( + "bytes" + "encoding/binary" + "io" + "log" + "net" + "strconv" + + "git.pyer.club/kingecg/goemitter" + "git.pyer.club/kingecg/gotunnelserver/util" + ws "github.com/gorilla/websocket" +) + +type DataEndPoint struct { + Host string + Port int + + cmdSession *CommandClient + dataSession string + wsConn *ws.Conn + conns map[int32]*DataConn +} + +func (d *DataEndPoint) Close() { + d.wsConn.Close() +} + +func (d *DataEndPoint) onDataConnClose(conn *DataConn) { + delete(d.conns, conn.id) +} + +func (d *DataEndPoint) Connect() { + conn, _, err := ws.DefaultDialer.Dial(d.cmdSession.Address+"/ws/pipe/"+d.dataSession, map[string][]string{ + "Authorization": {d.cmdSession.makeAuthHeader()}, + "Session": {d.cmdSession.SessionId}, + }) + if err != nil { + panic(err) + } + d.wsConn = conn + for { + // d.wsConn.SetReadDeadline(time.Now().Add(time.Minute * 5)) + _, data, err := d.wsConn.ReadMessage() + if err != nil { + break + } + var packet Packet + err = packet.BinaryUnmarshaler(data) + if err != nil { + continue + } + conn, ok := d.conns[packet.id] + if !ok { + tcpconn, err := net.Dial("tcp", d.Host+":"+strconv.Itoa(d.Port)) + if err != nil { + log.Println(err) + continue + } + conn = NewDataConnection(packet.id, &tcpconn, d) + conn.Start() + conn.Once("close", func(args ...interface{}) { + d.onDataConnClose(conn) + }) + } + + conn.Write(packet) + } +} + +func (d *DataEndPoint) Listen() { + // listen and accept connection at port + listener, err := net.Listen("tcp", d.Host+":"+strconv.Itoa(d.Port)) + if err != nil { + log.Println(err, d) + panic(err) + } + for { + conn, err := listener.Accept() + if err != nil { + panic(err) + } + dconn := NewDataConnection(0, &conn, d) + d.conns[dconn.id] = dconn + dconn.Start() + dconn.Once("close", func(args ...interface{}) { + d.onDataConnClose(dconn) + }) + } +} + +func (d *DataEndPoint) Write(p []byte) (n int, err error) { + return len(p), d.wsConn.WriteMessage(ws.BinaryMessage, p) +} + +func NewDataEndPoint(cmdSession *CommandClient, dataSession string) *DataEndPoint { + return &DataEndPoint{ + cmdSession: cmdSession, + dataSession: dataSession, + conns: make(map[int32]*DataConn), + } +} + +type DataConn struct { + id int32 + conn *net.Conn + out io.Writer + *goemitter.EventEmitter +} + +type Packet struct { + id int32 + data []byte +} + +func (p *Packet) MarshalBinary() ([]byte, error) { + buf := new(bytes.Buffer) + binary.Write(buf, binary.LittleEndian, p) + return buf.Bytes(), nil +} + +func (p *Packet) BinaryUnmarshaler(data []byte) error { + buf := bytes.NewReader(data) + return binary.Read(buf, binary.LittleEndian, p) +} +func (d *DataConn) Close() { + (*d.conn).Close() +} + +func (d *DataConn) Write(p Packet) (n int, err error) { + return (*d.conn).Write(p.data) +} + +func (d *DataConn) Start() { + go func() { + for { + buf := make([]byte, 1024) + n, err := (*d.conn).Read(buf) + if err != nil { + // panic(err) + break + } + packet := Packet{ + id: d.id, + data: buf[:n], + } + data, err := packet.MarshalBinary() + if err != nil { + continue + } + d.out.Write(data) + } + d.Emit("close") + }() + +} +func NewDataConnection(id int32, con *net.Conn, writer io.Writer) *DataConn { + cid := id + if cid == 0 { + cid = util.GenRandomInt() + } + return &DataConn{ + id: cid, + conn: con, + out: writer, + EventEmitter: goemitter.NewEmitter(), + } +} diff --git a/client/main.go b/client/main.go new file mode 100644 index 0000000..a899025 --- /dev/null +++ b/client/main.go @@ -0,0 +1,100 @@ +package client + +import ( + "encoding/base64" + "encoding/json" + "log" + "time" + + "git.pyer.club/kingecg/goemitter" + "git.pyer.club/kingecg/gotunnelserver/server" + "git.pyer.club/kingecg/gotunnelserver/util" + ws "github.com/gorilla/websocket" +) + +type ClientConfig struct { + Username string + Salt string + Address string +} + +type CommandClient struct { + *ws.Conn + *goemitter.EventEmitter + *ClientConfig + path string + SessionId string +} + +func (c *CommandClient) Close() { + if c.Conn != nil { + c.Conn.Close() + c.Conn = nil + } +} + +func (c *CommandClient) Send(cmd *server.Command) (err error) { + return c.WriteJSON(cmd) +} +func (c *CommandClient) Start() { + defer c.Close() + // cpath:="/client" + // if c.IsAgent { + // cpath = "/agent" + // } + authHeader := c.makeAuthHeader() + conn, _, err := ws.DefaultDialer.Dial(c.Address+c.path, map[string][]string{ + "Authorization": {authHeader}, + }) + if err != nil { + panic(err) + } + c.Conn = conn + c.On(util.CmdTypeMap[util.NewSession], func(args ...interface{}) { + playload, _ := args[0].(map[string]string) + sessionId := playload["sessionId"] + log.Println("new session:", sessionId) + c.SessionId = sessionId + }) + for { + var cmd server.Command + err := c.ReadJSON(&cmd) + if err != nil { + return + } + eventLabel := util.CmdTypeMap[cmd.Type] + log.Println("cmd:", cmd.Type, eventLabel) + c.Emit(eventLabel, cmd.Payload) + } +} + +func (c *CommandClient) makeAuthHeader() string { + a := &util.AuthEntity{ + Entity: util.Entity{ + Username: c.Username, + }, + Time: time.Now().Unix(), + } + a.Authtoken = util.GenAuthToken(a, c.Salt) + str, err := json.Marshal(a) + if err != nil { + panic(err) + } + return base64.StdEncoding.EncodeToString(str) +} + +func NewClient(conf *ClientConfig) *CommandClient { + return &CommandClient{ + ClientConfig: conf, + EventEmitter: goemitter.NewEmitter(), + path: "/ws/client", + } +} + +func NewAgent(conf *ClientConfig) *CommandClient { + return &CommandClient{ + ClientConfig: conf, + EventEmitter: goemitter.NewEmitter(), + path: "/ws/agent", + } +} diff --git a/client/main_test.go b/client/main_test.go new file mode 100644 index 0000000..e2932d9 --- /dev/null +++ b/client/main_test.go @@ -0,0 +1,15 @@ +package client + +import ( + "testing" +) + +func TestClient(t *testing.T) { + clientConfig := &ClientConfig{ + Address: "ws://localhost:8080", + Salt: "", + Username: "test", + } + client := NewClient(clientConfig) + client.Start() +} diff --git a/go.mod b/go.mod index f3213d0..b05e4a3 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module git.pyer.club/kingecg/gotunnelserver go 1.23.1 require ( + git.pyer.club/kingecg/command v0.0.0-20241115071005-9f26d1cf2992 // indirect git.pyer.club/kingecg/goemitter v0.0.0-20240919084107-533c3d1be082 // indirect git.pyer.club/kingecg/gologger v1.0.5 // indirect github.com/gorilla/websocket v1.5.3 // indirect diff --git a/go.sum b/go.sum index 68276cd..261e36e 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,9 @@ +git.pyer.club/kingecg/command v0.0.0-20241024110012-525a2ad9662d h1:CIcY8L5FcGy1uO+GvdMeidjdfYSxwTEEEvt3WXBOQAU= +git.pyer.club/kingecg/command v0.0.0-20241024110012-525a2ad9662d/go.mod h1:lnSzW19xOIlUwlewxHH0R4SIDO+a4++USjmMjo/jZB0= +git.pyer.club/kingecg/command v0.0.0-20241115051719-6fd5111300dc h1:PVvfibld+xRlWIbBlprF0AaIuTpF5QeY3CqthCQP8lg= +git.pyer.club/kingecg/command v0.0.0-20241115051719-6fd5111300dc/go.mod h1:7j+/UU5URp7UkTbNtYDvZY3cFywuTRys1TmP3HbNX3A= +git.pyer.club/kingecg/command v0.0.0-20241115071005-9f26d1cf2992 h1:QurLvSlNSU2TjTVe9h9+N9QVZEvSXuz9POebExqhfOo= +git.pyer.club/kingecg/command v0.0.0-20241115071005-9f26d1cf2992/go.mod h1:7j+/UU5URp7UkTbNtYDvZY3cFywuTRys1TmP3HbNX3A= git.pyer.club/kingecg/goemitter v0.0.0-20240919084107-533c3d1be082 h1:U7Jbet3zObT2qPJ2g408Z9OUvR6phQyHOoHeidM5zUg= git.pyer.club/kingecg/goemitter v0.0.0-20240919084107-533c3d1be082/go.mod h1:2jbknDqoWH41M3MQ9pQZDKBiNtDmNgPcM3XfkE9YkbQ= git.pyer.club/kingecg/gologger v1.0.5 h1:L/N/bleGHhEiaBYBf9U1z2ni0HfhaU71pk8ik/D11oo= diff --git a/server/handleAgent.go b/server/handleAgent.go index 4c0b8f6..c9f0e1e 100644 --- a/server/handleAgent.go +++ b/server/handleAgent.go @@ -3,7 +3,6 @@ package server import ( "net/http" - "git.pyer.club/kingecg/gotunnelserver/util" "github.com/gorilla/websocket" ) @@ -11,11 +10,6 @@ func (s *Server) HandleAgent(c *websocket.Conn, r *http.Request) { agentSession := NewSession(c) agentSession.Start() s.agentSession[agentSession.Id] = agentSession - command := &Command{ - Type: util.NewSession, - Payload: map[string]string{ - "id": agentSession.Id, - }, - } + command := NcmdSession(agentSession.Id) agentSession.Send(command) } diff --git a/server/handleClient.go b/server/handleClient.go index 5be212e..24f0be5 100644 --- a/server/handleClient.go +++ b/server/handleClient.go @@ -25,7 +25,9 @@ func (s *Server) HandleClient(conn *websocket.Conn, r *http.Request) { clientSession.Send(NewErrorResponse("target session not found", command)) return } - command := NcmdConnectionInited(clientSession.Id) + spipe := NewPipe(clientSession.Id, targetSessionId) + s.pipes[spipe.Id] = spipe + command := NcmdConnectionInited(spipe.Id) for k, v := range orgPlayload { command.Payload[k] = v diff --git a/server/handlePipe.go b/server/handlePipe.go index 9c8cf4e..de8be09 100644 --- a/server/handlePipe.go +++ b/server/handlePipe.go @@ -3,6 +3,7 @@ package server import ( "net/http" + "git.pyer.club/kingecg/gotunnelserver/util" "github.com/gorilla/websocket" ) @@ -23,6 +24,14 @@ func (p *Pipe) Start() { p.src.Close() p.dst.Close() } +func NewPipe(src, dst string) *Pipe { + return &Pipe{ + Id: util.GenRandomstring(16), + Src: src, + Dst: dst, + } + +} func (p *Pipe) forward(src, dst *websocket.Conn) { for { @@ -75,7 +84,7 @@ func (s *Server) HandlePipe(conn *websocket.Conn, r *http.Request) { } if pipe.src != nil && pipe.dst != nil { - pipe.Start() + go pipe.Start() clientCmdSession := s.findSession(pipe.Src) clientCmdSession.Send(NcmdConnectionReady(pipe.Id)) // info src endpoint ready and can setup proxy listener } diff --git a/server/main.go b/server/main.go index 4ff4a49..262f663 100644 --- a/server/main.go +++ b/server/main.go @@ -110,7 +110,7 @@ func (s *Server) registHandler() { s.mux = http.NewServeMux() } s.mux.HandleFunc("/hello", s.HandleHello) - s.mux.HandleFunc("/ws", s.HandleWs) + s.mux.HandleFunc("/ws/", s.HandleWs) } func (s *Server) Start() { addr := s.Config.Host + ":" + s.Config.Port diff --git a/server/session.go b/server/session.go index 219cc38..e9c529d 100644 --- a/server/session.go +++ b/server/session.go @@ -92,7 +92,7 @@ func NewErrorResponse(err string, cmd *Command) *Command { } func NcmdConnectionInited(sessionId string) *Command { - return NewCommand(util.ConnectionReady, map[string]string{"sessionId": sessionId}) + return NewCommand(util.ConnectInited, map[string]string{"sessionId": sessionId}) } func NcmdConnectionReady(sessionId string) *Command { diff --git a/tunnelagent/main.go b/tunnelagent/main.go new file mode 100644 index 0000000..db3c2a4 --- /dev/null +++ b/tunnelagent/main.go @@ -0,0 +1,59 @@ +package main + +import ( + "log" + "os" + "strconv" + + "git.pyer.club/kingecg/command" + "git.pyer.club/kingecg/gotunnelserver/client" + "git.pyer.club/kingecg/gotunnelserver/util" +) + +type TunnelAgent struct { + Username string `flag_default:"tcclient" flag_usage:"username for tunnel server"` + Salt string `flag_default:"" flag_usage:"salt for tunnel server"` + Address string `flag_default:"ws://127.0.0.1:8080" flag_usage:"address for tunnel server"` +} + +var ( + cmdClient *client.CommandClient + dataEp *client.DataEndPoint +) + +func main() { + cargs := new(TunnelAgent) + v, _ := command.NewFVSet(cargs) + err := command.Parse(os.Args[1:], v) + if err != nil { + os.Exit(0) + return + } + clientConfig := &client.ClientConfig{ + Username: cargs.Username, + Salt: cargs.Salt, + Address: cargs.Address, + } + cmdClient = client.NewAgent(clientConfig) + cmdClient.On(util.CmdTypeMap[util.ConnectInited], func(args ...interface{}) { + playload, _ := args[0].(map[string]string) + sessionId := playload["sessionId"] + dataEp = client.NewDataEndPoint(cmdClient, sessionId) + dataEp.Host = playload["host"] + dataEp.Port, _ = strconv.Atoi(playload["port"]) + log.Println("connect inited:", sessionId, dataEp.Host, dataEp.Port) + go dataEp.Connect() + }) + cmdClient.On(util.CmdTypeMap[util.ErrorCmd], func(args ...interface{}) { + playload, _ := args[0].(map[string]string) + log.Println("error:", playload["error"]) + os.Exit(1) + }) + defer func() { + if r := recover(); r != nil { + log.Println(r) + return + } + }() + cmdClient.Start() +} diff --git a/tunnelclient/main.go b/tunnelclient/main.go new file mode 100644 index 0000000..379efc1 --- /dev/null +++ b/tunnelclient/main.go @@ -0,0 +1,87 @@ +package main + +import ( + "log" + "os" + "strconv" + + "git.pyer.club/kingecg/command" + "git.pyer.club/kingecg/gotunnelserver/client" + "git.pyer.club/kingecg/gotunnelserver/server" + "git.pyer.club/kingecg/gotunnelserver/util" +) + +type TunnelClient struct { + TargetSession string `flag_default:"" flag_usage:"target session id"` + Username string `flag_default:"tcclient" flag_usage:"username for tunnel server"` + Salt string `flag_default:"" flag_usage:"salt for tunnel server"` + Address string `flag_default:"ws://127.0.0.1:8080" flag_usage:"address for tunnel server"` + Host string `flag_default:"127.0.0.1" flag_usage:"host to proxy to"` + Port int `flag_default:"22" flag_usage:"port to proxy to"` + LocalPort int `flag_default:"0" flag_usage:"local port to accept connection from"` + LocalHost string `flag_default:"127.0.0.1" flag_usage:"local host to accept connection from"` +} + +var ( + cmdClient *client.CommandClient + dataEp *client.DataEndPoint +) + +func main() { + cargs := new(TunnelClient) + v, _ := command.NewFVSet(cargs) + err := command.Parse(os.Args[1:], v) + if err != nil { + os.Exit(0) + return + } + + if cargs.TargetSession == "" { + log.Fatal("Must set target session to connect to") + return + } + + clientConfig := &client.ClientConfig{ + Username: cargs.Username, + Salt: cargs.Salt, + Address: cargs.Address, + } + cmdClient = client.NewClient(clientConfig) + cmdClient.Once(util.CmdTypeMap[util.ConnectInited], func(args ...interface{}) { + playload, _ := args[0].(map[string]string) + sessionId := playload["sessionId"] + dataEp = client.NewDataEndPoint(cmdClient, sessionId) + dataEp.Host = cargs.LocalHost + dataEp.Port = cargs.LocalPort + go dataEp.Connect() + }) + cmdClient.On(util.CmdTypeMap[util.NewSession], func(args ...interface{}) { + cmdClient.Send(&server.Command{ + Type: util.NewConnection, + Payload: map[string]string{ + "target": cargs.TargetSession, + "host": cargs.Host, + "port": strconv.Itoa(cargs.Port), + }, + }) + }) + + cmdClient.Once(util.CmdTypeMap[util.ConnectionReady], func(args ...interface{}) { + go dataEp.Listen() + log.Println("connection ready") + }) + + cmdClient.On(util.CmdTypeMap[util.ErrorCmd], func(args ...interface{}) { + playload, _ := args[0].(map[string]string) + log.Println("error:", playload["error"]) + os.Exit(1) + }) + + defer func() { + if r := recover(); r != nil { + log.Println(r) + return + } + }() + cmdClient.Start() +} diff --git a/tunnelserver/__debug_bin2913043442 b/tunnelserver/__debug_bin2913043442 new file mode 100755 index 0000000000000000000000000000000000000000..eb894c4f3628b37569ee8479f178697bf576f7a5 GIT binary patch literal 9724003 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 z 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