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, "修改成功")
|