LEFT | RIGHT |
1 #!/usr/bin/env python3 | 1 #!/usr/bin/env python3 |
2 | 2 |
3 import argparse | 3 import argparse |
4 import re | 4 import re |
5 import sys | 5 import sys |
6 import threading | 6 import threading |
7 import traceback | 7 import traceback |
8 | 8 |
9 from http.server import BaseHTTPRequestHandler, HTTPServer | 9 from http.server import BaseHTTPRequestHandler, HTTPServer |
10 from string import Template | 10 from string import Template |
(...skipping 22 matching lines...) Expand all Loading... |
33 | 33 |
34 def write_info(self, args): | 34 def write_info(self, args): |
35 message = Template(self.format).safe_substitute(args) + '\n' | 35 message = Template(self.format).safe_substitute(args) + '\n' |
36 with _lock: | 36 with _lock: |
37 self.output.write(message) | 37 self.output.write(message) |
38 self.output.flush() | 38 self.output.flush() |
39 | 39 |
40 def do_POST(self): | 40 def do_POST(self): |
41 status = 200 | 41 status = 200 |
42 content = bytes(self.response, 'UTF-8') | 42 content = bytes(self.response, 'UTF-8') |
43 body_len = int(self.headers.get('content-length', 0)) | 43 request_body_len = int(self.headers.get('content-length', 0)) |
44 body = self.rfile.read(body_len).decode('UTF-8') | 44 request_body = self.rfile.read(body_len).decode('UTF-8') |
45 values = { | 45 values = { |
46 'remote_addr': self.address_string(), | 46 'remote_addr': self.address_string(), |
47 'time_local': self.log_date_time_string(), | 47 'time_local': self.log_date_time_string(), |
48 'request': self.requestline, | 48 'request': self.requestline, |
49 'status': status, | 49 'status': status, |
50 'bytes_sent': len(content), | 50 'bytes_sent': len(content), |
51 'body': body, | 51 'request_body': request_body, |
52 } | 52 } |
53 values.update(self.get_header_values()) | 53 values.update(self.get_header_values()) |
54 try: | 54 try: |
55 self.write_info(values) | 55 self.write_info(values) |
56 self.send_simple_response(status, content) | 56 self.send_simple_response(status, content) |
57 except: | 57 except: |
58 traceback.print_exc(file=sys.stderr) | 58 traceback.print_exc(file=sys.stderr) |
59 self.send_simple_response(500) | 59 self.send_simple_response(500) |
60 | 60 |
61 | 61 |
(...skipping 20 matching lines...) Expand all Loading... |
82 fh = open(sys.stdout.fileno(), 'w', closefd=False) | 82 fh = open(sys.stdout.fileno(), 'w', closefd=False) |
83 try: | 83 try: |
84 Handler.output = fh | 84 Handler.output = fh |
85 Handler.format = args.format | 85 Handler.format = args.format |
86 Handler.response = args.response | 86 Handler.response = args.response |
87 server_address = ('', args.port) | 87 server_address = ('', args.port) |
88 httpd = HTTPServer(server_address, Handler) | 88 httpd = HTTPServer(server_address, Handler) |
89 httpd.serve_forever() | 89 httpd.serve_forever() |
90 finally: | 90 finally: |
91 fh.close() | 91 fh.close() |
LEFT | RIGHT |