-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcommonModule.py
More file actions
144 lines (122 loc) · 5.03 KB
/
commonModule.py
File metadata and controls
144 lines (122 loc) · 5.03 KB
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest
from aliyunsdkalidns.request.v20150109.AddDomainRecordRequest import AddDomainRecordRequest
from aliyunsdkalidns.request.v20150109.DeleteDomainRecordRequest import DeleteDomainRecordRequest
from aliyunsdkalidns.request.v20150109.DeleteSubDomainRecordsRequest import DeleteSubDomainRecordsRequest
from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest
import json
import os
import sys
import urllib.request
import logging
from logging.config import fileConfig
logging.config.fileConfig('log.conf')
logger = logging.getLogger('Common')
#从指定的配置文件读取配置,rwopt为读写选项
def ReadConfig(configPath, rwopt):
try:
with open(configPath, rwopt, encoding='utf-8') as jsonFile:
config = json.load(jsonFile)
jsonFile.close()
except:
logger.error("Loading JSON file failed: "+configPath)
logger.info("Load JSON file successfully: "+configPath)
return config
'''
从已生成的client执行request并返回结果,注意:返回的结果是str类型,需要使用json.loads(...)转为json,才可以访问
或者不使用responseDict=json.dumps(responseJson,indent=4),直接返回responseJson
'''
def ExecuteGetResults(client,request):
response = client.do_action_with_exception(request)
try:
responseStr = str(response, encoding = "utf8")
except:
logger.error("Execution failed")
responseJson = json.loads(responseStr)
responseDict=json.dumps(responseJson,indent=4)
logger.debug("Return message: "+responseStr)
return responseDict
#从指定的配置文件构造client对象
def GetAliyunClient(configPath):
UserConfig = ReadConfig(configPath, 'r')
accessKeyId = UserConfig['accessKeyId']
accessSecret = UserConfig['accessSecret']
domainName = UserConfig['domainName']
try:
client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou')
logger.info("Client created successfully")
except:
logger.error("Client creation failed")
quit()
return client
#获取当前公网地址
def GetPublicIpAddress():
requestIpUrl="http://ip.42.pl/raw"
try:
response=urllib.request.urlopen(requestIpUrl).read()
responseIpAddress = str(response, encoding = "utf8")
except:
logger.error("Failed to obtain public network address, retrying...")
return GetPublicIpAddress()
logger.info("Successfully obtained public network address: "+responseIpAddress)
return responseIpAddress
#获取指定域名的所有子域名信息
#https://help.aliyun.com/document_detail/29776.html?spm=a2c4g.11186623.6.650.94a13b59Q6kBCd
def DescribeDomainRecordsRequestHelper(Client, DomainName):
Request = DescribeDomainRecordsRequest()
Request.set_accept_format('json')
Request.set_DomainName(DomainName)
result = ExecuteGetResults(Client,Request)
#print(result)
return result
#增加主机记录
#https://help.aliyun.com/document_detail/29772.html?spm=a2c4g.11186623.6.653.46333b595r89tS
def AddDomainRecordHelper(Client, DomainName, RR, Type, Value, Line):
Request = AddDomainRecordRequest()
Request.set_accept_format('json')
#设置增加记录的信息
Request.set_DomainName(DomainName)
Request.set_RR(RR)
Request.set_Type(Type)
Request.set_Value(Value)
Request.set_Line(Line)
result = ExecuteGetResults(Client,Request)
#print(result)
return result
#根据RecordID删除记录
#https://help.aliyun.com/document_detail/29773.html?spm=a2c4g.11186623.6.654.4f611cebnCahyS
def DeleteDomainRecordHelper(Client, RecordId):
Request = DeleteDomainRecordRequest()
Request.set_accept_format(RecordId)
#设置待删除记录的RecordId
Request.set_RecordId(RecordId)
result = ExecuteGetResults(Client,Request)
print(result)
return result
#根据主机记录删除记录
#https://help.aliyun.com/document_detail/29779.html?spm=a2c4g.11186623.6.656.570d2846hOPSu6
def DeleteSubDomainRecordsHelper(Client, DomainName, RR):
Request = DeleteSubDomainRecordsRequest()
Request.set_accept_format('json')
#设置待删除记录的信息
Request.set_DomainName(DomainName)
Request.set_RR(RR)
result = ExecuteGetResults(Client,Request)
print(result)
return result
#根据RecordId修改对应的记录的信息
#https://help.aliyun.com/document_detail/29774.html?spm=a2c4g.11186623.6.655.43fd3192UJmbmD
def UpdateDomainRecordHelper(Client, RecordId, RR, Type, Value, Line):
Request = UpdateDomainRecordRequest()
Request.set_accept_format('json')
#设置新的记录的信息
Request.set_RecordId(RecordId)
Request.set_RR(RR)
Request.set_Type(Type)
Request.set_Value(Value)
Request.set_Line(Line)
result = ExecuteGetResults(Client,Request)
#print(result)
return result