Log everything
This commit is contained in:
parent
aa66f20fcc
commit
7b49fb2a74
@ -11,8 +11,14 @@ import re
|
|||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
class Parser(object):
|
class Parser(object):
|
||||||
def __init__(self, domain, text, whoisServer=None):
|
def __init__(self, domain, text, whoisServer=None, debug=False):
|
||||||
|
if debug:
|
||||||
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
|
logging.debug("__init__: DEBUG is set to True")
|
||||||
|
|
||||||
self.domain = domain
|
self.domain = domain
|
||||||
self.text = text
|
self.text = text
|
||||||
self.whoisServer = whoisServer and whoisServer or "default"
|
self.whoisServer = whoisServer and whoisServer or "default"
|
||||||
@ -22,7 +28,11 @@ class Parser(object):
|
|||||||
self.currPath = os.path.dirname(os.path.realpath(__file__))
|
self.currPath = os.path.dirname(os.path.realpath(__file__))
|
||||||
self.tldPath = os.path.join(self.currPath, "tlds")
|
self.tldPath = os.path.join(self.currPath, "tlds")
|
||||||
|
|
||||||
|
logging.debug("__init__: Setting initial variables...\nself.domain: %s\nself.text = %s\nself.whoisServer = %s\nself.tld = %s\nself.currPath = %s\nself.tldPath = %s"
|
||||||
|
%(self.domain, self.text, self.whoisServer, self.tld, self.currPath, self.tldPath))
|
||||||
|
|
||||||
self.parseDefaultConf = {}
|
self.parseDefaultConf = {}
|
||||||
|
logging.debug("__init__: Loading default tld configuration file")
|
||||||
execfile(os.path.join(self.tldPath, "default"), {}, self.parseDefaultConf)
|
execfile(os.path.join(self.tldPath, "default"), {}, self.parseDefaultConf)
|
||||||
self.parseDefaultConf = self.parseDefaultConf.get("parse")
|
self.parseDefaultConf = self.parseDefaultConf.get("parse")
|
||||||
|
|
||||||
@ -75,6 +85,7 @@ class Parser(object):
|
|||||||
self.parseConf = {}
|
self.parseConf = {}
|
||||||
|
|
||||||
if "LoadConf" in _parseConf:
|
if "LoadConf" in _parseConf:
|
||||||
|
logging.debug("__init__: LoadConf found in parser config")
|
||||||
try:
|
try:
|
||||||
# <tld>/<whois server>
|
# <tld>/<whois server>
|
||||||
# e.g. org/whois.publicinternetregistry.net
|
# e.g. org/whois.publicinternetregistry.net
|
||||||
@ -84,6 +95,9 @@ class Parser(object):
|
|||||||
lcWS = lc[1]
|
lcWS = lc[1]
|
||||||
|
|
||||||
lcConf = {}
|
lcConf = {}
|
||||||
|
|
||||||
|
logging.debug("__init__: Loading configuration file of tld name %s"%(lcTLD))
|
||||||
|
|
||||||
execfile("tlds/%s"%(lcTLD), {}, lcConf)
|
execfile("tlds/%s"%(lcTLD), {}, lcConf)
|
||||||
lcConf = lcConf.get("parse")
|
lcConf = lcConf.get("parse")
|
||||||
|
|
||||||
@ -97,13 +111,18 @@ class Parser(object):
|
|||||||
except:
|
except:
|
||||||
self.parseConf = self.parseDefaultConf.get("default")
|
self.parseConf = self.parseDefaultConf.get("default")
|
||||||
|
|
||||||
def run(self, TEST=False):
|
|
||||||
|
logging.debug("__init__: self.parseConf = %s"%(self.parseConf))
|
||||||
|
|
||||||
|
|
||||||
|
def run(self):
|
||||||
result = {}
|
result = {}
|
||||||
for key in self.parseConf:
|
for key in self.parseConf:
|
||||||
matches = re.findall(self.parseConf[key], self.text, re.MULTILINE)
|
matches = re.findall(self.parseConf[key], self.text, re.MULTILINE)
|
||||||
if matches:
|
if matches:
|
||||||
|
logging.debug("run: regex matches found for key %s. %s"%(key, matches))
|
||||||
result.update({key: map(lambda x: x.strip(), matches)})
|
result.update({key: map(lambda x: x.strip(), matches)})
|
||||||
|
|
||||||
if TEST and not matches: print "No match for %s"%(key)
|
logging.debug("run: No match for %s"%(key))
|
||||||
|
|
||||||
print result
|
print result
|
||||||
|
|||||||
@ -10,11 +10,16 @@ import sys
|
|||||||
import os
|
import os
|
||||||
import socket
|
import socket
|
||||||
import re
|
import re
|
||||||
|
import logging
|
||||||
|
|
||||||
import error
|
import error
|
||||||
|
|
||||||
class Whois(object):
|
class Whois(object):
|
||||||
def __init__(self, domain):
|
def __init__(self, domain, debug=False):
|
||||||
|
if debug:
|
||||||
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
|
logging.debug("__init__: DEBUG is set to True")
|
||||||
|
|
||||||
self.domain = domain
|
self.domain = domain
|
||||||
self.tld = self.domain.split(".")[-1]
|
self.tld = self.domain.split(".")[-1]
|
||||||
|
|
||||||
@ -22,32 +27,48 @@ 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)
|
||||||
|
|
||||||
|
logging.debug("__init__: Setting initial variables.. self.currPath = %s / self.tldPath = %s / self.tldList = %s"
|
||||||
|
%(self.currPath, self.tldPath, self.tldList))
|
||||||
|
|
||||||
self.settings = {}
|
self.settings = {}
|
||||||
|
|
||||||
if self.tld in self.tldList:
|
if self.tld in self.tldList:
|
||||||
|
logging.debug("__init__: Loading tld configuration file...")
|
||||||
|
|
||||||
_settings = {}
|
_settings = {}
|
||||||
execfile(os.path.join(self.tldPath, self.tld), {}, _settings)
|
execfile(os.path.join(self.tldPath, self.tld), {}, _settings)
|
||||||
|
|
||||||
if "server" in _settings:
|
if "server" in _settings:
|
||||||
|
logging.debug("__init__: Settings: %s"%(_settings["server"]))
|
||||||
self.settings.update(_settings["server"])
|
self.settings.update(_settings["server"])
|
||||||
|
else:
|
||||||
|
logging.debug("__init__: No server settings found")
|
||||||
|
|
||||||
def chooseServer(self):
|
def chooseServer(self):
|
||||||
if "host" in self.settings:
|
if "host" in self.settings:
|
||||||
|
logging.debug("chooseServer: Whois server addr: %s"%(self.settings["host"]))
|
||||||
return self.settings["host"]
|
return self.settings["host"]
|
||||||
else:
|
else:
|
||||||
|
logging.debug("chooseServer: Whois server addr: %s"%(self.tld + ".whois-servers.net"))
|
||||||
return self.tld + ".whois-servers.net"
|
return self.tld + ".whois-servers.net"
|
||||||
|
|
||||||
def sendQuery(self, whoisServer):
|
def sendQuery(self, whoisServer):
|
||||||
|
logging.debug("sendQuery: Connecting to whois server")
|
||||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
s.connect((whoisServer, 43))
|
s.connect((whoisServer, 43))
|
||||||
|
|
||||||
except:
|
except:
|
||||||
# FIXME: Create a exception class for this
|
# FIXME: Create a exception class for this
|
||||||
print "ERROR Could not connect to whois server %s"%(whoisServer)
|
logging.error("sendQuery: Error connecting to whois server %s"%(whoisServer))
|
||||||
return False
|
return False
|
||||||
|
|
||||||
s.send(self.domain + "\r\n")
|
msg = self.domain + "\r\n"
|
||||||
|
|
||||||
|
logging.debug("sendQuery: Sending data.. %s"%(msg))
|
||||||
|
|
||||||
|
s.send(msg)
|
||||||
|
|
||||||
result = ""
|
result = ""
|
||||||
|
|
||||||
@ -59,13 +80,19 @@ class Whois(object):
|
|||||||
|
|
||||||
result += buffer
|
result += buffer
|
||||||
|
|
||||||
return result.replace("\r\n", "\n")
|
finalResult = result.replace("\r\n", "\n")
|
||||||
|
|
||||||
|
logging.debug("sendQuery: result: %s"%(finalResult))
|
||||||
|
|
||||||
|
return finalResult
|
||||||
|
|
||||||
def query(self, redirect=True):
|
def query(self, redirect=True):
|
||||||
whoisServer = self.chooseServer()
|
whoisServer = self.chooseServer()
|
||||||
result = self.sendQuery(whoisServer)
|
result = self.sendQuery(whoisServer)
|
||||||
|
|
||||||
if redirect and "redirect" in self.settings:
|
if redirect and "redirect" in self.settings:
|
||||||
|
logging.debug("query: Redirection found. Connecting to given server address")
|
||||||
|
|
||||||
redirection = re.findall(self.settings["redirect"], result, re.MULTILINE)
|
redirection = re.findall(self.settings["redirect"], result, re.MULTILINE)
|
||||||
|
|
||||||
while redirection and len(redirection) >= 1:
|
while redirection and len(redirection) >= 1:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user