From 63d50b815c7611e9917553852571b1bfa6efede2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=AF=BB=E6=AC=A2?= Date: Wed, 6 Dec 2023 10:16:52 +0800 Subject: [PATCH] =?UTF-8?q?:new:=20=E6=94=AF=E6=8C=81=E8=BD=AC=E5=8F=91?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=88=B0=E5=A4=96=E9=83=A8=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?(=E6=9A=82=E6=97=B6=E5=8F=AA=E6=94=AF=E6=8C=81socket)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.yaml | 9 +++++++++ config/wechat.go | 7 ++++--- tcpserver/forward.go | 25 +++++++++++++++++++++++++ tcpserver/handle.go | 6 ++++++ 4 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 tcpserver/forward.go diff --git a/config.yaml b/config.yaml index 1f2d4c2..a6dd372 100644 --- a/config.yaml +++ b/config.yaml @@ -6,6 +6,9 @@ wechat: autoSetCallback: false # 回调IP,如果是Docker运行,本参数必填,如果Docker修改了映射,格式为 ip:port callback: 10.0.0.51 + # 转发到其他地址 + forward: + - 10.0.0.247:4299 # 数据库 mysql: @@ -39,3 +42,9 @@ ai: baseUrl: https://sxxx # 人设 personality: 你的名字叫张三,你是一个百科机器人,你的爱好是看电影,你的性格是开朗的,你的专长是讲故事,你的梦想是当一名童话故事作家。你对政治没有一点儿兴趣,也不会讨论任何与政治相关的话题,你甚至可以拒绝回答这一类话题。 + +# 资源配置(这玩意儿是机器人那个机器上的smb文件夹) +# 暂时没用 - 2023-12-6 +resource: + localPath: /files + remotePath: D:\Share\ diff --git a/config/wechat.go b/config/wechat.go index e3054d2..7e6ec34 100644 --- a/config/wechat.go +++ b/config/wechat.go @@ -5,9 +5,10 @@ import "strings" // wxHelper // @description: 微信助手 type wechat struct { - Host string `json:"host" yaml:"host"` // 接口地址 - AutoSetCallback bool `json:"autoSetCallback" yaml:"autoSetCallback"` // 是否自动设置回调地址 - Callback string `json:"callback" yaml:"callback"` // 回调地址 + Host string `json:"host" yaml:"host"` // 接口地址 + AutoSetCallback bool `json:"autoSetCallback" yaml:"autoSetCallback"` // 是否自动设置回调地址 + Callback string `json:"callback" yaml:"callback"` // 回调地址 + Forward []string `json:"forward" yaml:"forward"` // 转发地址 } // Check diff --git a/tcpserver/forward.go b/tcpserver/forward.go new file mode 100644 index 0000000..111306c --- /dev/null +++ b/tcpserver/forward.go @@ -0,0 +1,25 @@ +package tcpserver + +import ( + "go-wechat/config" + "log" + "net" +) + +// forward +// @description: 转发消息 +func forward(msg []byte) { + // 使用socket转发消息 + for _, s := range config.Conf.Wechat.Forward { + conn, err := net.Dial("tcp", s) + if err != nil { + log.Printf("转发消息失败,错误信息: %v", err) + continue + } + _, err = conn.Write(msg) + if err != nil { + log.Printf("转发消息失败,错误信息: %v", err) + } + _ = conn.Close() + } +} diff --git a/tcpserver/handle.go b/tcpserver/handle.go index 38dbb36..a38943d 100644 --- a/tcpserver/handle.go +++ b/tcpserver/handle.go @@ -2,6 +2,7 @@ package tcpserver import ( "bytes" + "go-wechat/config" "go-wechat/handler" "io" "log" @@ -24,6 +25,11 @@ func process(conn net.Conn) { } log.Printf("[%s]数据长度: %d", conn.RemoteAddr(), buf.Len()) go handler.Parse(conn.RemoteAddr(), buf.Bytes()) + + // 转发到其他地方去 + if len(config.Conf.Wechat.Forward) > 0 { + go forward(buf.Bytes()) + } // 将接受到的数据返回给客户端 if _, err := conn.Write([]byte("200 OK")); err != nil { log.Printf("[%s]返回数据失败,错误信息: %v", conn.RemoteAddr(), err)