Log everything

This commit is contained in:
Larry Kim 2013-02-17 02:52:45 +09:00
parent aa66f20fcc
commit 7b49fb2a74
2 changed files with 54 additions and 8 deletions

View File

@ -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

View File

@ -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: