#!/usr/bin/env python3

from sys import argv
from os.path import realpath, dirname
from shlex import quote
from bundlewrap.repo import Repository

repo = Repository(dirname(dirname(realpath(__file__))))

if len(argv) == 1:
    for node in repo.nodes:
        for name in node.metadata.get('left4dead2/servers', {}):
            print(name)
    exit(0)

server = argv[1]
command = argv[2]

remote_code = """
from rcon.source import Client

with Client('127.0.0.1', {port}, passwd='''{password}''') as client:
    response = client.run('''{command}''')

print(response)
"""

for node in repo.nodes:
    for name, conf in node.metadata.get('left4dead2/servers', {}).items():
        if name == server:
            response = node.run('python3 -c ' + quote(remote_code.format(port=conf['port'], password=conf['rcon_password'], command=command)))
            print(response.stdout.decode())