mirror of
https://github.com/aaPanel/aaPanel.git
synced 2026-08-17 21:25:47 +02:00
1. Added Mail Marketing Automation trigger tasks 2. Added Mail Marketing Groups Import, Export, Merge 3. Added Mail Marketing Subscribers to support paste import 4. Added Mail Marketing Template Import Export Duplicate 5. Added Mail server add timed automatic reply 6. Added HTTPS Protection function for Website (disables automatic HTTP to HTTPS redirection when enabled) 7. Optimize Website Interface Button Integration 8. Optimize the response speed of WP Toolkit interface
177 lines
5.9 KiB
Python
177 lines
5.9 KiB
Python
import json
|
|
import os
|
|
import uuid
|
|
|
|
import public
|
|
from sslModel.base import sslBase
|
|
|
|
|
|
class main(sslBase):
|
|
def dns_support_info(self):
|
|
# aa dns 支持的品牌, 及其默认值
|
|
data = [
|
|
{
|
|
"name": "dns",
|
|
"title": "Manual resolution",
|
|
"ps": "Returns the host and txt values, which are manually parsed by the user",
|
|
"data": False
|
|
},
|
|
{
|
|
"name": "CloudFlareDns",
|
|
"title": "CloudFlare",
|
|
"data": [
|
|
{
|
|
"key": "SAVED_CF_MAIL",
|
|
"name": "E-Mail",
|
|
"value": "",
|
|
},
|
|
{
|
|
"key": "SAVED_CF_KEY",
|
|
"name": "API Key",
|
|
"value": "",
|
|
}
|
|
],
|
|
"help": "How to get API Token",
|
|
"ps": "Use CloudFlare's API interface to automatically parse and apply for SSL",
|
|
},
|
|
{
|
|
"name": "CloudxnsDns",
|
|
"title": "CloudXns",
|
|
"data": [
|
|
{
|
|
"key": "SAVED_CX_Key",
|
|
"name": "AccessKey",
|
|
"value": ""
|
|
},
|
|
{
|
|
"key": "SAVED_CX_Secret",
|
|
"name": "SecretKey",
|
|
"value": ""
|
|
}
|
|
],
|
|
"ps": "Automatically resolve application SSL using cloudxns API interface",
|
|
"help": "CloudxnsBackground > User Center > API Management, follow the instructions to get AccessKey/SecretKey",
|
|
},
|
|
{
|
|
"name": "NameCheapDns",
|
|
"title": "NameCheap",
|
|
"data": [
|
|
{
|
|
"key": "SAVED_NC_ACCOUNT",
|
|
"name": "Account",
|
|
"value": ""
|
|
},
|
|
{
|
|
"key": "SAVED_CX_APIKEY",
|
|
"name": "ApiKey",
|
|
"value": ""
|
|
}
|
|
],
|
|
"ps": "Use NameCheap's API interface to automatically parse and apply for SSL",
|
|
"help": "Namecheap API needs added in Whitelisted IPs (only IPv4): "
|
|
"Profile > Tools menu > Namecheap API Access > Whitelisted IPs, "
|
|
"please check: https://www.namecheap.com/support/api/intro/",
|
|
},
|
|
# godaddy pro 环境需要账号里50个域名以上方可调用
|
|
]
|
|
return data
|
|
|
|
def get_dnsapi_add_data(self):
|
|
data = [
|
|
{
|
|
'name': 'DNSPod',
|
|
'id': 'DNSPodDns',
|
|
'params': ['ID', 'Token']
|
|
},
|
|
{
|
|
'name': '阿里云DNS',
|
|
'id': 'AliyunDns',
|
|
'params': ['AccessKey', 'SecretKey']
|
|
},
|
|
{
|
|
'name': '腾讯云DNS',
|
|
'id': 'TencentCloudDns',
|
|
'params': ['secret_id', 'secret_key']
|
|
},
|
|
{
|
|
'name': '华为云DNS',
|
|
'id': 'HuaweiCloudDns',
|
|
'params': ['AccessKey', 'SecretKey', 'project_id']
|
|
},
|
|
{
|
|
'name': 'CloudFlare',
|
|
'id': 'CloudFlareDns',
|
|
'params': ['E-Mail', 'API Key']
|
|
},
|
|
{
|
|
'name': '西部数码',
|
|
'id': 'WestDns',
|
|
'params': ['user_name', 'api_password']
|
|
},
|
|
# godaddy接口访问不了,先注释
|
|
# {
|
|
# 'name': 'GoDaddy',
|
|
# 'id': 'GoDaddyDns',
|
|
# 'params': ['Key', 'Secret']
|
|
# },
|
|
]
|
|
return data
|
|
|
|
def get_dns_data(self, get):
|
|
api_data = super().get_dns_data(get)
|
|
add_data = self.get_dnsapi_add_data()
|
|
return {"data": [i for i in api_data.values()], "add_data": add_data}
|
|
|
|
def add_dns_data(self, get):
|
|
dns_name = get.dns_name
|
|
ps = get.ps
|
|
pdata = json.loads(get.pdata)
|
|
|
|
if dns_name not in [i['id'] for i in self.get_dnsapi_add_data()]:
|
|
return public.returnMsg(False, "暂不支持此类型")
|
|
|
|
pdata.update({'id': uuid.uuid4().hex, 'ps': ps})
|
|
|
|
data = {}
|
|
sfile = "{}/config/dns_mager.conf".format(public.get_panel_path())
|
|
if os.path.exists(sfile):
|
|
data = json.loads(public.readFile(sfile))
|
|
type_data = data.get(dns_name)
|
|
if type_data:
|
|
type_data.append(pdata)
|
|
else:
|
|
type_data = [pdata]
|
|
data[dns_name] = type_data
|
|
public.writeFile(sfile, json.dumps(data))
|
|
return public.returnMsg(True, "添加成功")
|
|
|
|
def del_dns_data(self, get):
|
|
dns_id = get.dns_id
|
|
|
|
sfile = "{}/config/dns_mager.conf".format(public.get_panel_path())
|
|
data = json.loads(public.readFile(sfile))
|
|
|
|
for key in data.keys():
|
|
for val in data[key]:
|
|
if val['id'] == dns_id:
|
|
data[key].remove(val)
|
|
public.writeFile(sfile, json.dumps(data))
|
|
return public.returnMsg(True, "删除成功")
|
|
|
|
def upd_dns_data(self, get):
|
|
dns_id = get.dns_id
|
|
ps = get.ps
|
|
pdata = {}
|
|
if 'pdata' in get:
|
|
pdata = json.loads(get.pdata)
|
|
pdata.update({'ps': ps})
|
|
sfile = "{}/config/dns_mager.conf".format(public.get_panel_path())
|
|
data = json.loads(public.readFile(sfile))
|
|
|
|
for key in data.keys():
|
|
for val in data[key]:
|
|
if val['id'] == dns_id:
|
|
val.update(pdata)
|
|
public.writeFile(sfile, json.dumps(data))
|
|
return public.returnMsg(True, "修改成功")
|