#!/usr/bin/env python # #coding=utf-8 #--------------------------------------------------------------------------------- #Compliance with LGPLv3 protocol #Help Document:https://www.alibabacloud.com/help #Website:https://www.ghink.net #Gitee:gitee.com/ghink #Donate:afdian.net/@ghink #--------------------------------------------------------------------------------- import os import json import requests 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.UpdateDomainRecordRequest import UpdateDomainRecordRequest #--------------------------------------------------------------------------------- sets=open('set.json')#Open JSON File setting = sets.read()#Read JSON File,Sent it in a Variable sets.close()#Close JSON File setload = json.loads(setting)#Load JSON rr = setload['RR']#Save JSON in Variable domain = setload['Domain'] accesskeyid = setload['accessKeyId'] accesssecret = setload['accessSecret'] ipv4 = setload['IPV4'] ipv6 = setload['IPV6'] #--------------------------------------------------------------------------------- if __name__ == '__main__': v4api = 'http://ipv4.test-ipv6.com/ip/?callback='#Get IPV4 Address v4jsonback = requests.get(url=v4api).text #IPV4 Address Variable:"v4.text" v4json = v4jsonback.replace("(","").replace(")","") v4json = json.loads(v4json) v4, sep, tail = v4json['ip'].partition(',') print("Your IPV4 Address:") print(v4) v6api = 'http://ipv6.test-ipv6.com/ip/?callback='#Get IPV6 Address v6jsonback = requests.get(url=v6api).text #IPV6 Address Variable:"v6.text" v6json = v6jsonback.replace("(","").replace(")","") v6json = json.loads(v6json) v6, sep, tail = v6json['ip'].partition(',') print("Your IPV6 Address:") print(v6) #--------------------------------------------------------------------------------- client = AcsClient(accesskeyid, accesssecret, 'cn-hangzhou')#Aliyun AccessKey #--------------------------------------------------------------------------------- if ipv4 == 'true':#Judging whether IPV4 DDNS is open print('Your IPV4 DDNS is open.') #Describe IPV4 Records describev4 = DescribeDomainRecordsRequest()#Start Describe Domain Records describev4.set_accept_format('json') describev4.set_DomainName(domain)#Main Domain describev4.set_RRKeyWord(rr)#Your RRKeyWord describev4.set_TypeKeyWord("A")#Your Record Type describebackv4 = client.do_action_with_exception(describev4)#Get Back JSON # python2: print(response) print(str(describebackv4, encoding='utf-8'))#Print JSON #--------------------------------------------------------------------------------- #Read IPV4 JSON recordlistv4=json.loads(describebackv4)#Read Back JSON recordidv4=recordlistv4['DomainRecords']['Record'][0]['RecordId']#Get RecordId From Back JSON print('Your IPV4 RecordId:') print(recordidv4) valuev4=recordlistv4['DomainRecords']['Record'][0]['Value']#Get Value From Back JSON print('Your IPV4 Value:') print(valuev4) #RecordId For IPV4 Variable:"recoredidv4" #Value For IPV4 Variable:"valuev4" #--------------------------------------------------------------------------------- if valuev4 == v4:#Judging whether IPV4 address has changed #No Change print('Your IPV4 Record is Right,Noting to do.') else: #Changed Already print('Your IPV4 Record has Changed,Update Now.') #--------------------------------------------------------------------------------- #Update IPV4 Record updv4 = UpdateDomainRecordRequest()#Start Update Domain Records updv4.set_accept_format('json') updv4.set_RecordId(recordidv4) updv4.set_Value(v4)#Set Domain Record From Machine's Internet IPV4 Address updv4.set_Type("A")#Set Domain Record Type updv4.set_RR(rr)#Set Domain Record RR updbackv4 = client.do_action_with_exception(updv4)#Get Back JSON # python2: print(response) print(str(updbackv4, encoding='utf-8'))#Print JSON #--------------------------------------------------------------------------------- else: print('Your have already closed IPV4 DDNS.') #--------------------------------------------------------------------------------- if ipv6 == "true":#Judging whether IPV6 DDNS is open #Describe IPV6 Records describev6 = DescribeDomainRecordsRequest()#Start Describe Domain Records describev6.set_accept_format('json') describev6.set_DomainName(domain)#Main Domain describev6.set_RRKeyWord(rr)#Your RRKeyWord describev6.set_TypeKeyWord("AAAA")#Your Record Type describebackv6 = client.do_action_with_exception(describev6)#Get Back JSON # python2: print(response) print(str(describebackv6, encoding='utf-8'))#Print JSON #--------------------------------------------------------------------------------- #Read IPV6 JSON recordlistv6=json.loads(describebackv6)#Read Back JSON recordidv6=recordlistv6['DomainRecords']['Record'][0]['RecordId']#Get RecordId From Back JSON print('Your IPV6 RecordId:') print(recordidv6) valuev6=recordlistv6['DomainRecords']['Record'][0]['Value']#Get Value From Back JSON print('Your IPV6 Value:') print(valuev6) #RecordId For IPV6 Variable:"recoredidv6" #Value For IPV6 Variable:"valuev6" #--------------------------------------------------------------------------------- if valuev6 == v6:#Judging whether IPV6 address has changed #No Change print('Your IPV6 Record is Right,Noting to do.') else: #Changed Already print('Your IPV6 Record has Changed,Update Now.') #--------------------------------------------------------------------------------- #Update IPV6 Record updv6 = UpdateDomainRecordRequest()#Start Update Domain Records updv6.set_accept_format('json') updv6.set_RecordId(recordidv6) updv6.set_Value(v6)#Set Domain Record From Machine's Internet IPV6 Address updv6.set_Type("AAAA")#Set Domain Record Type updv6.set_RR(rr)#Set Domain Record RR updbackv6 = client.do_action_with_exception(updv6)#Get Back JSON # python2: print(response) print(str(updbackv6, encoding='utf-8'))#Print JSON #--------------------------------------------------------------------------------- else: print('Your have already closed IPV6 DDNS.') #---------------------------------------------------------------------------------