3838# Debug output
3939debug = False
4040
41- ###
41+ ### Configuration ends here ###
42+ hdrs = {'User-Agent' : 'Mozilla/5.0' }
4243hosts , ips = set (()), set (())
4344
4445import transmissionrpc , sys , os , time , socket
4546
4647if sys .version_info [0 ] == 2 :
47- from urllib import urlopen
48+ from urllib import Request , urlopen
4849 from urlparse import urlparse
4950else :
50- from urllib .request import urlopen
51+ from urllib .request import Request , urlopen
5152 from urllib .parse import urlparse
5253
5354def lg (msg ):
@@ -75,16 +76,19 @@ def validateTrackerURL(url, dns=True):
7576 dbg ("Host '{}' is duplicate" .format (h ))
7677 return False
7778
79+ ipa = set (())
7880 if dns :
7981 try :
80- ip = socket .gethostbyname (h )
82+ for r in socket .getaddrinfo (h , None ):
83+ ipa .add (r [4 ][0 ])
8184 except :
8285 lg ("Host '{}' is not resolvable" .format (h ))
8386 return False
8487
85- if ip in ips :
86- dbg ("Host's '{}' IP '{}' is duplicate" .format (h , ip ))
87- return False
88+ for ip in ipa :
89+ if ip in ips :
90+ dbg ("Host's '{}' IP '{}' is duplicate" .format (h , ip ))
91+ return False
8892
8993 ips .add (ip )
9094
@@ -99,7 +103,8 @@ def loadFile(file):
99103 return l
100104
101105def loadURL (url ):
102- f = urlopen (url )
106+ req = Request (url , headers = hdrs )
107+ f = urlopen (req )
103108 l = parse (f .read ().decode ("utf-8" ))
104109 f .close ()
105110 return l
0 commit comments