]> git.pld-linux.org Git - projects/pld-builder.new.git/blobdiff - PLD_Builder/request_handler_server.py
Switch to Python 3 for rpm.org rpm
[projects/pld-builder.new.git] / PLD_Builder / request_handler_server.py
index 5a51fbe4f4919d25ff4782e2f861ed25cce07656..d944676bad70e1cc6e43bdef6a352cc88f34ca5c 100644 (file)
@@ -1,10 +1,11 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 
 import socket
 import string
 import cgi
 import time
 import log
+import ssl
 import sys
 import traceback
 import os
@@ -17,131 +18,102 @@ import path
 
 class MyHandler(BaseHTTPRequestHandler):
 
-       def do_GET(self):
-               self.send_error(401);
-
-       def do_POST(self):
-               global rootnode
-               try:
-                       length = int(self.headers.getheader('content-length'))
-                       ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
-                       if ctype != 'application/x-www-form-urlencoded':
-                               log.error("request_handler_server: [%s]: 401 Unauthorized" % self.client_address[0])
-                               self.send_error(401)
-                               self.end_headers()
-                               return
-
-                       query = self.rfile.read(length)
-
-                       filename = self.headers.getheader('x-filename')
-
-                       if not request_handler.handle_request_main(query, filename = filename):
-                               error = log.last_log();
-                               log.error("request_handler_server: [%s]: handle_request_main(..., %s) failed" % (self.client_address[0], filename))
-                               self.send_error(500, "%s: request failed. %s" % (filename, error))
-                               self.end_headers()
-                               return
-
-                       self.send_response(200)
-                       self.end_headers()
-
-               except Exception, e:
-                       self.send_error(500, "%s: %s" % (filename, e))
-                       self.end_headers()
-                       log.error("request_handler_server: [%s]: exception: %s\n%s" % (self.client_address[0], e, traceback.format_exc()))
-                       raise
-                       pass
+    def do_GET(self):
+        self.send_error(401);
+
+    def do_POST(self):
+        global rootnode
+        try:
+            length = int(self.headers.getheader('content-length'))
+            filename = self.headers.getheader('x-filename')
+            if not length:
+                log.error("request_handler_server: [%s]: 401 Unauthorized" % self.client_address[0])
+                self.send_error(401)
+                self.end_headers()
+                return
+
+            query = self.rfile.read(length)
+
+            if not request_handler.handle_request_main(query, filename = filename):
+                error = log.last_log();
+                log.error("request_handler_server: [%s]: handle_request_main(..., %s) failed" % (self.client_address[0], filename))
+                self.send_error(500, "%s: request failed. %s" % (filename, error))
+                self.end_headers()
+                return
+
+            self.send_response(200)
+            self.end_headers()
+
+        except Exception, e:
+            self.send_error(500, "%s: %s" % (filename, e))
+            self.end_headers()
+            log.error("request_handler_server: [%s]: exception: %s\n%s" % (self.client_address[0], e, traceback.format_exc()))
+            raise
+            pass
 
 def write_css():
-       css_file = path.www_dir + "/style.css"
-       # skip if file exists and code is not newer
-       if os.path.exists(css_file) and os.stat(__file__).st_mtime < os.stat(css_file).st_mtime:
-               return
-
-       # css from www.pld-linux.org wiki theme, using css usage firebug plugin to cleanup
-       css = """
-html {
-       background-color: white;
-       color: #5e5e5e;
-       font-family: Tahoma, Arial, Lucida Grande, sans-serif;
-       font-size: 0.75em;
-       line-height: 1.25em;
-}
-
-a {
-       text-decoration: underline;
-       color: #00f;
-}
-
-a:hover {
-       color: #00c;
-}
-
-@media screen, projection {
-       html {
-               background-color: #f3efe3;
-       }
-
-       body {
-               position: relative;
-       }
-
-       div {
-               background-color: white;
-               margin: 10px 0px;
-               padding: 2px;
-       }
-       div > a {
-               font-weight: bold;
-               color: #5e5e5e;
-       }
-       div > a:hover {
-               color: #5e5e5e;
-       }
-       div:target {
-               background-color: #ffffcc;
-               color: black;
-       }
-}
-@media print {
-       a {
-               background-color: inherit;
-               color: inherit;
-       }
-}
-
-@media projection {
-       html { line-height: 1.8em; }
-       body, b, a, p { font-size: 22pt; }
-}
-"""
-       old_umask = os.umask(0022)
-       f = open(css_file, "w")
-       f.write(css)
-       f.close()
-       os.umask(old_umask)
-
-def main():
-       write_css();
-       socket.setdefaulttimeout(30)
-       try:
-               init_conf()
-               host = ""
-               port = config.request_handler_server_port
-
-               try:
-                       server = HTTPServer((host, port), MyHandler)
-               except Exception, e:
-                       log.notice("request_handler_server: can't start server on [%s:%d]: %s" % (host, port, e))
-                       print >> sys.stderr, "ERROR: Can't start server on [%s:%d]: %s" % (host, port, e)
-                       sys.exit(1)
-
-               log.notice('request_handler_server: started on [%s:%d]...' % (host, port))
-               server.serve_forever()
-       except KeyboardInterrupt:
-               log.notice('request_handler_server: ^C received, shutting down server')
-               server.socket.close()
+    css_src = os.path.join(os.path.dirname(__file__), 'style.css')
+    css_file = path.www_dir + "/style.css"
+    # skip if file exists and code is not newer
+    if os.path.exists(css_file) and os.stat(css_src).st_mtime < os.stat(css_file).st_mtime:
+        return
+
+    old_umask = os.umask(0022)
+    r = open(css_src, 'r')
+    f = open(css_file, "w")
+    f.write(r.read())
+    f.close()
+    r.close()
+    os.umask(old_umask)
+
+def write_js():
+    js_src = os.path.join(os.path.dirname(__file__), 'script.js')
+    js_file = path.www_dir + '/script.js'
+    # skip if file exists and code is not newer
+    if os.path.exists(js_file) and os.stat(js_src).st_mtime < os.stat(js_file).st_mtime:
+        return
+
+    old_umask = os.umask(0022)
+    r = open(js_src, 'r')
+    f = open(js_file, 'w')
+    f.write(r.read())
+    f.close()
+    r.close()
+    os.umask(old_umask)
+
+def main(srv_ssl=False):
+    write_css();
+    write_js();
+    socket.setdefaulttimeout(30)
+    try:
+        init_conf()
+        host = ""
+        port = config.request_handler_server_port
+        if srv_ssl:
+            port = config.request_handler_server_ssl_port
+
+        try:
+            server = HTTPServer((host, port), MyHandler)
+            if srv_ssl:
+                server.socket = ssl.wrap_socket (server.socket,
+                                keyfile = config.request_handler_server_ssl_key,
+                                certfile = config.request_handler_server_ssl_cert,
+                                ca_certs = "/etc/certs/ca-certificates.crt",
+                                server_side=True)
+        except Exception, e:
+            log.notice("request_handler_server: can't start server on [%s:%d], ssl=%s: %s" % (host, port, str(srv_ssl), e))
+            print >> sys.stderr, "ERROR: Can't start server on [%s:%d], ssl=%s: %s" % (host, port, str(srv_ssl), e)
+            sys.exit(1)
+
+        log.notice('request_handler_server: started on [%s:%d], ssl=%s...' % (host, port, str(srv_ssl)))
+        server.serve_forever()
+    except KeyboardInterrupt:
+        log.notice('request_handler_server: ^C received, shutting down server')
+        server.socket.close()
 
 if __name__ == '__main__':
-       main()
+    srv_ssl = False
+    if len(sys.argv) == 2 and sys.argv[1] == "ssl":
+        srv_ssl = True
 
+    main(srv_ssl)
This page took 0.040939 seconds and 4 git commands to generate.