diff options
author | Camil Staps | 2016-05-23 22:01:31 +0200 |
---|---|---|
committer | Camil Staps | 2016-05-23 22:01:31 +0200 |
commit | 7500f59ce0dbd8d376c008001dd638ad2844ab2b (patch) | |
tree | 7c7ce48b737ed7a34534375ee2891e026b26455a /project2/proj2_s4498062/dns/server.py | |
parent | Assignment 7, deel 2 (diff) |
Framework 2
Diffstat (limited to 'project2/proj2_s4498062/dns/server.py')
-rw-r--r-- | project2/proj2_s4498062/dns/server.py | 53 |
1 files changed, 53 insertions, 0 deletions
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 |