Пример #1
0
def _write_message(sock: ssl.SSLSocket, message: Any):
    class RequestEncoder(json.JSONEncoder):
        def default(self, o):
            return o.__dict__

    message = json.dumps(message, cls=RequestEncoder).encode()
    sock.sendall(struct.pack(">Q", len(message)))
    sock.sendall(message)
Пример #2
0
 def process(self, remote: ssl.SSLSocket):
     self.server.status = TUNNEL_PROCESSING
     logger.debug('Processing tunnel with ticket %s', self.server.ticket)
     # Process data until stop requested or connection closed
     try:
         while not self.server.stop_flag.is_set():
             r, _w, _x = select.select([self.request, remote], [], [], 1.0)
             if self.request in r:
                 data = self.request.recv(BUFFER_SIZE)
                 if not data:
                     break
                 remote.sendall(data)
             if remote in r:
                 data = remote.recv(BUFFER_SIZE)
                 if not data:
                     break
                 self.request.sendall(data)
         logger.debug('Finished tunnel with ticekt %s', self.server.ticket)
     except Exception as e:
         pass