#!/usr/bin/python3 import argparse import logging import sys import Ice import Murmur def init(host, port, timeout): logging.debug("Initializing ICE connection") proxy_str = f"Meta: tcp -h {host} -p {port} -t {timeout}" with Ice.initialize() as communicator: proxy = communicator.stringToProxy(proxy_str) mice = Murmur.MetaPrx.checkedCast(proxy) if not mice: raise RuntimeError(f"Invalid Proxy: {proxy_str}") servers = mice.getAllServers() if len(servers) == 0: raise RuntimeError("No Mumble server found") return servers def main(): parser = argparse.ArgumentParser( description="Manage Mumble server through ICE connection", formatter_class=argparse.ArgumentDefaultsHelpFormatter ) parser.add_argument("--host", "-h", default="127.0.0.1", help="ICE host or ip") parser.add_argument("--port", "-p", default=6502, help="ICE port number") parser.add_argument("--timeout", "-t", default=1000, help="Connection timeout in milliseconds") args = parser.parse_args() try: servers = init(args.host, args.port, args.timeout) except RuntimeError as e: logging.error(e, exc_info=e) return 1 print(servers.getChannels()) if __name__ == "__main__": sys.exit(main())