diff options
author | martin.von.loewis <devnull@localhost> | 2010-01-02 14:28:43 +0000 |
---|---|---|
committer | martin.von.loewis <devnull@localhost> | 2010-01-02 14:28:43 +0000 |
commit | b43387f9813a2e5010b8ad26e5e7cdf30ce2456f (patch) | |
tree | 5cb814a88c6cb04e9eb412e04f439f6019e1e7a2 /standalone.py | |
parent | 55c396ddf103f8a8105065733d3cf5e1b4094690 (diff) | |
download | decorator-b43387f9813a2e5010b8ad26e5e7cdf30ce2456f.tar.gz |
Support interaction over stdin/out.
Diffstat (limited to 'standalone.py')
-rwxr-xr-x[-rw-r--r--] | standalone.py | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/standalone.py b/standalone.py index 85be2cf..f0cd1da 100644..100755 --- a/standalone.py +++ b/standalone.py @@ -1,5 +1,5 @@ #!/usr/bin/python -import config, webui, BaseHTTPServer, urllib +import config, webui, BaseHTTPServer, urllib, sys, getopt class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): config = config.Config("config.ini") @@ -25,11 +25,11 @@ class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): query = '' env = {} - env['SERVER_SOFTWARE'] = self.version_string() - env['SERVER_NAME'] = self.server.server_name + #env['SERVER_SOFTWARE'] = self.version_string() + #env['SERVER_NAME'] = self.server.server_name + #env['SERVER_PORT'] = str(self.server.server_port) env['GATEWAY_INTERFACE'] = 'CGI/1.1' env['SERVER_PROTOCOL'] = self.protocol_version - env['SERVER_PORT'] = str(self.server.server_port) env['REQUEST_METHOD'] = self.command uqrest = urllib.unquote(rest) env['PATH_INFO'] = uqrest @@ -84,5 +84,31 @@ class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): webui.WebUI(self, env).run() do_GET = do_POST = run -httpd = BaseHTTPServer.HTTPServer(('',8000), RequestHandler) -httpd.serve_forever() +class StdinoutHandler(RequestHandler): + def __init__(self): + # request, client_address, server + RequestHandler.__init__(self, None, ('',0), None) + def setup(self): + self.rfile = sys.stdin + #import StringIO + #self.rfile = StringIO.StringIO('GET /pypi HTTP/1.0\r\n\r\n') + self.wfile = sys.stdout + +def main(): + port = 8000 + opts, args = getopt.getopt(sys.argv[1:], 'ip:', + ['interactive', 'port=']) + assert not args + for opt, val in opts: + if opt in ('-i', '--interactive'): + port = None + elif opt in ('-p', '--port'): + port = int(val) + if port: + httpd = BaseHTTPServer.HTTPServer(('',8000), RequestHandler) + httpd.serve_forever() + else: + StdinoutHandler() + +if __name__=='__main__': + main() |