symbian-qemu-0.9.1-12/python-2.6.1/Demo/sockets/rpythond.py
author Mike Kinghan <mikek@symbian.org>
Wed, 04 Aug 2010 15:41:26 +0100
branchGCC_SURGE
changeset 95 285922d13199
parent 1 2fb8b9db1c86
permissions -rw-r--r--
Correction for the fix for Bug 3508 - Persistent storage support breaks Linux compatibility. A 2nd `make install' will fail attempting to create symlink libnvmemmory.so already created by 1st install. Install should pre-emptively delete it.

#! /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()