84 lines
2.4 KiB
Go
84 lines
2.4 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"net/url"
|
|
"strings"
|
|
)
|
|
|
|
// 处理字节切片,返回结构体
|
|
func (O OriginContent) Dealwithbody(body []byte) OriginContent {
|
|
alreadyDealwithbody := string(body)
|
|
spiltdecodedvalue := strings.Split(alreadyDealwithbody, "&")
|
|
value := make(map[int][]string)
|
|
for k := range spiltdecodedvalue {
|
|
value[k] = strings.Split(spiltdecodedvalue[k], "=")
|
|
}
|
|
urlDecode, err := url.QueryUnescape(value[1][1])
|
|
if err != nil {
|
|
fmt.Printf("urldecode失败,错误为:%v", err)
|
|
}
|
|
var wow = NewOrignContent(value[0][1], urlDecode, value[2][1])
|
|
fmt.Println(wow)
|
|
return wow
|
|
}
|
|
|
|
func verificationCodeHandler(w http.ResponseWriter, r *http.Request) {
|
|
if r.Method != http.MethodPost {
|
|
http.Error(w, "方法不允许哦^ ^", http.StatusMethodNotAllowed)
|
|
return
|
|
}
|
|
|
|
// 读取请求体数据
|
|
body, err := io.ReadAll(r.Body)
|
|
if err != nil {
|
|
http.Error(w, "读取请求体失败", http.StatusInternalServerError)
|
|
return
|
|
}
|
|
// 把返回体通过方法赋值给全局对象
|
|
newObj = newObj.Dealwithbody(body)
|
|
//fmt.Printf("%s%s%s\n", time.Now(), " ", content)
|
|
// 如果请求内容包含 "验证码",则发送到企业微信机器人
|
|
if strings.Contains(newObj.content, "验证码") || strings.Contains(newObj.content, "华为") {
|
|
sendToWechatBot(newObj)
|
|
}
|
|
// 返回响应
|
|
w.Write([]byte("请求企业微信~"))
|
|
}
|
|
|
|
func (O OriginContent) Send() {
|
|
// 这里实现发送信息到企业微信机器人的逻辑
|
|
var message string
|
|
if strings.Contains(newObj.content, "华为") {
|
|
// 如果 content 中包含 "华为"
|
|
message = fmt.Sprintf(`{"msgtype": "text", "text": {"content": "%s","mentioned_mobile_list":["18701488607"]}}`, newObj.content)
|
|
} else {
|
|
// 如果 content 中不包含 "华为"
|
|
message = fmt.Sprintf(`{"msgtype": "text", "text": {"content": "%s"}}`, newObj.content)
|
|
}
|
|
// 发送 HTTP POST 请求到企业微信机器人的 Webhook
|
|
resp, err := http.Post(webhookURLVerCode, "application/json", strings.NewReader(message))
|
|
if err != nil {
|
|
fmt.Println("Error sending message to Wechat Bot:", err)
|
|
return
|
|
}
|
|
defer func(Body io.ReadCloser) {
|
|
err := Body.Close()
|
|
if err != nil {
|
|
fmt.Printf("关闭返回体失败,错误是:%v", err)
|
|
}
|
|
}(resp.Body)
|
|
|
|
// 读取响应
|
|
respBody, err := io.ReadAll(resp.Body)
|
|
if err != nil {
|
|
fmt.Println("读取返回体失败~:", err)
|
|
return
|
|
}
|
|
|
|
fmt.Println("发送webhook成功~", string(respBody))
|
|
|
|
}
|