Add python-eventlet package to MOS 8.0 repository
[packages/trusty/python-eventlet.git] / eventlet / eventlet / backdoor.py
diff --git a/eventlet/eventlet/backdoor.py b/eventlet/eventlet/backdoor.py
deleted file mode 100644 (file)
index 2067772..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-from __future__ import print_function
-
-from code import InteractiveConsole
-import errno
-import socket
-import sys
-
-import eventlet
-from eventlet import hubs
-from eventlet.support import greenlets, get_errno
-
-try:
-    sys.ps1
-except AttributeError:
-    sys.ps1 = '>>> '
-try:
-    sys.ps2
-except AttributeError:
-    sys.ps2 = '... '
-
-
-class FileProxy(object):
-    def __init__(self, f):
-        self.f = f
-
-    def isatty(self):
-        return True
-
-    def flush(self):
-        pass
-
-    def write(self, data, *a, **kw):
-        self.f.write(data, *a, **kw)
-        self.f.flush()
-
-    def readline(self, *a):
-        return self.f.readline(*a).replace('\r\n', '\n')
-
-    def __getattr__(self, attr):
-        return getattr(self.f, attr)
-
-
-# @@tavis: the `locals` args below mask the built-in function.  Should
-# be renamed.
-class SocketConsole(greenlets.greenlet):
-    def __init__(self, desc, hostport, locals):
-        self.hostport = hostport
-        self.locals = locals
-        # mangle the socket
-        self.desc = FileProxy(desc)
-        greenlets.greenlet.__init__(self)
-
-    def run(self):
-        try:
-            console = InteractiveConsole(self.locals)
-            console.interact()
-        finally:
-            self.switch_out()
-            self.finalize()
-
-    def switch(self, *args, **kw):
-        self.saved = sys.stdin, sys.stderr, sys.stdout
-        sys.stdin = sys.stdout = sys.stderr = self.desc
-        greenlets.greenlet.switch(self, *args, **kw)
-
-    def switch_out(self):
-        sys.stdin, sys.stderr, sys.stdout = self.saved
-
-    def finalize(self):
-        # restore the state of the socket
-        self.desc = None
-        print("backdoor closed to %s:%s" % self.hostport)
-
-
-def backdoor_server(sock, locals=None):
-    """ Blocking function that runs a backdoor server on the socket *sock*,
-    accepting connections and running backdoor consoles for each client that
-    connects.
-
-    The *locals* argument is a dictionary that will be included in the locals()
-    of the interpreters.  It can be convenient to stick important application
-    variables in here.
-    """
-    print("backdoor server listening on %s:%s" % sock.getsockname())
-    try:
-        try:
-            while True:
-                socketpair = sock.accept()
-                backdoor(socketpair, locals)
-        except socket.error as e:
-            # Broken pipe means it was shutdown
-            if get_errno(e) != errno.EPIPE:
-                raise
-    finally:
-        sock.close()
-
-
-def backdoor(conn_info, locals=None):
-    """Sets up an interactive console on a socket with a single connected
-    client.  This does not block the caller, as it spawns a new greenlet to
-    handle the console.  This is meant to be called from within an accept loop
-    (such as backdoor_server).
-    """
-    conn, addr = conn_info
-    host, port = addr
-    print("backdoor to %s:%s" % (host, port))
-    fl = conn.makefile("rw")
-    console = SocketConsole(fl, (host, port), locals)
-    hub = hubs.get_hub()
-    hub.schedule_call_global(0, console.switch)
-
-
-if __name__ == '__main__':
-    backdoor_server(eventlet.listen(('127.0.0.1', 9000)), {})