10 from config import config, init_conf
12 from os import curdir, sep
13 from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
15 import request_handler
17 class MyHandler(BaseHTTPRequestHandler):
25 length = int(self.headers.getheader('content-length'))
26 ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
27 if ctype != 'application/x-www-form-urlencoded':
28 log.error("request_handler_server: [%s]: 401 Unauthorized" % self.client_address[0])
33 query = self.rfile.read(length)
35 filename = self.headers.getheader('x-filename')
37 if not request_handler.handle_request_main(query, filename = filename):
38 error = log.last_log();
39 log.error("request_handler_server: [%s]: handle_request_main(..., %s) failed" % (self.client_address[0], filename))
40 self.send_error(500, "%s: request failed. %s" % (filename, error))
44 self.send_response(200)
48 self.send_error(500, "%s: %s" % (filename, e))
50 log.error("request_handler_server: [%s]: exception: %s\n%s" % (self.client_address[0], e, traceback.format_exc()))
55 socket.setdefaulttimeout(30)
59 port = config.request_handler_server_port
62 server = HTTPServer((host, port), MyHandler)
64 log.notice("request_handler_server: can't start server on [%s:%d]: %s" % (host, port, e))
65 print >> sys.stderr, "ERROR: Can't start server on [%s:%d]: %s" % (host, port, e)
68 log.notice('request_handler_server: started on [%s:%d]...' % (host, port))
69 server.serve_forever()
70 except KeyboardInterrupt:
71 log.notice('request_handler_server: ^C received, shutting down server')
74 if __name__ == '__main__':