add feishu

pull/24/head
StarsL.cn 2022-06-14 10:27:19 +08:00
parent eb77f79fa3
commit 0742ff4b99
4 changed files with 28 additions and 4 deletions

View File

@ -33,6 +33,7 @@ def get_avd():
avd_switch = consul_kv.get_value('ConsulManager/avd/switch') avd_switch = consul_kv.get_value('ConsulManager/avd/switch')
wecomwh = avd_switch.get('wecomwh','') wecomwh = avd_switch.get('wecomwh','')
dingdingwh = avd_switch.get('dingdingwh','') dingdingwh = avd_switch.get('dingdingwh','')
feishuwh = avd_switch.get('feishuwh','')
content = f"# <font color=\"#ff0000\">{avd_dict['avd_name']}</font>\n" \ content = f"# <font color=\"#ff0000\">{avd_dict['avd_name']}</font>\n" \
f"- 编号:{avd_dict['avd_id']}[【详情】]({avd_dict['avd_id_url']})\n" \ f"- 编号:{avd_dict['avd_id']}[【详情】]({avd_dict['avd_id_url']})\n" \
f"- 类型:{avd_dict['avd_type']}\n" \ f"- 类型:{avd_dict['avd_type']}\n" \
@ -42,6 +43,13 @@ def get_avd():
wecom(wecomwh,content) wecom(wecomwh,content)
if avd_switch['switch'] and avd_switch['dingding'] and dingdingwh.startswith('https://oapi.dingtalk.com'): if avd_switch['switch'] and avd_switch['dingding'] and dingdingwh.startswith('https://oapi.dingtalk.com'):
dingding(dingdingwh,content) dingding(dingdingwh,content)
if avd_switch['switch'] and avd_switch.get('feishu',False) and feishuwh.startswith('https://open.feishu.cn'):
title = '漏洞告警:' + avd_dict['avd_name']
md = f"编号:{avd_dict['avd_id']}[【详情】]({avd_dict['avd_id_url']})\n" \
f"类型:{avd_dict['avd_type']}\n" \
f"披露:{avd_dict['avd_time']}\n" \
f"状态:**{avd_dict['avd_stat']}**({avd_dict['avd_collect']})"
feishu(feishuwh,title,md)
def wecom(webhook,content): def wecom(webhook,content):
headers = {'Content-Type': 'application/json'} headers = {'Content-Type': 'application/json'}
@ -56,3 +64,12 @@ def dingding(webhook,content):
data = bytes(json.dumps(params), 'utf-8') data = bytes(json.dumps(params), 'utf-8')
response = requests.post(webhook, headers=headers, data=data) response = requests.post(webhook, headers=headers, data=data)
print('【dingding】',response.json(),flush=True) print('【dingding】',response.json(),flush=True)
def feishu(webhook,title,md):
headers = {'Content-Type': 'application/json'}
params = {"msg_type": "interactive",
"card": {"header": {"title": {"tag": "plain_text","content": title},"template": "red"},
"elements": [{"tag": "markdown","content": f"{md}\n<at id=all></at>",}]}}
data = json.dumps(params)
response = requests.post(webhook, headers=headers, data=data)
print('【feishu】',response.json(),flush=True)

View File

@ -9,8 +9,8 @@ auth = HTTPTokenAuth()
def verify_token(token): def verify_token(token):
try: try:
data = s.loads(token) data = s.loads(token)
except BadSignature: #except BadSignature:
raise AuthFailed(msg='token不正确') #raise AuthFailed(msg='token不正确')
except SignatureExpired: except SignatureExpired:
raise AuthFailed(msg='token过期') raise AuthFailed(msg='token过期')
return {"code": 40000, "data": "登录过期,请重新登录!"} return {"code": 40000, "data": "登录过期,请重新登录!"}

View File

@ -23,6 +23,12 @@
<el-form-item v-if="avd_config.switch && avd_config.wecom" required label="机器人Webhook地址"> <el-form-item v-if="avd_config.switch && avd_config.wecom" required label="机器人Webhook地址">
<el-input v-model="avd_config.wecomwh" type="textarea" autosize /> <el-input v-model="avd_config.wecomwh" type="textarea" autosize />
</el-form-item> </el-form-item>
<el-form-item v-if="avd_config.switch" label="飞书通知">
<el-switch v-model="avd_config.feishu" />
</el-form-item>
<el-form-item v-if="avd_config.switch && avd_config.feishu" required label="机器人Webhook地址">
<el-input v-model="avd_config.feishuwh" type="textarea" autosize /><font size="3px" color="#ff0000"><strong>漏洞告警</strong></font>
</el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false"> <el-button @click="dialogFormVisible = false">
@ -56,7 +62,7 @@ export default {
return { return {
listLoading: false, listLoading: false,
dialogFormVisible: false, dialogFormVisible: false,
avd_config: { switch: false, wecom: false, dingding: false, wecomwh: '', dingdingwh: '' }, avd_config: { switch: false, wecom: false, dingding: false, feishu: false, wecomwh: '', dingdingwh: '', feishuwh: '' },
avd_list: [] avd_list: []
} }
}, },

View File

@ -7,6 +7,7 @@
<el-timeline-item timestamp="2022/6/13" placement="top"> <el-timeline-item timestamp="2022/6/13" placement="top">
<el-card> <el-card>
<h4>v0.6.1</h4> <h4>v0.6.1</h4>
<p>漏洞通知增加了飞书的支持</p>
<p>优化了漏洞通知页面的描述信息</p> <p>优化了漏洞通知页面的描述信息</p>
<p>修复了一个启动漏洞通知的bug</p> <p>修复了一个启动漏洞通知的bug</p>
</el-card> </el-card>