]> git.proxmox.com Git - mirror_edk2.git/blame - AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/rpythond.py
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Demo / sockets / rpythond.py
CommitLineData
4710c53d 1#! /usr/bin/env python\r
2\r
3# Remote python server.\r
4# Execute Python commands remotely and send output back.\r
5# WARNING: This version has a gaping security hole -- it accepts requests\r
6# from any host on the Internet!\r
7\r
8import sys\r
9from socket import *\r
10import StringIO\r
11import traceback\r
12\r
13PORT = 4127\r
14BUFSIZE = 1024\r
15\r
16def main():\r
17 if len(sys.argv) > 1:\r
18 port = int(eval(sys.argv[1]))\r
19 else:\r
20 port = PORT\r
21 s = socket(AF_INET, SOCK_STREAM)\r
22 s.bind(('', port))\r
23 s.listen(1)\r
24 while 1:\r
25 conn, (remotehost, remoteport) = s.accept()\r
26 print 'connected by', remotehost, remoteport\r
27 request = ''\r
28 while 1:\r
29 data = conn.recv(BUFSIZE)\r
30 if not data:\r
31 break\r
32 request = request + data\r
33 reply = execute(request)\r
34 conn.send(reply)\r
35 conn.close()\r
36\r
37def execute(request):\r
38 stdout = sys.stdout\r
39 stderr = sys.stderr\r
40 sys.stdout = sys.stderr = fakefile = StringIO.StringIO()\r
41 try:\r
42 try:\r
43 exec request in {}, {}\r
44 except:\r
45 print\r
46 traceback.print_exc(100)\r
47 finally:\r
48 sys.stderr = stderr\r
49 sys.stdout = stdout\r
50 return fakefile.getvalue()\r
51\r
52main()\r