aboutsummaryrefslogtreecommitdiff
path: root/scripts/http-server.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/http-server.py')
-rw-r--r--scripts/http-server.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/scripts/http-server.py b/scripts/http-server.py
new file mode 100644
index 00000000..913cacd2
--- /dev/null
+++ b/scripts/http-server.py
@@ -0,0 +1,51 @@
+# $Id$
+
+import BaseHTTPServer, tlslite.api
+
+class requestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
+
+ def do_POST(self):
+ echo = ""
+ for h in self.headers:
+ echo += "%s: %s\n" % (h, self.headers[h])
+ self.query_string = self.rfile.read(int(self.headers["Content-Length"]))
+ echo += self.query_string
+
+ f = open("http-server.log", "a")
+ f.write(echo)
+ f.close()
+
+ self.send_response(200)
+ self.send_header("Content-Type", "application/x-wombat")
+ self.end_headers()
+
+ self.wfile.write(echo)
+
+class httpServer(tlslite.api.TLSSocketServerMixIn, BaseHTTPServer.HTTPServer):
+
+ def handshake(self, tlsConnection):
+ try:
+ tlsConnection.handshakeServer(certChain=certChain,
+ privateKey=privateKey,
+ sessionCache=sessionCache)
+ tlsConnection.ignoreAbruptClose = True
+ return True
+ except tlslite.api.TLSError, error:
+ print "TLS handshake failure:", str(error)
+ return False
+
+f = open("biz-certs/Carol-EE.cer", "r")
+x509 = tlslite.api.X509()
+x509.parse(f.read())
+f.close()
+
+certChain = tlslite.api.X509CertChain([x509])
+
+f = open("biz-certs/Carol-EE.key", "r")
+privateKey = tlslite.api.parsePEMKey(f.read(), private=True)
+f.close()
+
+sessionCache = tlslite.api.SessionCache()
+
+httpd = httpServer(("", 8080), requestHandler)
+httpd.serve_forever()