summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core.py24
1 files changed, 17 insertions, 7 deletions
diff --git a/core.py b/core.py
index 430bdf2..44e3f90 100644
--- a/core.py
+++ b/core.py
@@ -1,9 +1,11 @@
import socketserver
import ipaddr
+import re
class Daemon():
def __init__(self, data):
- self.data = data
+ self.data = data
+ self.domain_regexp = re.compile("(?!-)[A-Z\d-]{1,63}(?<!-)$", re.IGNORECASE)
def query(self, q):
if self.is_ip(q):
@@ -54,13 +56,21 @@ class Daemon():
def search_person(self, query):
pass
- # TODO
def is_ip(self, query):
- return True
-
- # TODO
- def is_domain(self, query):
- pass
+ try:
+ ipaddr.IPAddress(query)
+ return True
+ except ValueError:
+ return False
+
+ def is_domain(self, hostname):
+ if len(hostname) > 255:
+ return False
+
+ if hostname[-1:] == ".":
+ hostname = hostname[:-1] # strip exactly one dot from the right, if present
+
+ return all(self.domain_regexp.match(x) for x in hostname.split("."))
# TODO
def get_help(self):
nihil fit ex nihilo