From 458120dd40db6b4df55a4e96b650e16798ef06a0 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 3 May 2011 11:25:13 +0000 Subject: add hg and python --- sys/src/cmd/python/Demo/sockets/rpythond.py | 52 +++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 sys/src/cmd/python/Demo/sockets/rpythond.py (limited to 'sys/src/cmd/python/Demo/sockets/rpythond.py') diff --git a/sys/src/cmd/python/Demo/sockets/rpythond.py b/sys/src/cmd/python/Demo/sockets/rpythond.py new file mode 100755 index 000000000..81397d683 --- /dev/null +++ b/sys/src/cmd/python/Demo/sockets/rpythond.py @@ -0,0 +1,52 @@ +#! /usr/bin/env python + +# Remote python server. +# Execute Python commands remotely and send output back. +# WARNING: This version has a gaping security hole -- it accepts requests +# from any host on the Internet! + +import sys +from socket import * +import StringIO +import traceback + +PORT = 4127 +BUFSIZE = 1024 + +def main(): + if len(sys.argv) > 1: + port = int(eval(sys.argv[1])) + else: + port = PORT + s = socket(AF_INET, SOCK_STREAM) + s.bind(('', port)) + s.listen(1) + while 1: + conn, (remotehost, remoteport) = s.accept() + print 'connected by', remotehost, remoteport + request = '' + while 1: + data = conn.recv(BUFSIZE) + if not data: + break + request = request + data + reply = execute(request) + conn.send(reply) + conn.close() + +def execute(request): + stdout = sys.stdout + stderr = sys.stderr + sys.stdout = sys.stderr = fakefile = StringIO.StringIO() + try: + try: + exec request in {}, {} + except: + print + traceback.print_exc(100) + finally: + sys.stderr = stderr + sys.stdout = stdout + return fakefile.getvalue() + +main() -- cgit v1.2.3