def connect_socks(self, host, port): socksconn = None try: socksconn = socket.create_connection( (self.socksip, self.socksport), timeout=self.timeout) if not socksutils.basic_handshake_client(socksconn): socksconn.close() addrtype = socksutils.addr_type(host) socksutils.send_request(socksconn, cmd=socksmsg.CONNECT, addrtype=addrtype, dstaddr=host, dstport=port) reply = socksutils.read_reply(socksconn) if reply.rep != socksmsg.SUCCEEDED: log.info("error response %d returned from socks server" % reply.rep) socksconn.close() return None return socksconn except Exception as e: log.error("[Exception][connect_socks]: %s" % str(e)) if socksconn: socksconn.close() return None
def cmd_connect(self, req): self.socksconn.sendall(req.pack()) reply = read_reply(self.socksconn) resp = reply.pack() headers = [ (HEADER_SESSION_ID, self.sessionid), (HEADER_MSGTYPE, MSGTYPE_DATA) ] self.threads.append(gevent.spawn(self.meeks_write_to_socks_thread)) self.threads.append(gevent.spawn(self.meeks_read_from_socks_thread)) # clean_thread will join the other two threads, then clean resources gevent.spawn(self.meeks_clean_thread) self.status = SESSION_TCP return resp, headers
def cmd_udp_associate(self, req): self.udpsock = bind_local_udp(self.socksconn) self.allsocks.append(self.udpsock) addrtype, ip, port = sock_addr_info(self.udpsock) self.socksconn.sendall(Request(cmd=UDP_ASSOCIATE, addrtype=addrtype, dstaddr=ip, dstport=port).pack()) reply = read_reply(self.socksconn) resp = reply.pack() headers = [ (HEADER_SESSION_ID, self.sessionid), (HEADER_MSGTYPE, MSGTYPE_DATA) ] self.udp_associate = (reply.bndaddr, reply.bndport) self.threads.append(gevent.spawn(self.meeks_write_to_socks_thread)) self.threads.append(gevent.spawn(self.meeks_read_from_socks_thread)) # clean_thread will join the other two threads, then clean resources gevent.spawn(self.meeks_clean_thread) self.status = SESSION_UDP return resp, headers
def connect_socks(self, host, port): socksconn = None try: socksconn = socket.create_connection((self.socksip, self.socksport), timeout=self.timeout) if not socksutils.basic_handshake_client(socksconn): socksconn.close() addrtype = socksutils.addr_type(host) socksutils.send_request(socksconn, cmd=socksmsg.CONNECT, addrtype=addrtype, dstaddr=host, dstport=port) reply = socksutils.read_reply(socksconn) if reply.rep != socksmsg.SUCCEEDED: log.info("error response %d returned from socks server" % reply.rep) socksconn.close() return None return socksconn except Exception, e: log.error("[Exception][connect_socks]: %s" % str(e)) if socksconn: socksconn.close() return None