From e57637c677374f4e21a5ab3dfeb5d4da22e81b27 Mon Sep 17 00:00:00 2001 From: dustoair <107600816+dustoair@users.noreply.github.com> Date: Mon, 12 Sep 2022 20:43:32 +0800 Subject: [PATCH] cmdExec fillter --- global/cmds.go | 5 ++ global/var.go | 13 +++++ global/wechat.go | 12 ----- handle/replyText.go | 114 ++++++++++++++++++++++++++++++-------------- 4 files changed, 97 insertions(+), 47 deletions(-) delete mode 100644 global/wechat.go diff --git a/global/cmds.go b/global/cmds.go index 71da5b1..7b28f1e 100644 --- a/global/cmds.go +++ b/global/cmds.go @@ -8,4 +8,9 @@ var CMDList = []string{ "last", "删除图片", "删除文本", + "eth", + "btc", + "虚拟货币", + "gold", + "黄金", } diff --git a/global/var.go b/global/var.go index 21ffe11..6e1cb33 100644 --- a/global/var.go +++ b/global/var.go @@ -6,6 +6,7 @@ import ( "github.com/jinzhu/gorm" ) +// 单例模式 var ( CTX = context.Background() RedisDb *redis.Client @@ -15,3 +16,15 @@ var ( EnableAiReply = true EnableCmdExec = true ) + +// 微信变量 +var ( + WxCrypt *WXBizMsgCrypt + WechatCorpId string + WechatToken string //微信回调的token + WechatEncodingAesKey string + WechatSendSecret string + WechatSendAid string + WechatAccessToken string //主动发消息的token + WechatImagePath string +) diff --git a/global/wechat.go b/global/wechat.go deleted file mode 100644 index b6abc88..0000000 --- a/global/wechat.go +++ /dev/null @@ -1,12 +0,0 @@ -package global - -var ( - WxCrypt *WXBizMsgCrypt - WechatCorpId string - WechatToken string //微信回调的token - WechatEncodingAesKey string - WechatSendSecret string - WechatSendAid string - WechatAccessToken string //主动发消息的token - WechatImagePath string -) diff --git a/handle/replyText.go b/handle/replyText.go index b266e6e..100024f 100644 --- a/handle/replyText.go +++ b/handle/replyText.go @@ -9,46 +9,90 @@ import ( "net/http" ) +// cmdExec 根据白名单命令来执行 +func cmdExec(msgContent MsgContent) (cmdString string) { + switch msgContent.Content { + case "last": + cmdString = global.HistoryCmds[len(global.HistoryCmds)-1] + case "history": + cmdString = utils.SlicePrint(global.HistoryCmds) + case "删除图片": + //通过文本消息删除上一张图片 + lastImg := GetLastWechatLog(msgContent.FromUsername, "image") + err := utils.DeleteFile(lastImg.Content) + if err != nil { + log.Println("删除图片失败: ", lastImg.Content) + return + } else { + log.Println("图片已删除: ", lastImg.Content) + return + } + case "删除文本": + //通过文本消息删除上一条文本消息 + lastText := GetLastWechatLog(msgContent.FromUsername, "text") + textMd5 := utils.Md5String(lastText.Content) + go RecordWechatBlockWords(lastText.Content, textMd5, msgContent.FromUsername) + return + case "eth", "btc", "虚拟货币": + cmdString = "cmdString" + case "gold", "黄金": + cmdString = "cmdString" + default: + cmdString = msgContent.Content + } + global.HistoryCmds = append(global.HistoryCmds, msgContent.Content) + replyContent, err := utils.CMDShellTrick(cmdString) + if err != nil { + replyContent = "/:,@!执行失败:\n" + msgContent.Content + } else { + replyContent = "/::D执行成功:\n" + replyContent + //aiAnswer = "执行命令:" + msgContent.Content + } + + return cmdString +} func replyText(msgContent MsgContent, timestamp, nonce string, w http.ResponseWriter) { var replyContent string if global.EnableCmdExec && utils.SliceContain(global.CMDList, msgContent.Content) && msgContent.FromUsername == "QiaoYang" { //开启了命令执行功能,并且消息内容包含了命令 log.Println("收到命令消息") - var cmdString string - if msgContent.Content == "last" { - cmdString = global.HistoryCmds[len(global.HistoryCmds)-1] - } else if msgContent.Content == "history" { - cmdString = utils.SlicePrint(global.HistoryCmds) - } else if msgContent.Content == "删除图片" { - //通过文本消息删除上一张图片 - lastImg := GetLastWechatLog(msgContent.FromUsername, "image") - err := utils.DeleteFile(lastImg.Content) - if err != nil { - log.Println("删除图片失败: ", lastImg.Content) - return - } else { - log.Println("图片已删除: ", lastImg.Content) - return - } - - } else if msgContent.Content == "删除文本" { - //通过文本消息删除上一条文本消息 - lastText := GetLastWechatLog(msgContent.FromUsername, "text") - textMd5 := utils.Md5String(lastText.Content) - go RecordWechatBlockWords(lastText.Content, textMd5, msgContent.FromUsername) - return - - } else { - cmdString = msgContent.Content - } - global.HistoryCmds = append(global.HistoryCmds, msgContent.Content) - replyContent, err := utils.CMDShellTrick(cmdString) - if err != nil { - replyContent = "/:,@!执行失败:\n" + msgContent.Content - } else { - replyContent = "/::D执行成功:\n" + replyContent - //aiAnswer = "执行命令:" + msgContent.Content - } + cmdExec(msgContent) + //cmdString := cmdExec(msgContent) + //var cmdString string + //if msgContent.Content == "last" { + // cmdString = global.HistoryCmds[len(global.HistoryCmds)-1] + //} else if msgContent.Content == "history" { + // cmdString = utils.SlicePrint(global.HistoryCmds) + //} else if msgContent.Content == "删除图片" { + // //通过文本消息删除上一张图片 + // lastImg := GetLastWechatLog(msgContent.FromUsername, "image") + // err := utils.DeleteFile(lastImg.Content) + // if err != nil { + // log.Println("删除图片失败: ", lastImg.Content) + // return + // } else { + // log.Println("图片已删除: ", lastImg.Content) + // return + // } + // + //} else if msgContent.Content == "删除文本" { + // //通过文本消息删除上一条文本消息 + // lastText := GetLastWechatLog(msgContent.FromUsername, "text") + // textMd5 := utils.Md5String(lastText.Content) + // go RecordWechatBlockWords(lastText.Content, textMd5, msgContent.FromUsername) + // return + // + //} else { + // cmdString = msgContent.Content + //} + //global.HistoryCmds = append(global.HistoryCmds, msgContent.Content) + //replyContent, err := utils.CMDShellTrick(cmdString) + //if err != nil { + // replyContent = "/:,@!执行失败:\n" + msgContent.Content + //} else { + // replyContent = "/::D执行成功:\n" + replyContent + // //aiAnswer = "执行命令:" + msgContent.Content + //} } else { var replyContentAi string if _, ok := global.EmojMap[msgContent.Content]; ok {