Files

177 lines
5.9 KiB
Python
Raw Permalink Normal View History

2026-04-07 02:04:22 +05:30
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, "修改成功")