]> git.pld-linux.org Git - projects/pld-builder.new.git/blob - PLD_Builder/request_handler_server.py
- error already contains error type prefix
[projects/pld-builder.new.git] / PLD_Builder / request_handler_server.py
1 #!/usr/bin/python
2
3 import socket
4 import string
5 import cgi
6 import time
7 import log
8 import sys
9 import traceback
10 from config import config, init_conf
11
12 from os import curdir, sep
13 from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
14
15 import request_handler
16
17 class MyHandler(BaseHTTPRequestHandler):
18
19         def do_GET(self):
20                 self.send_error(401);
21
22         def do_POST(self):
23                 global rootnode
24                 try:
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])
29                                 self.send_error(401)
30                                 self.end_headers()
31                                 return
32
33                         query = self.rfile.read(length)
34
35                         filename = self.headers.getheader('x-filename')
36
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))
41                                 self.end_headers()
42                                 return
43
44                         self.send_response(200)
45                         self.end_headers()
46
47                 except Exception, e:
48                         self.send_error(500, "%s: %s" % (filename, e))
49                         self.end_headers()
50                         log.error("request_handler_server: [%s]: exception: %s\n%s" % (self.client_address[0], e, traceback.format_exc()))
51                         raise
52                         pass
53
54 def main():
55         socket.setdefaulttimeout(30)
56         try:
57                 init_conf()
58                 host = ""
59                 port = config.request_handler_server_port
60
61                 try:
62                         server = HTTPServer((host, port), MyHandler)
63                 except Exception, e:
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)
66                         sys.exit(1)
67
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')
72                 server.socket.close()
73
74 if __name__ == '__main__':
75         main()
76
This page took 0.124287 seconds and 4 git commands to generate.