#!/usr/bin/env python2

# httpEcho2.py
#    Version using SocketServer module

from SocketServer import TCPServer, StreamRequestHandler
from socket import gethostname
from string import join

DEBUG = 1    # debugging flag
PORT = 2080  # default port

RESPONSE = \
"""HTTP/1.1 200 OK
Connection: Close
Content_type: text/html

<html>
<head><title>HTTPEcho Response</title>
</head>
<body>
<pre>
%s
</pre>
</body>
</html>"""

class EchoHandler(StreamRequestHandler):

    def handle(self):
        print "connection from", self.client_address

        # Read lines until end of headers found
        lines = []
        while 1:
            line = self.rfile.readline()
            if line == "\r\n": break       #empty line at end of header
            lines.append(line)

        print "Got request, sending response"   
        self.wfile.write(RESPONSE % join(lines,""))
        print "Response sent"

def start_server(port):
    server_address = (gethostname(),port)
    server = TCPServer(server_address, EchoHandler)
    print "Echo server started on port", port
    server.serve_forever()

if __name__ == "__main__":
    import sys
    if len(sys.argv) == 2:
        start_server(int(sys.argv[1]))
    else:
        start_server(PORT)



    


        

