From f11ee2af7e9f43305130d18a91ce058d22b15e18 Mon Sep 17 00:00:00 2001 From: clerie Date: Wed, 3 Sep 2025 20:59:51 +0200 Subject: [PATCH] Restructure command line --- mu5001tool/__main__.py | 49 +++++++++++++++++++++++++++++------------- mu5001tool/api.py | 13 ++++++++++- 2 files changed, 46 insertions(+), 16 deletions(-) diff --git a/mu5001tool/__main__.py b/mu5001tool/__main__.py index 667ce0f..3d6c161 100644 --- a/mu5001tool/__main__.py +++ b/mu5001tool/__main__.py @@ -8,28 +8,47 @@ parser = argparse.ArgumentParser(prog="mu5001tool") parser.add_argument("--stok", dest="stok", help="Initial session token to use for commands") parser.add_argument("--password", dest="password", help="Password for authentication against the device") -def main(): +subparsers = parser.add_subparsers() - args = parser.parse_args() - - h = Mu5001Tool() - - if args.stok is not None: - h.set_stok(args.stok) - - if args.password is not None: - print(h.login(args.password)) - - if h.is_logged_in(): +def run_status(m): + if m.is_logged_in(): print("Is logged in") else: print("Is not logged in") - pprint(h.status()) + pprint(m.status()) - pprint(h.network_information()) + pprint(m.network_information()) - pprint(h.apn_info()) + pprint(m.apn_info()) + +sp_status = subparsers.add_parser("status", help="General modem status information") +sp_status.set_defaults(func=run_status) + +def main(): + + args = parser.parse_args() + + if "func" not in args: + parser.print_help() + exit() + + function_arguments = dict(vars(args)) + + function_arguments.pop("func") + function_arguments.pop("stok") + function_arguments.pop("password") + + m = Mu5001Tool() + + if args.stok is not None: + m.set_stok(args.stok) + + if args.password is not None: + m.set_password(args.password) + m.login() + + args.func(m=m, **function_arguments) if __name__ == "__main__": main() diff --git a/mu5001tool/api.py b/mu5001tool/api.py index 74271f1..55205d6 100644 --- a/mu5001tool/api.py +++ b/mu5001tool/api.py @@ -5,6 +5,8 @@ import urllib class Mu5001Tool: def __init__(self, host="http://192.168.0.1"): + self._password = None + self.host = host self.session = requests.Session() @@ -36,6 +38,9 @@ class Mu5001Tool: "cmd": "LD", }).get("LD") + def set_password(self, password): + self._password = password + def hashed_login_password(self, password): ld = self.get_ld() @@ -44,7 +49,13 @@ class Mu5001Tool: return login_sha256(login_sha256(password) + ld) - def login(self, password): + def login(self, password=None): + if password is None: + password = self._password + + if password is None: + raise ValueError("No password provided") + return self.set_cmd_process({ "goformId": "LOGIN", "password": self.hashed_login_password(password),