12 from config import config, init_conf
14 from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
16 import request_handler
19 class MyHandler(BaseHTTPRequestHandler):
27 length = int(self.headers.get('content-length'))
28 filename = self.headers.get('x-filename')
30 log.error("request_handler_server: [%s]: 401 Unauthorized" % self.client_address[0])
35 query = self.rfile.read(length)
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)
47 except Exception as e:
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 css_src = os.path.join(os.path.dirname(__file__), 'style.css')
56 css_file = path.www_dir + "/style.css"
57 # skip if file exists and code is not newer
58 if os.path.exists(css_file) and os.stat(css_src).st_mtime < os.stat(css_file).st_mtime:
61 old_umask = os.umask(0o0022)
62 r = open(css_src, 'r')
63 f = open(css_file, "w")
70 js_src = os.path.join(os.path.dirname(__file__), 'script.js')
71 js_file = path.www_dir + '/script.js'
72 # skip if file exists and code is not newer
73 if os.path.exists(js_file) and os.stat(js_src).st_mtime < os.stat(js_file).st_mtime:
76 old_umask = os.umask(0o0022)
78 f = open(js_file, 'w')
84 def main(srv_ssl=False):
87 socket.setdefaulttimeout(30)
91 port = config.request_handler_server_port
93 port = config.request_handler_server_ssl_port
96 server = ThreadingHTTPServer((host, port), MyHandler)
98 server.socket = ssl.wrap_socket (server.socket,
99 keyfile = path.conf_dir + "/" + config.request_handler_server_ssl_key,
100 certfile = path.conf_dir + "/" + config.request_handler_server_ssl_cert,
101 ca_certs = "/etc/certs/ca-certificates.crt",
103 except Exception as e:
104 log.notice("request_handler_server: can't start server on [%s:%d], ssl=%s: %s" % (host, port, str(srv_ssl), e))
105 print >> sys.stderr, "ERROR: Can't start server on [%s:%d], ssl=%s: %s" % (host, port, str(srv_ssl), e)
108 log.notice('request_handler_server: started on [%s:%d], ssl=%s...' % (host, port, str(srv_ssl)))
109 server.serve_forever()
110 except KeyboardInterrupt:
111 log.notice('request_handler_server: ^C received, shutting down server')
112 server.socket.close()
114 if __name__ == '__main__':
116 if len(sys.argv) == 2 and sys.argv[1] == "ssl":