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