Skip to content

Commit

Permalink
add feat: use feishu bot
Browse files Browse the repository at this point in the history
  • Loading branch information
zfb132 committed Sep 2, 2023
1 parent bef58e3 commit d13fb1b
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 4 deletions.
8 changes: 7 additions & 1 deletion app/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,13 @@
DINGTALK_SECRET_KEY = "SECff11ffffffffffffffffffffffffffff896c5cb6d21234567898765432123876"
# 钉钉群机器人的接入秘钥
DINGTALK_ACCESS_TOKEN = "896c5cb6d212896c5cb6d212ac9d9dac896c5cb6d2120dd24896c5cb6d2128c4"
# 若机器人的任一秘钥为空,则不发送钉钉消息
# 飞书群机器人的webhook地址
FEISHU_WEBHOOK = "https://open.feishu.cn/open-apis/bot/v2/hook/e4e2cc3f-5864-44b5-95c4-6adaa69d7a7b"
# 飞书群机器人的安全密钥
FEISHU_SECRET_KEY = "agPhgtfrdyhYfrTeWdQsX"
# 多选项:dingtalk feishu
RECEIVERS = ["dingtalk", "feishu"]
# 若机器人的任一秘钥为空,则不发送消息

# frps.ini,若未设置,则写为""即可
subdomain_host = "example.cn"
Expand Down
52 changes: 52 additions & 0 deletions app/model/FeishuBot.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author: 'zfb'
# time: 2023-09-02 11:47

import base64
import hashlib
import hmac
import json
import requests
import time
import urllib.parse

import app.config as config

webhook_url = config.FEISHU_WEBHOOK
token = config.FEISHU_SECRET_KEY

headers = {
'Content-Type': 'application/json;charset=utf-8'
}

# 获取时间戳和签名
def get_params(secret):
timestamp = str(round(time.time()))
string_to_sign = '{}\n{}'.format(timestamp, secret)
hmac_code = hmac.new(string_to_sign.encode("utf-8"), digestmod=hashlib.sha256).digest()
# 对结果进行base64处理
sign = base64.b64encode(hmac_code).decode('utf-8')
return timestamp, sign

# 发送消息并@指定成员
def send_text(txt):
# 判断是否有钉钉机器人的秘钥
if not webhook_url or not token:
return
timestamp, sign = get_params(token)
request_dict = {
"timestamp": timestamp,
"sign": sign,
"msg_type": "text",
"content": {
"text": txt
}
}
# 保证中文可以正常发送
data = json.dumps(request_dict, ensure_ascii=False).encode('utf-8')
response = requests.post(webhook_url, data, headers=headers).content
print(response.decode('utf-8'))

if __name__ == "__main__":
send_text("我在测试")
11 changes: 8 additions & 3 deletions app/model/HandleFrpMsg.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
import logging
import time

from app.config import SSH_IP_MODE, subdomain_host
from app.model.DingTalkBot import send_text
from app.config import SSH_IP_MODE, subdomain_host, RECEIVERS
from app.model.DingTalkBot import send_text as send_text_dingtalk
from app.model.FeishuBot import send_text as send_text_feishu
from app.model.SSHFilter import ip_check, ip2geo

logging = logging.getLogger('runserver.handlefrpmsg')
Expand Down Expand Up @@ -90,5 +91,9 @@ def handlemsg(data):
# 基本不会出现此情况
return True
# 钉钉发送给管理员
send_text(txt)
for receiver in RECEIVERS:
if receiver == "dingtalk":
send_text_dingtalk(txt)
elif receiver == "feishu":
send_text_feishu(txt)
return is_allow_ssh

0 comments on commit d13fb1b

Please sign in to comment.