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
109 lines
3.6 KiB
Python
109 lines
3.6 KiB
Python
from sslModel.base import sslBase
|
||
import requests
|
||
from urllib.parse import urlparse
|
||
from urllib.parse import urljoin
|
||
import public
|
||
|
||
|
||
class main(sslBase):
|
||
dns_provider_name = "godaddy"
|
||
_type = 0 # 0:lest 1:锐成
|
||
|
||
def __init__(self):
|
||
super().__init__()
|
||
|
||
def __init_data(self, data):
|
||
self.key = data['Key']
|
||
self.secret = data['Secret']
|
||
self.base_url = 'https://api.godaddy.com'
|
||
self.timeout = 65
|
||
|
||
self.headers = {
|
||
"Authorization": "sso-key {}:{}".format(self.key, self.secret)
|
||
}
|
||
|
||
def create_dns_record(self, get):
|
||
dns_id = get.dns_id
|
||
domain_name = get.domain_name
|
||
domain_dns_value = get.domain_dns_value
|
||
|
||
self.__init_data(self.get_dns_data(None)[dns_id])
|
||
|
||
root_domain, sub_domain, _ = self.extract_zone(domain_name)
|
||
|
||
body = [
|
||
{
|
||
"data": domain_dns_value,
|
||
"name": sub_domain or '@',
|
||
"type": "TXT" if 'record_type' not in get else get.record_type,
|
||
}
|
||
]
|
||
url = urljoin(self.base_url, "/v1/domains/{}/records".format(root_domain))
|
||
try:
|
||
response = requests.patch(
|
||
url, headers=self.headers, json=body, timeout=self.timeout,
|
||
)
|
||
if response.status_code == 200:
|
||
return public.returnMsg(False, '添加成功')
|
||
else:
|
||
return public.returnMsg(False, '添加失败,{}'.format(response.json()))
|
||
except Exception as e:
|
||
return public.returnMsg(False, '添加失败,msg:{}'.format(e))
|
||
|
||
def get_dns_record(self, get):
|
||
dns_id = get.dns_id
|
||
domain_name = get.domain_name
|
||
|
||
root_domain, _, sub_domain = self.extract_zone(domain_name)
|
||
|
||
self.__init_data(self.get_dns_data(None)[dns_id])
|
||
url = urljoin(self.base_url, "/v1/domains/{}/records".format(root_domain))
|
||
data = {}
|
||
try:
|
||
response = requests.get(
|
||
url, headers=self.headers, timeout=self.timeout,
|
||
)
|
||
json_data = response.json()
|
||
data["list"] = [
|
||
{
|
||
"name": i["name"] + "." + root_domain if i["name"] != '@' else root_domain,
|
||
"ttl": i["ttl"],
|
||
"type": i["type"],
|
||
"value": i["data"],
|
||
"line": "",
|
||
"status": "",
|
||
"mx": i.get("priority") or 0,
|
||
"updated_on": "",
|
||
"remark": "",
|
||
}
|
||
for i in json_data
|
||
]
|
||
data["info"] = {
|
||
"record_total": len(data["list"])
|
||
}
|
||
return data
|
||
|
||
except Exception as e:
|
||
return data
|
||
|
||
def delete_dns_record(self, get):
|
||
domain_name = get.domain_name
|
||
dns_id = get.dns_id
|
||
|
||
root_domain, sub_domain, _ = self.extract_zone(domain_name)
|
||
|
||
self.__init_data(self.get_dns_data(None)[dns_id])
|
||
|
||
url = urljoin(self.base_url, "/v1/domains/{}/records/{}/{}".format(root_domain, 'TXT' if 'record_type' not in get else get.record_type, sub_domain))
|
||
|
||
try:
|
||
response = requests.delete(
|
||
url, headers=self.headers, timeout=self.timeout,
|
||
)
|
||
if response.status_code == 204:
|
||
return public.returnMsg(True, '删除成功')
|
||
else:
|
||
return public.returnMsg(True, '删除失败,{}'.format(response.text))
|
||
except Exception as e:
|
||
return public.returnMsg(False, '删除失败,msg:{}'.format(e))
|