From 7500f59ce0dbd8d376c008001dd638ad2844ab2b Mon Sep 17 00:00:00 2001
From: Camil Staps
Date: Mon, 23 May 2016 22:01:31 +0200
Subject: Framework 2

---
 project2/proj2_s4498062/dns/server.py | 53 +++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 project2/proj2_s4498062/dns/server.py

(limited to 'project2/proj2_s4498062/dns/server.py')

diff --git a/project2/proj2_s4498062/dns/server.py b/project2/proj2_s4498062/dns/server.py
new file mode 100644
index 0000000..d4e3109
--- /dev/null
+++ b/project2/proj2_s4498062/dns/server.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python2
+
+""" A recursive DNS server
+
+This module provides a recursive DNS server. You will have to implement this
+server using the algorithm described in section 4.3.2 of RFC 1034.
+"""
+
+from threading import Thread
+
+
+class RequestHandler(Thread):
+    """ A handler for requests to the DNS server """
+
+    def __init__(self):
+        """ Initialize the handler thread """
+        super(RequestHandler, self).__init__()
+        self.daemon = True
+
+    def run(self):
+        """ Run the handler thread """
+        # TODO: Handle DNS request
+        pass
+
+
+class Server(object):
+    """ A recursive DNS server """
+
+    def __init__(self, port, caching, ttl):
+        """ Initialize the server
+
+        Args:
+            port (int): port that server is listening on
+            caching (bool): server uses resolver with caching if true
+            ttl (int): ttl for records (if > 0) of cache
+        """
+        self.caching = caching
+        self.ttl = ttl
+        self.port = port
+        self.done = False
+        # TODO: create socket
+
+    def serve(self):
+        """ Start serving request """
+        # TODO: start listening
+        while not self.done:
+            # TODO: receive request and open handler
+            pass
+
+    def shutdown(self):
+        """ Shutdown the server """
+        self.done = True
+        # TODO: shutdown socket
-- 
cgit v1.2.3