File size: 3,601 Bytes
17e971c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import os, sys, re, json, shutil, psutil, time
import uuid
from datetime import datetime
from hashlib import md5

from sslModel.base import sslBase
import public


class main(sslBase):

    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']
            },
            {
                'name': '宝塔域名',
                'id': 'BtDns',
                'params': ['AccessKey', 'SecretKey', 'AccountID']
            },
            # 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})

        sfile = "{}/config/dns_mager.conf".format(public.get_panel_path())
        try:
            data = json.loads(public.readFile(sfile))
        except:
            data = {}
        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, "修改成功")