def thread(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: sock.connect(PARSER_SERVER_ADDR) except: prnt("Failed to connect:") prnt(traceback.format_exc()) wx.CallAfter(failureFunc) return stream = ByteStream() stream.writeByte(pkt.GET_KEY) stream.writeString(vanityKey) sock.send(stream.toString()) data = sock.recv(1024) sock.close() stream = ByteStream(data) success = stream.readByte() == 1 if success: key = stream.readString() wx.CallAfter(successFunc, key) else: wx.CallAfter(failureFunc)
def run(self): prnt("RaidServer: Booting up...") self.port = net.node.bind("swap:raid") self.centralSock.setblocking(False) while not self.stoppedEvent.isSet(): now = time() # Central server r, w, e = select([self.centralSock], [self.centralSock], [], 0) if r: data = self.centralSock.recv(1024) stream = ByteStream(data) packetType = stream.readByte() if self.port.connectionPending(): conn = self.port.accept() self.clientList.append({'conn': conn, 'playerInfo': None}) for client in self.clientList: conn = client['conn'] if conn.recvPending(): data = conn.recv() if data == None: playerName = client['playerInfo']['name'] if client[ 'playerInfo'] else "<NoInfo>" prnt("Client (%s) left raid, reason=%s" % (playerName, fuzion.formatError( conn.closedReason))) self.lastRaidUpdatePoke = time() self.clientList.remove(client) continue packetType = data.readByte() if packetType == pkt.PLAYER_UPDATE: self.processPlayerUpdate(client, data) if now - self.lastRaidUpdateSent > 2 and now - self.lastRaidUpdatePoke < 5: self.sendRaidUpdate() self.lastRaidUpdateSent = now sleep(0.1) self.port.close() for client in self.clientList: conn = client['conn'] conn.close() self.centralSock.close() prnt("RaidServer: Shutting down...")
def run(self): prnt("RaidServer: Booting up...") self.port = net.node.bind("swap:raid") self.centralSock.setblocking(False) while not self.stoppedEvent.isSet(): now = time() # Central server r, w, e = select([self.centralSock], [self.centralSock], [], 0) if r: data = self.centralSock.recv(1024) stream = ByteStream(data) packetType = stream.readByte() if self.port.connectionPending(): conn = self.port.accept() self.clientList.append({ 'conn': conn, 'playerInfo': None }) for client in self.clientList: conn = client['conn'] if conn.recvPending(): data = conn.recv() if data == None: playerName = client['playerInfo']['name'] if client['playerInfo'] else "<NoInfo>" prnt("Client (%s) left raid, reason=%s"%(playerName, fuzion.formatError(conn.closedReason))) self.lastRaidUpdatePoke = time() self.clientList.remove(client) continue packetType = data.readByte() if packetType == pkt.PLAYER_UPDATE: self.processPlayerUpdate(client, data) if now - self.lastRaidUpdateSent > 2 and now - self.lastRaidUpdatePoke < 5: self.sendRaidUpdate() self.lastRaidUpdateSent = now sleep(0.1) self.port.close() for client in self.clientList: conn = client['conn'] conn.close() self.centralSock.close() prnt("RaidServer: Shutting down...")
def run(self): self.acceptTime = time.time() if self.state != CS_CONNECTED: if not self.loopback: # Get tunnel info privIp = socket.gethostbyname(socket.gethostname()) while True: (privPort, pubIp, pubPort) = self.node.reflectAddress() self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: self.sock.bind(('', privPort)) except: debug("Fuzion: Port %d taken, selecting new port."%(privPort)) continue break debug("Bound at", privPort) self.node.sendTunnelInfo(self.targetId, self.targetPort, privIp, privPort, pubIp, pubPort) else: self.state = CS_CONNECTED if not self.outbound: self.pushToPort() while not self.threadStopped.isSet(): now = time.time() if self.state != CS_CONNECTED: self.updateNotConnected() time.sleep(0.2) continue if self.relay: r = len(self.relayedRead) > 0 w = 1 e = 0 else: r, w, e = select([self.sock], [self.sock], [], 0) if r: try: data = ByteStream(self._recv()) except socket.error as e: if e.errno == 10054: # UDP returns a ECONNRESET for IMCP failures, ignore them pass else: debug("Connection errno=%d"%e.errno) else: if data: packetType = data.readByte() if packetType == P_DATA: self.pendingRecv.append(data.readString()) elif packetType == P_CLOSE: self.closeInternal(ERR_CLOSED_BY_REMOTE) break elif packetType == P_KEEP_ALIVE: pass self.lastPacketReceived = now if not data and data is not None: debug("Empty, but not None packet?") if now - self.lastPacketSent > 5: packet = ByteStream() packet.writeByte(P_KEEP_ALIVE) self._send(packet.toString()) self.lastPacketSent = now if self.lastPacketReceived > 0 and now - self.lastPacketReceived > 20: debug("Timeout, now=%d, lastPacket=%d, diff=%d"%(now, self.lastPacketReceived, now - self.lastPacketReceived)) self.closeInternal(ERR_TIMED_OUT) break time.sleep(0.01)
def run(self): self.acceptTime = time.time() if self.state != CS_CONNECTED: if not self.loopback: # Get tunnel info privIp = socket.gethostbyname(socket.gethostname()) while True: (privPort, pubIp, pubPort) = self.node.reflectAddress() self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: self.sock.bind(("", privPort)) except: debug("Fuzion: Port %d taken, selecting new port." % (privPort)) continue break debug("Bound at", privPort) self.node.sendTunnelInfo(self.targetId, self.targetPort, privIp, privPort, pubIp, pubPort) else: self.state = CS_CONNECTED if not self.outbound: self.pushToPort() while not self.threadStopped.isSet(): now = time.time() if self.state != CS_CONNECTED: self.updateNotConnected() time.sleep(0.2) continue if self.relay: r = len(self.relayedRead) > 0 w = 1 e = 0 else: r, w, e = select([self.sock], [self.sock], [], 0) if r: try: data = ByteStream(self._recv()) except socket.error as e: if e.errno == 10054: # UDP returns a ECONNRESET for IMCP failures, ignore them pass else: debug("Connection errno=%d" % e.errno) else: if data: packetType = data.readByte() if packetType == P_DATA: self.pendingRecv.append(data.readString()) elif packetType == P_CLOSE: self.closeInternal(ERR_CLOSED_BY_REMOTE) break elif packetType == P_KEEP_ALIVE: pass self.lastPacketReceived = now if not data and data is not None: debug("Empty, but not None packet?") if now - self.lastPacketSent > 5: packet = ByteStream() packet.writeByte(P_KEEP_ALIVE) self._send(packet.toString()) self.lastPacketSent = now if self.lastPacketReceived > 0 and now - self.lastPacketReceived > 20: debug( "Timeout, now=%d, lastPacket=%d, diff=%d" % (now, self.lastPacketReceived, now - self.lastPacketReceived) ) self.closeInternal(ERR_TIMED_OUT) break time.sleep(0.01)