Restructure command line

This commit is contained in:
2025-09-03 20:59:51 +02:00
parent 1903a9fe4d
commit f11ee2af7e
2 changed files with 46 additions and 16 deletions

View File

@@ -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("--stok", dest="stok", help="Initial session token to use for commands")
parser.add_argument("--password", dest="password", help="Password for authentication against the device") parser.add_argument("--password", dest="password", help="Password for authentication against the device")
def main(): subparsers = parser.add_subparsers()
args = parser.parse_args() def run_status(m):
if m.is_logged_in():
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():
print("Is logged in") print("Is logged in")
else: else:
print("Is not logged in") 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__": if __name__ == "__main__":
main() main()

View File

@@ -5,6 +5,8 @@ import urllib
class Mu5001Tool: class Mu5001Tool:
def __init__(self, host="http://192.168.0.1"): def __init__(self, host="http://192.168.0.1"):
self._password = None
self.host = host self.host = host
self.session = requests.Session() self.session = requests.Session()
@@ -36,6 +38,9 @@ class Mu5001Tool:
"cmd": "LD", "cmd": "LD",
}).get("LD") }).get("LD")
def set_password(self, password):
self._password = password
def hashed_login_password(self, password): def hashed_login_password(self, password):
ld = self.get_ld() ld = self.get_ld()
@@ -44,7 +49,13 @@ class Mu5001Tool:
return login_sha256(login_sha256(password) + ld) 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({ return self.set_cmd_process({
"goformId": "LOGIN", "goformId": "LOGIN",
"password": self.hashed_login_password(password), "password": self.hashed_login_password(password),