symbian-qemu-0.9.1-12/python-2.6.1/Demo/sockets/rpythond.py
changeset 1 2fb8b9db1c86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/python-2.6.1/Demo/sockets/rpythond.py	Fri Jul 31 15:01:17 2009 +0100
@@ -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()