Open OwnerCM opened 1 year ago
关于以上两点建议会在近期进行改进。请持续关注。
说的两点建议选择性改进了一下。一是可以使用环境变量的形式进行修改发送邮箱和接收邮箱,而是不考虑暂停的时候才发送。这个可以自己进代码里面修改,很简单。不考虑的原因是有可能因为机器关机等原因无法收到邮件,会被默认是正常运行。每天发送可能会有点打扰,但是放心。
感谢老哥提供了这么好的工具,看到这个issue,也想搭车提个建议😀: 大佬可否考虑接入Server酱(https://sct.ftqq.com/)通过App(微信、PushDeer、Bark等)推送,这样比邮箱更方便直接~
@Hopeless 下个版本会考虑,由于个人时间精力有限,不定时更新。大家有啥需求可以发在这个issue下面。这个issue我会一直开着。
可以考虑加进去 @mmkakac
说的两点建议选择性改进了一下。一是可以使用环境变量的形式进行修改发送邮箱和接收邮箱,而是不考虑暂停的时候才发送。这个可以自己进代码里面修改,很简单。不考虑的原因是有可能因为机器关机等原因无法收到邮件,会被默认是正常运行。每天发送可能会有点打扰,但是放心。
这样邮箱里就会充满垃圾邮件啊(虽然本来也不少了)。要不然大佬加个开关,让用户自己选择邮件通知的形式,免得邮箱全是这种邮件。
通知的話...可能Discord Webhook或Tg Bot吧?這兩個實現應該是比較簡單的
研究了一下大佬的代码,做了一下修改 将容器里面的csv文件挂载出来之后 定时任务执行这个脚本就可以钉钉或者微信PushPlus推送了 进入容器里面停止大佬的邮箱发送定时任务 就不再用邮箱了
import csv
import os
import json
import requests
import time
import hmac
import hashlib
import base64
import urllib.parse
# 定义令牌和密钥
DD_TOKEN = 'your-dingtalk-token' # 替换为实际的钉钉Token
DD_SECRET = 'your-dingtalk-secret' # 替换为实际的钉钉Secret
PUSHPLUS_TOKEN = 'your-pushplus-token' # 替换为实际的PushPlus Token
# 定义一个函数检查是否账户处于暂停状态
def isPaused():
is_paused = False
with open('/opt/renewx/appdata/DataBase/EXAccountRun.csv', 'rt') as csvfile: # 更改为宿主机上的实际路径
reader = csv.reader(csvfile)
column = [row[7] for row in reader]
for i in range(1, len(column)):
if column[i] == 'True':
is_paused = True
break
return is_paused
# 定义一个函数发送钉钉机器人通知
def sendDingTalkNotification(content):
if DD_TOKEN.strip() and DD_SECRET.strip():
timestamp = str(round(time.time() * 1000))
string_to_sign = '{}\n{}'.format(timestamp, DD_SECRET)
hmac_code = hmac.new(DD_SECRET.encode(), string_to_sign.encode(), digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
url = f'https://oapi.dingtalk.com/robot/send?access_token={DD_TOKEN}×tamp={timestamp}&sign={sign}'
headers = {"Content-Type": "application/json;charset=utf-8"}
data = {
"msgtype": "markdown",
"markdown": {
"title": "ms365 检查结果",
"text": f"ms365 checkout\n> {content}"
}
}
response = requests.post(url=url, data=json.dumps(data), headers=headers, timeout=15)
if response.json().get("errcode") == 0:
print("钉钉机器人通知发送成功!")
else:
print("钉钉机器人通知发送失败!")
# 定义一个函数发送PushPlus通知
def sendPushPlusNotification(content):
if PUSHPLUS_TOKEN:
url = 'http://www.pushplus.plus/send'
data = {
"token": PUSHPLUS_TOKEN,
"title": "ms365 检查结果",
"content": content,
}
headers = {'Content-Type': 'application/json'}
response = requests.post(url, data=json.dumps(data), headers=headers)
if response.status_code == 200:
print("PushPlus通知发送成功!")
else:
print("PushPlus通知发送失败!")
# 主程序入口
if __name__ == '__main__':
is_paused = isPaused()
if is_paused:
content = "结果:有ms账号已经暂停,请前往查看。"
else:
content = "结果:账号运行正常。"
# 检查钉钉的令牌和密钥是否已填写,若填写则发送钉钉通知
if DD_TOKEN and DD_SECRET:
sendDingTalkNotification(content)
# 检查PushPlus的令牌是否已填写,若填写则发送PushPlus通知
if PUSHPLUS_TOKEN:
sendPushPlusNotification(content)```
研究了一下大佬的代码,做了一下修改 将容器里面的csv文件挂载出来之后 定时任务执行这个脚本就可以钉钉或者微信PushPlus推送了 进入容器里面停止大佬的邮箱发送定时任务 就不再用邮箱了
import csv import os import json import requests import time import hmac import hashlib import base64 import urllib.parse # 定义令牌和密钥 DD_TOKEN = 'your-dingtalk-token' # 替换为实际的钉钉Token DD_SECRET = 'your-dingtalk-secret' # 替换为实际的钉钉Secret PUSHPLUS_TOKEN = 'your-pushplus-token' # 替换为实际的PushPlus Token # 定义一个函数检查是否账户处于暂停状态 def isPaused(): is_paused = False with open('/opt/renewx/appdata/DataBase/EXAccountRun.csv', 'rt') as csvfile: # 更改为宿主机上的实际路径 reader = csv.reader(csvfile) column = [row[7] for row in reader] for i in range(1, len(column)): if column[i] == 'True': is_paused = True break return is_paused # 定义一个函数发送钉钉机器人通知 def sendDingTalkNotification(content): if DD_TOKEN.strip() and DD_SECRET.strip(): timestamp = str(round(time.time() * 1000)) string_to_sign = '{}\n{}'.format(timestamp, DD_SECRET) hmac_code = hmac.new(DD_SECRET.encode(), string_to_sign.encode(), digestmod=hashlib.sha256).digest() sign = urllib.parse.quote_plus(base64.b64encode(hmac_code)) url = f'https://oapi.dingtalk.com/robot/send?access_token={DD_TOKEN}×tamp={timestamp}&sign={sign}' headers = {"Content-Type": "application/json;charset=utf-8"} data = { "msgtype": "markdown", "markdown": { "title": "ms365 检查结果", "text": f"ms365 checkout\n> {content}" } } response = requests.post(url=url, data=json.dumps(data), headers=headers, timeout=15) if response.json().get("errcode") == 0: print("钉钉机器人通知发送成功!") else: print("钉钉机器人通知发送失败!") # 定义一个函数发送PushPlus通知 def sendPushPlusNotification(content): if PUSHPLUS_TOKEN: url = 'http://www.pushplus.plus/send' data = { "token": PUSHPLUS_TOKEN, "title": "ms365 检查结果", "content": content, } headers = {'Content-Type': 'application/json'} response = requests.post(url, data=json.dumps(data), headers=headers) if response.status_code == 200: print("PushPlus通知发送成功!") else: print("PushPlus通知发送失败!") # 主程序入口 if __name__ == '__main__': is_paused = isPaused() if is_paused: content = "结果:有ms账号已经暂停,请前往查看。" else: content = "结果:账号运行正常。" # 检查钉钉的令牌和密钥是否已填写,若填写则发送钉钉通知 if DD_TOKEN and DD_SECRET: sendDingTalkNotification(content) # 检查PushPlus的令牌是否已填写,若填写则发送PushPlus通知 if PUSHPLUS_TOKEN: sendPushPlusNotification(content)```
最好的解决方式还是有自动特赦类功能
感谢大佬提供这么好用的工具并一直保持更新,对于新的邮箱功能提供2个建议: 1、发送和接收邮件的配置能否改为在Config.xml里进行配置。 2、每日18点的定时邮件能否改为有错误被暂停的账号才发送。