Files
aaPanel/mod/base/push_mod/domain_blcheck_push.py
Jack 8eadc94c98 Update to 7.32.0
1. Added: Mail Server - Add Domain with Domain management center to Automatic DNS record & apply SSL
2. Added: Mail Server - DNS record with One-click Parsing
3. Added: Mail Server - Compatible with Domain management center to apply for renewal SSL
4. Added: Mail Server - Mail Marketing - Add Template supports Upload HTML
5. Added: bt default command supports displaying separate IPV4, IPV6 and bound domain info
6. Added: Settings - Panel SSL supports using Domains SSL Certificate
7. Added: PHP Project - Automatic Add Record & SSL with progress display
8. Fixed: Mail Server quota limit issue
9. Fixed: WP Toolkit incorrect cache directory issue
10. Optimized: Enhanced domain validation in the Domain module
11. Fixed: Issue with automatic domain resolution prompts in Mail Server editing
12. Fixed: "Internal Server Error" occurring in certain scenarios
2025-04-15 17:11:22 +08:00

179 lines
5.6 KiB
Python

import glob
import hashlib
import json
import os
import re
import sys
import time
import psutil
from datetime import datetime
from importlib import import_module
from typing import Tuple, Union, Optional, List
from .send_tool import WxAccountMsg, WxAccountLoginMsg
from .base_task import BaseTask
from .mods import PUSH_DATA_PATH, TaskConfig, SenderConfig, PANEL_PATH
from .util import read_file, DB, write_file, check_site_status,GET_CLASS, ExecShell, get_config_value, public_get_cache_func, \
public_set_cache_func, get_network_ip, public_get_user_info, public_http_post, panel_version
from mod.base.web_conf import RealSSLManger
# 邮局域名进入黑名单
class MailDomainBlcheck(BaseTask):
push_tip_file = "/www/server/panel/data/mail_domain_blcheck_send_type.pl"
def __init__(self):
super().__init__()
self.source_name = "mail_domain_black"
self.template_name = "Your IP is on the email blacklist"
self.title = "Your IP is on the email blacklist"
def check_task_data(self, task_data: dict) -> Union[dict, str]:
return {}
def get_keyword(self, task_data: dict) -> str:
return "mail_domain_black"
def get_push_data(self, task_id: str, task_data: dict) -> Optional[dict]:
return None
def filter_template(self, template) -> dict:
return template
def to_sms_msg(self, push_data: dict, push_public_data: dict) -> Tuple[str, dict]:
return "", {}
def task_config_update_hook(self, task: dict) -> None:
sender = task["sender"]
if len(sender) > 0:
send_id = sender[0]
else:
return
sender_data = SenderConfig().get_by_id(send_id)
if sender_data:
write_file(self.push_tip_file, sender_data["sender_type"])
def task_config_create_hook(self, task: dict) -> None:
return self.task_config_update_hook(task)
def task_config_remove_hook(self, task: dict) -> None:
if os.path.exists(self.push_tip_file):
os.remove(self.push_tip_file)
# 邮局服务异常告警
class MailServerDown(BaseTask):
push_tip_file = "/www/server/panel/data/mail_server_down_send_type.pl"
def __init__(self):
super().__init__()
self.source_name = "mail_server_status"
self.template_name = "Your Mail Service is down"
self.title = "Your Mail Service is down"
def check_task_data(self, task_data: dict) -> Union[dict, str]:
return {}
def get_keyword(self, task_data: dict) -> str:
return "mail_server_status"
def get_push_data(self, task_id: str, task_data: dict) -> Optional[dict]:
return None
def filter_template(self, template) -> dict:
return template
def to_sms_msg(self, push_data: dict, push_public_data: dict) -> Tuple[str, dict]:
return "", {}
def task_config_update_hook(self, task: dict) -> None:
sender = task["sender"]
if len(sender) > 0:
send_id = sender[0]
else:
return
sender_data = SenderConfig().get_by_id(send_id)
if sender_data:
write_file(self.push_tip_file, sender_data["sender_type"])
def task_config_create_hook(self, task: dict) -> None:
return self.task_config_update_hook(task)
def task_config_remove_hook(self, task: dict) -> None:
if os.path.exists(self.push_tip_file):
os.remove(self.push_tip_file)
# 邮局服务异常告警
class MailDomainQuota(BaseTask):
push_tip_file = "/www/server/panel/data/mail_domain_quota_alert_send_type.pl"
def __init__(self):
super().__init__()
self.source_name = "mail_domain_quota_alert"
self.template_name = "Your Mail Domain Quota Alert"
self.title = "Your Mail Domain Quota Alert"
def check_task_data(self, task_data: dict) -> Union[dict, str]:
return {}
def get_keyword(self, task_data: dict) -> str:
return "mail_domain_quota_alert"
def get_push_data(self, task_id: str, task_data: dict) -> Optional[dict]:
return None
def filter_template(self, template) -> dict:
return template
def to_sms_msg(self, push_data: dict, push_public_data: dict) -> Tuple[str, dict]:
return "", {}
def task_config_update_hook(self, task: dict) -> None:
sender = task["sender"]
if len(sender) > 0:
send_id = sender[0]
else:
return
sender_data = SenderConfig().get_by_id(send_id)
if sender_data:
write_file(self.push_tip_file, sender_data["sender_type"])
def task_config_create_hook(self, task: dict) -> None:
return self.task_config_update_hook(task)
def task_config_remove_hook(self, task: dict) -> None:
if os.path.exists(self.push_tip_file):
os.remove(self.push_tip_file)
class ViewMsgFormat(object):
_FORMAT = {
"1": (
lambda x: "<span>When your MailServer domain is blacklisted, an alarm is generated</span>"
),
"2": (
lambda x: "<span>When your Mail Service is down, an alarm is generated</span>"
),
"3": (
lambda x: "<span>When your Mail domain usage exceeds quota, an alarm is generated</span>"
)
}
def get_msg(self, task: dict) -> Optional[str]:
if task["template_id"] in ["80"]:
return self._FORMAT["1"](task)
if task["template_id"] in ["81"]:
return self._FORMAT["2"](task)
if task["template_id"] in ["82"]:
return self._FORMAT["3"](task)
if task["template_id"] in self._FORMAT:
return self._FORMAT[task["template_id"]](task)
return None