@@ -27,16 +27,21 @@ def main(domain, settings='settings.txt'):
2727 return "Domain {} configured incorectly. Rerun setup." .format (domain )
2828 print ("Read {} config." .format (domain ))
2929
30- # read existing ip for domain
30+ # read existing ip for domain from config || from DNS if last check was less than 60 sec ago
3131 ip = None
32- try :
33- answers = dns .resolver .query (domain , 'A' )
34- if not answers :
35- return "No A record found for domain {}" .format (domain )
36- ip = answers [0 ]
37- print ("IP {} found in A record" .format (ip ))
38- except Exception :
39- print ("No A record found for domain {}" .format (domain ))
32+ if 'last_success' in config [domain ] and int (time .time ()) - config [domain ]['last_success' ] < 60 :
33+ ip = config [domain ]['ip' ]
34+ print ("Recently used IP {}" .format (ip ))
35+ else :
36+ try :
37+ answers = dns .resolver .query (domain , 'A' )
38+ if not answers :
39+ return "No A record found for domain {}" .format (domain )
40+ ip = answers [0 ]
41+ print ("IP {} found in A record" .format (ip ))
42+ config [domain ]['last_dns_check' ] = int (time .time ())
43+ except Exception :
44+ print ("No A record found for domain {}" .format (domain ))
4045
4146 # get public ip
4247 response = requests .get ("https://api.ipify.org" , params = {'format' : 'json' })
@@ -46,8 +51,6 @@ def main(domain, settings='settings.txt'):
4651 if not public_ip :
4752 return "Could not discover public IP."
4853
49- config [domain ]['last_dns_check' ] = int (time .time ())
50-
5154 print ("New IP: {}" .format (public_ip ))
5255 if ip and str (ip ) == str (public_ip ):
5356 config [domain ]['ip' ] = public_ip
0 commit comments