From cfe5796845dac1e37f467b6b1cff16260e201879 Mon Sep 17 00:00:00 2001 From: up-n-atom Date: Wed, 13 Sep 2023 18:22:40 -0400 Subject: [PATCH] Add yaml config --- config.yaml.dist | 4 ++++ requirements.txt | 1 + xmo-remote-client.py | 10 ++++++++-- 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 config.yaml.dist diff --git a/config.yaml.dist b/config.yaml.dist new file mode 100644 index 0000000..145c8f2 --- /dev/null +++ b/config.yaml.dist @@ -0,0 +1,4 @@ +host: 192.168.2.1 +username: admin +password: admin +authentication_method: MD5 diff --git a/requirements.txt b/requirements.txt index 4f0a85c..54dd760 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ anyio asyncclick git+https://github.com/djGrrr/python-sagemcom-api.git@master#egg=sagemcom_api +pyaml \ No newline at end of file diff --git a/xmo-remote-client.py b/xmo-remote-client.py index 52f47f6..64af970 100755 --- a/xmo-remote-client.py +++ b/xmo-remote-client.py @@ -4,9 +4,11 @@ import asyncclick as click from enum import Enum from ipaddress import IPv4Address import json +import os from sagemcom_api.client import SagemcomClient from sagemcom_api.enums import EncryptionMethod from typing import Any +import yaml class EnumChoice(click.Choice): @@ -25,7 +27,7 @@ class EnumChoice(click.Choice): @click.group(chain=True) @click.option('-H', '--host', default='192.168.2.1', help='Hostname or host IP') @click.option('-u', '--username', default='admin', help='Administrator username') -@click.option('-p', '--password', required=True, help='Administrator password') +@click.option('-p', '--password', required=True, help='Administrator password', prompt=True) @click.option('-a', '--authentication-method', default=EncryptionMethod.SHA512, type=EnumChoice(EncryptionMethod), help='Authentication method') @@ -126,5 +128,9 @@ async def set_dns_servers(client: SagemcomClient, dns_servers: tuple[IPv4Address if __name__ == '__main__': - cli(_anyio_backend='asyncio') + config = dict() + if os.path.isfile('config.yaml'): + with open('config.yaml') as f: + config = yaml.safe_load(f) + cli(default_map=config, _anyio_backend='asyncio')