38
38
# Debug output
39
39
debug = False
40
40
41
- ###
41
+ ### Configuration ends here ###
42
+ hdrs = {'User-Agent' : 'Mozilla/5.0' }
42
43
hosts , ips = set (()), set (())
43
44
44
45
import transmissionrpc , sys , os , time , socket
45
46
46
47
if sys .version_info [0 ] == 2 :
47
- from urllib import urlopen
48
+ from urllib import Request , urlopen
48
49
from urlparse import urlparse
49
50
else :
50
- from urllib .request import urlopen
51
+ from urllib .request import Request , urlopen
51
52
from urllib .parse import urlparse
52
53
53
54
def lg (msg ):
@@ -75,16 +76,19 @@ def validateTrackerURL(url, dns=True):
75
76
dbg ("Host '{}' is duplicate" .format (h ))
76
77
return False
77
78
79
+ ipa = set (())
78
80
if dns :
79
81
try :
80
- ip = socket .gethostbyname (h )
82
+ for r in socket .getaddrinfo (h , None ):
83
+ ipa .add (r [4 ][0 ])
81
84
except :
82
85
lg ("Host '{}' is not resolvable" .format (h ))
83
86
return False
84
87
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
88
92
89
93
ips .add (ip )
90
94
@@ -99,7 +103,8 @@ def loadFile(file):
99
103
return l
100
104
101
105
def loadURL (url ):
102
- f = urlopen (url )
106
+ req = Request (url , headers = hdrs )
107
+ f = urlopen (req )
103
108
l = parse (f .read ().decode ("utf-8" ))
104
109
f .close ()
105
110
return l
0 commit comments