def rcon(command): connection = AdminClient() connection.settimeout(0.4) connection.configure(password=RCON_PASSWORD, host=SERVER_IP, port=ADMIN_PORT) connection.connect() failed = False try: protocol_response = connection.recv_packet() welcome_response = connection.recv_packet() except socket.error: failed = True if protocol_response is None or welcome_response is None: failed = True result = [] if failed: pass else: connection.send_packet(AdminRcon, command=command) cont = True while cont: packets = connection.poll() if packets is None or packets is False: break cont = len(packets) > 0 for packet, data in packets: if packet == ServerRcon: result += [data['result']] elif packet == ServerRconEnd: cont = False break else: pass connection.disconnect() return result
else: try: packet = send[packetName] except PacketNotFound: pass if packet is None: print("Unknown packet name: %r" % packetName) continue packets.append([packet.__class__, data, poll]) if options.verbose: print("Connecting to %(host)s:%(port)s" % { 'host': options.host, 'port': options.port }) connection = AdminClient() connection.packet_recv += formatter_recv connection.packet_send += formatter_send connection.configure(password=options.password, host=options.host, port=options.port) if not connection.connect(): print("Unable to connect to %(host)s:%(port)s" % { 'host': options.host, 'port': options.port }) sys.exit() connection.poll(0.2) connection.poll(0.2)