Change structure of tld configuration file. Add redirection support. WiP
This commit is contained in:
parent
54e65759be
commit
42cf1019f3
5
src/test.py
Normal file
5
src/test.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import whois
|
||||||
|
|
||||||
|
w = whois.Whois("kiding.net")
|
||||||
|
print w.run()
|
||||||
|
|
||||||
15
src/tlds/net
15
src/tlds/net
@ -0,0 +1,15 @@
|
|||||||
|
server = {
|
||||||
|
"host": "net.whois-servers.net",
|
||||||
|
"redirect": ".*Whois Server: (.*)",
|
||||||
|
}
|
||||||
|
|
||||||
|
parse = {
|
||||||
|
"regex": {
|
||||||
|
"default": {
|
||||||
|
|
||||||
|
},
|
||||||
|
"whois.dotname.co.kr":
|
||||||
|
{
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
11
src/tlds/org
11
src/tlds/org
@ -0,0 +1,11 @@
|
|||||||
|
server = {
|
||||||
|
"host": "org.whois-servers.net",
|
||||||
|
}
|
||||||
|
|
||||||
|
parse = {
|
||||||
|
"regex": {
|
||||||
|
"default": {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
45
src/whois.py
45
src/whois.py
@ -3,6 +3,7 @@
|
|||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import socket
|
import socket
|
||||||
|
import re
|
||||||
|
|
||||||
class Whois(object):
|
class Whois(object):
|
||||||
def __init__(self, domain):
|
def __init__(self, domain):
|
||||||
@ -13,26 +14,27 @@ class Whois(object):
|
|||||||
self.tldPath = os.path.join(self.currPath, "tlds")
|
self.tldPath = os.path.join(self.currPath, "tlds")
|
||||||
self.tldList = os.listdir(self.tldPath)
|
self.tldList = os.listdir(self.tldPath)
|
||||||
|
|
||||||
def chooseServer(self):
|
self.settings = {}
|
||||||
|
|
||||||
if self.tld in self.tldList:
|
if self.tld in self.tldList:
|
||||||
settings = {}
|
self.settings = {}
|
||||||
execfile(os.path.join(self.tldPath, self.tld), {}, settings)
|
execfile(os.path.join(self.tldPath, self.tld), {}, self.settings)
|
||||||
if "server" in settings:
|
|
||||||
return settings["server"]
|
def chooseServer(self):
|
||||||
|
if "server" in self.settings:
|
||||||
|
return self.settings["server"]["host"]
|
||||||
else:
|
else:
|
||||||
return self.tld + ".whois-servers.net"
|
return self.tld + ".whois-servers.net"
|
||||||
|
|
||||||
else:
|
def query(self, whoisServer):
|
||||||
return self.tld + ".whois-servers.net"
|
|
||||||
|
|
||||||
|
|
||||||
def run(self, redirect=True):
|
|
||||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
self.whoisServer = self.chooseServer()
|
|
||||||
try:
|
try:
|
||||||
s.connect((self.whoisServer, 43))
|
s.connect((whoisServer, 43))
|
||||||
except:
|
except:
|
||||||
print "ERROR Could not connect to whois server %s"%(self.whoisServer)
|
# FIXME: Create a exception class for this
|
||||||
|
print "ERROR Could not connect to whois server %s"%(whoisServer)
|
||||||
|
return False
|
||||||
|
|
||||||
s.send(self.domain + "\r\n")
|
s.send(self.domain + "\r\n")
|
||||||
|
|
||||||
@ -41,9 +43,24 @@ class Whois(object):
|
|||||||
while True:
|
while True:
|
||||||
buffer = s.recv(512)
|
buffer = s.recv(512)
|
||||||
|
|
||||||
if not buffer: break
|
if not buffer:
|
||||||
|
break
|
||||||
|
|
||||||
result += buffer
|
result += buffer
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def run(self, redirect=True):
|
||||||
|
result = self.query(self.chooseServer())
|
||||||
|
|
||||||
|
if redirect:
|
||||||
|
redirection = re.findall(self.settings["server"]["redirect"], result, re.MULTILINE)
|
||||||
|
|
||||||
|
while redirection and len(redirection) >= 1:
|
||||||
|
result = self.query(redirection[0])
|
||||||
|
redirection = re.findall(self.settings["server"]["redirect"], result)
|
||||||
|
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user