コード例 #1
0
ファイル: __init__.py プロジェクト: vitaminmoo/unnaturalcode
 def _parse_fork_request(self, conn, client_addr, request):
     if request.startswith("fork-env "):
         while not request.endswith("end\n"):
             request += osutils.read_bytes_from_socket(conn)
         command, env = request[9:].split("\n", 1)
     else:
         command = request[5:].strip()
         env = "end\n"  # No env set.
     try:
         command_argv = self.command_to_argv(command)
         env = self.parse_env(env)
     except Exception as e:
         # TODO: Log the traceback?
         self.log(client_addr, "command or env parsing failed: %r" % (str(e),))
         conn.sendall("FAILURE\ncommand or env parsing failed: %r" % (str(e),))
     else:
         return command_argv, env
     return None, None
コード例 #2
0
 def serve_one_connection(self, conn, client_addr):
     request = ''
     while '\n' not in request:
         request += osutils.read_bytes_from_socket(conn)
     # telnet likes to use '\r\n' rather than '\n', and it is nice to have
     # an easy way to debug.
     request = request.replace('\r\n', '\n')
     self.log(client_addr, 'request: %r' % (request,))
     if request == 'hello\n':
         conn.sendall('ok\nyep, still alive\n')
         self.log_information()
         conn.close()
     elif request == 'quit\n':
         self._should_terminate.set()
         conn.sendall('ok\nquit command requested... exiting\n')
         conn.close()
     elif request.startswith('child_connect_timeout '):
         try:
             value = int(request.split(' ', 1)[1])
         except ValueError as e:
             conn.sendall('FAILURE: %r\n' % (e,))
         else:
             self._child_connect_timeout = value
             conn.sendall('ok\n')
         conn.close()
     elif request.startswith('fork ') or request.startswith('fork-env '):
         command_argv, env = self._parse_fork_request(conn, client_addr,
                                                      request)
         if command_argv is not None:
             # See [Decision #7]
             # TODO: Do we want to limit the number of children? And/or
             #       prefork additional instances? (the design will need to
             #       change if we prefork and run arbitrary commands.)
             self.fork_one_request(conn, client_addr, command_argv, env)
             # We don't close the conn like other code paths, since we use
             # it again later.
         else:
             conn.close()
     else:
         self.log(client_addr, 'FAILURE: unknown request: %r' % (request,))
         # See [Decision #8]
         conn.sendall('FAILURE\nunknown request: %r\n' % (request,))
         conn.close()
コード例 #3
0
ファイル: __init__.py プロジェクト: vitaminmoo/unnaturalcode
 def serve_one_connection(self, conn, client_addr):
     request = ""
     while "\n" not in request:
         request += osutils.read_bytes_from_socket(conn)
     # telnet likes to use '\r\n' rather than '\n', and it is nice to have
     # an easy way to debug.
     request = request.replace("\r\n", "\n")
     self.log(client_addr, "request: %r" % (request,))
     if request == "hello\n":
         conn.sendall("ok\nyep, still alive\n")
         self.log_information()
         conn.close()
     elif request == "quit\n":
         self._should_terminate.set()
         conn.sendall("ok\nquit command requested... exiting\n")
         conn.close()
     elif request.startswith("child_connect_timeout "):
         try:
             value = int(request.split(" ", 1)[1])
         except ValueError as e:
             conn.sendall("FAILURE: %r\n" % (e,))
         else:
             self._child_connect_timeout = value
             conn.sendall("ok\n")
         conn.close()
     elif request.startswith("fork ") or request.startswith("fork-env "):
         command_argv, env = self._parse_fork_request(conn, client_addr, request)
         if command_argv is not None:
             # See [Decision #7]
             # TODO: Do we want to limit the number of children? And/or
             #       prefork additional instances? (the design will need to
             #       change if we prefork and run arbitrary commands.)
             self.fork_one_request(conn, client_addr, command_argv, env)
             # We don't close the conn like other code paths, since we use
             # it again later.
         else:
             conn.close()
     else:
         self.log(client_addr, "FAILURE: unknown request: %r" % (request,))
         # See [Decision #8]
         conn.sendall("FAILURE\nunknown request: %r\n" % (request,))
         conn.close()
コード例 #4
0
 def _parse_fork_request(self, conn, client_addr, request):
     if request.startswith('fork-env '):
         while not request.endswith('end\n'):
             request += osutils.read_bytes_from_socket(conn)
         command, env = request[9:].split('\n', 1)
     else:
         command = request[5:].strip()
         env = 'end\n'  # No env set.
     try:
         command_argv = self.command_to_argv(command)
         env = self.parse_env(env)
     except Exception as e:
         # TODO: Log the traceback?
         self.log(client_addr, 'command or env parsing failed: %r'
                               % (str(e),))
         conn.sendall('FAILURE\ncommand or env parsing failed: %r'
                      % (str(e),))
     else:
         return command_argv, env
     return None, None
コード例 #5
0
ファイル: medium.py プロジェクト: pombreda/dist-packages
 def _read_bytes(self, desired_count):
     return osutils.read_bytes_from_socket(self.socket,
                                           self._report_activity)
コード例 #6
0
ファイル: medium.py プロジェクト: pombreda/dist-packages
 def _read_bytes(self, count):
     """See SmartClientMedium.read_bytes."""
     if not self._connected:
         raise errors.MediumNotConnected(self)
     return osutils.read_bytes_from_socket(self._socket,
                                           self._report_activity)
コード例 #7
0
ファイル: medium.py プロジェクト: GymWenFLL/tpp_libs
 def _read_bytes(self, desired_count):
     return osutils.read_bytes_from_socket(
         self.socket, self._report_activity)
コード例 #8
0
ファイル: medium.py プロジェクト: GymWenFLL/tpp_libs
 def _read_bytes(self, count):
     """See SmartClientMedium.read_bytes."""
     if not self._connected:
         raise errors.MediumNotConnected(self)
     return osutils.read_bytes_from_socket(
         self._socket, self._report_activity)