class PugServer(object): def __init__(self, address, port, rcon_pass, local_port=17105): self.network_ip = network_ip() self.public_ip = public_ip() self.query = SourceQuery(address, port) self.srcon = SourceRcon(address, port, rcon_pass) self.logger = SourceLogListener((self.network_ip, local_port), (address, port), PugServerLogParser(self)) self.rcon('logaddress_add "{0}:{1}"'.format(self.public_ip, local_port)) def connect(self): self.query.connect() self.srcon.connect() def disconnect(self): self.query.disconnect() self.srcon.disconnect() def info(self): return self.query.info() def player(self): return self.query.player() def rules(self): return self.query.rules() def rcon(self, command): return self.srcon.rcon(command)[:-1] def cevo(self): stopwatch_maps = ['cp_dustbowl', 'cp_egypt', 'cp_gorge', 'cp_gravelpit', 'cp_junction', 'cp_steel'] map = self.info()['map'] if map.startswith('ctf_'): file = 'cevo_ctf.cfg' elif map.startswith('koth_'): file = 'cevo_koth.cfg' elif map in stopwatch_maps: file = 'cevo_stopwatch.cfg' else: file = 'cevo_push.cfg' return self.rcon('exec "{0}"'.format(file)) def changelevel(self, map): result = self.rcon('changelevel "{0}"'.format(map)) return "No such map" not in result def status(self): return self.rcon('status')
def __init__(self, address, port, rcon_pass, local_port=17105): self.network_ip = network_ip() self.public_ip = public_ip() self.query = SourceQuery(address, port) self.srcon = SourceRcon(address, port, rcon_pass) self.logger = SourceLogListener((self.network_ip, local_port), (address, port), PugServerLogParser(self)) self.rcon('logaddress_add "{0}:{1}"'.format(self.public_ip, local_port))