mirror of
https://github.com/aaPanel/aaPanel.git
synced 2026-09-12 12:37:39 +02:00
Update to 7.7.0
Since version 7.7.0, we recommend yours update python to 3.12. [+] Using nginx technology to load static files improves access speed [+] Refactor homepage, website, FTP, and database using vue3 [+] Table loading changed to skeleton screen [+] Add Website statistics-v2 professional plug-in [+] Add Home page - top 5 resource occupancy [+] Add protection for Files management (requires Tamper-proof for Enterprise 3.7) [+] Website, FTP, Databases page add program status [+] Add FTP log analysis (only supports Centos) [+] Add password-free login to phpMyAdmin [+] Add Proxy Project in Website (Supported when web service uses Nginx) [+] Add WP Toolkit (Pro version only) [+] Redesigned Docker module [+] Add WP Toolkit Protection [+] Add WP Toolkit Backup and Restore [+] Add WP Toolkit Migrated [+] Add WP Toolkit Clone site (supports new domain and subdomain) [+] Add WP Toolkit Create site from backup of other panel [+] Add WP Toolkit support for Cron automatic backup (only save Local disk) [+] Add WP Toolkit operation log [+] Add Integrity check for WP Toolkit [+] Add WP Toolkit plug-in management and themes management [*] Optimize phpMyAdmin formula access method [*] Optimize Home page PHP display problem [*] Optimize jump to the login interface after the login expires [*] Optimize automatic renewal of SSL at some times [*] Optimize Let's Encrypt to increase application success rate [-] Fix Logs Audit cannot be opened [-] Fix apache URL rewrite issue [-] Fix phpmyadmin installation problem [-] Fix the problem that some servers cannot install software [-] Fix upload file error [-] Fix left menu hiding problem [-] Fix aaPanel Mobile QR code display problem [-] Fix problem that third-party plug-ins are not displayed in the App Store [-] Fix issue where the menu bar is blank when opening new tabs [-] Fixed panel not being accessible in some cases [-] Fix the issue where Curl warning caused the inability to apply for SSL [-] Fix Quota issues for Website, FTP, Databases [-] Fix file interface display problem on mobile terminal
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
import sys
|
||||
from typing import Optional, List, Tuple
|
||||
from mod.base.push_mod import BaseTask, WxAccountMsgBase, WxAccountMsg, get_push_public_data
|
||||
|
||||
if "/www/server/panel/class" not in sys.path:
|
||||
sys.path.insert(0, "/www/server/panel/class")
|
||||
|
||||
import public
|
||||
|
||||
|
||||
PANEL_PATH = "/www/server/panel"
|
||||
public_http_post = public.httpPost
|
||||
|
||||
|
||||
def write_push_log(
|
||||
module_name: str,
|
||||
status: bool,
|
||||
title: str,
|
||||
user: Optional[List[str]] = None):
|
||||
"""
|
||||
记录 告警推送情况
|
||||
@param module_name: 通道方式
|
||||
@param status: 是否成功
|
||||
@param title: 标题
|
||||
@param user: 推送到的用户,可以为空,如:钉钉 不需要
|
||||
@return:
|
||||
"""
|
||||
if status:
|
||||
status_str = '<span style="color:#20a53a;">成功</span>'
|
||||
else:
|
||||
status_str = '<span style="color:red;">失败</span>'
|
||||
|
||||
if not user:
|
||||
user_str = '[ 默认 ]'
|
||||
else:
|
||||
user_str = '[ {} ]'.format(",".join(user))
|
||||
|
||||
log = '标题:【{}】,通知方式:【{}】,结果:【{}】,收件人:{}'.format(title, module_name, status_str, user_str)
|
||||
public.WriteLog('告警通知', log)
|
||||
return True
|
||||
|
||||
|
||||
def write_mail_push_log(
|
||||
title: str,
|
||||
error_user: List[str],
|
||||
success_user: List[str],
|
||||
):
|
||||
"""
|
||||
记录 告警推送情况
|
||||
@param title: 标题
|
||||
@param error_user: 失败的用户
|
||||
@param success_user: 成功的用户
|
||||
@return:
|
||||
"""
|
||||
e_fmt = '<span style="color:#20a53a;">{}</span>'
|
||||
s_fmt = '<span style="color:red;">{}</span>'
|
||||
error_user_msg = ",".join([e_fmt.format(i) for i in error_user])
|
||||
success_user = ",".join([s_fmt.format(i) for i in success_user])
|
||||
log = '标题:【{}】,通知方式:【邮箱】,发送失败的收件人:{},发送成功的收件人:{}'.format(
|
||||
title, error_user_msg, success_user
|
||||
)
|
||||
public.WriteLog('告警通知', log)
|
||||
return True
|
||||
|
||||
|
||||
def write_file(filename: str, s_body: str, mode='w+') -> bool:
|
||||
"""
|
||||
写入文件内容
|
||||
@filename 文件名
|
||||
@s_body 欲写入的内容
|
||||
return bool 若文件不存在则尝试自动创建
|
||||
"""
|
||||
try:
|
||||
fp = open(filename, mode=mode)
|
||||
fp.write(s_body)
|
||||
fp.close()
|
||||
return True
|
||||
except:
|
||||
try:
|
||||
fp = open(filename, mode=mode, encoding="utf-8")
|
||||
fp.write(s_body)
|
||||
fp.close()
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
|
||||
|
||||
def read_file(filename, mode='r') -> Optional[str]:
|
||||
"""
|
||||
读取文件内容
|
||||
@filename 文件名
|
||||
return string(bin) 若文件不存在,则返回None
|
||||
"""
|
||||
import os
|
||||
if not os.path.exists(filename):
|
||||
return None
|
||||
fp = None
|
||||
try:
|
||||
fp = open(filename, mode=mode)
|
||||
f_body = fp.read()
|
||||
except:
|
||||
return None
|
||||
finally:
|
||||
if fp and not fp.closed:
|
||||
fp.close()
|
||||
return f_body
|
||||
|
||||
|
||||
class _TestMsgTask(BaseTask):
|
||||
"""
|
||||
用来测试的短息
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def the_push_public_data():
|
||||
return get_push_public_data()
|
||||
|
||||
def get_keywords(self, task_data: dict) -> str:
|
||||
pass
|
||||
|
||||
def to_sms_msg(self, push_data: dict, push_public_data: dict) -> Tuple[str, dict]:
|
||||
raise NotImplementedError()
|
||||
|
||||
def to_wx_account_msg(self, push_data: dict, push_public_data: dict) -> WxAccountMsg:
|
||||
msg = WxAccountMsg.new_msg()
|
||||
msg.thing_type = self.title
|
||||
msg.msg = "消息通道配置成功"
|
||||
return msg
|
||||
|
||||
|
||||
def get_test_msg(title: str, task_name="消息通道配置提醒") -> _TestMsgTask:
|
||||
"""
|
||||
用来测试的短息
|
||||
"""
|
||||
t = _TestMsgTask()
|
||||
|
||||
t.title = title
|
||||
t.template_name = task_name
|
||||
return t
|
||||
Reference in New Issue
Block a user