12 from config import config, init_conf
14 from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
16 import request_handler
19 class MyHandler(BaseHTTPRequestHandler):
26 filename = "(unknown)"
28 length = int(self.headers.getheader('content-length'))
29 ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
30 if ctype != 'application/x-www-form-urlencoded':
31 log.error("request_handler_server: [%s]: 401 Unauthorized" % self.client_address[0])
36 query = self.rfile.read(length)
38 filename = self.headers.getheader('x-filename')
40 if not request_handler.handle_request_main(query, filename = filename):
41 error = log.last_log();
42 log.error("request_handler_server: [%s]: handle_request_main(..., %s) failed" % (self.client_address[0], filename))
43 self.send_error(500, "%s: request failed. %s" % (filename, error))
47 self.send_response(200)
51 self.send_error(500, "%s: %s" % (filename, e))
53 log.error("request_handler_server: [%s]: exception: %s\n%s" % (self.client_address[0], e, traceback.format_exc()))
58 css_src = os.path.join(os.path.dirname(__file__), 'style.css')
59 css_file = path.www_dir + "/style.css"
60 # skip if file exists and code is not newer
61 if os.path.exists(css_file) and os.stat(css_src).st_mtime < os.stat(css_file).st_mtime:
64 old_umask = os.umask(0022)
65 r = open(css_src, 'r')
66 f = open(css_file, "w")
73 js_src = os.path.join(os.path.dirname(__file__), 'script.js')
74 js_file = path.www_dir + '/script.js'
75 # skip if file exists and code is not newer
76 if os.path.exists(js_file) and os.stat(js_src).st_mtime < os.stat(js_file).st_mtime:
79 old_umask = os.umask(0022)
81 f = open(js_file, 'w')
87 def main(srv_ssl=False):
90 socket.setdefaulttimeout(30)
94 port = config.request_handler_server_port
96 port = config.request_handler_server_ssl_port
99 server = HTTPServer((host, port), MyHandler)
101 server.socket = ssl.wrap_socket (server.socket,
102 keyfile = config.request_handler_server_ssl_key,
103 certfile = config.request_handler_server_ssl_cert,
104 ca_certs = "/etc/certs/ca-certificates.crt",
107 log.notice("request_handler_server: can't start server on [%s:%d], ssl=%s: %s" % (host, port, str(srv_ssl), e))
108 print >> sys.stderr, "ERROR: Can't start server on [%s:%d], ssl=%s: %s" % (host, port, str(srv_ssl), e)
111 log.notice('request_handler_server: started on [%s:%d], ssl=%s...' % (host, port, str(srv_ssl)))
112 server.serve_forever()
113 except KeyboardInterrupt:
114 log.notice('request_handler_server: ^C received, shutting down server')
115 server.socket.close()
117 if __name__ == '__main__':
119 if len(sys.argv) == 2 and sys.argv[1] == "ssl":