diff --git a/MyPSACC.py b/MyPSACC.py index 5d60027..46a1726 100644 --- a/MyPSACC.py +++ b/MyPSACC.py @@ -228,11 +228,11 @@ class MyPSACC: logger.error(traceback.format_exc()) return self.vehicles_list - def load_otp(self, new=False): + def load_otp(self, force_new=False): otp_session = load_otp() - if otp_session is None or new: + if otp_session is None or force_new: self.get_sms_otp_code() - otp_session = new_otp_session() + otp_session = new_otp_session(otp_session) self.otp = otp_session def get_sms_otp_code(self): @@ -251,7 +251,7 @@ class MyPSACC: try: otp_code = self.otp.get_otp_code() except ConfigException: - self.load_otp(new=True) + self.load_otp(force_new=True) otp_code = self.otp.get_otp_code() save_otp(self.otp) return otp_code @@ -273,7 +273,7 @@ class MyPSACC: self.manager._refresh_token() if self.remote_refresh_token is None: logger.error("remote_refresh_token isn't defined") - self.load_otp(new=True) + self.load_otp(force_new=True) res = self.manager.post(remote_url + self.client_id, json={"grant_type": "refresh_token", "refresh_token": self.remote_refresh_token}, headers=self.headers) diff --git a/otp/Otp.py b/otp/Otp.py index c8d3517..c4f663a 100644 --- a/otp/Otp.py +++ b/otp/Otp.py @@ -69,7 +69,7 @@ class Otp: iw_host = "https://otp.mpsa.com" proxies = None - def __init__(self, inwebo_access_id): + def __init__(self, inwebo_access_id, device_id=token_hex(8)): self.Kiw = None self.pinmode = None self.Kfact = None @@ -78,7 +78,7 @@ class Otp: self.serviceid = None self.alias = None self.iwalea = token_hex(16) - self.device_id = token_hex(8) + self.device_id = device_id self.codepin = None self.challenge = "" self.action = "" @@ -309,8 +309,11 @@ def load_otp(filename="otp.bin"): return None -def new_otp_session(): - otp = Otp("bb8e981582b0f31353108fb020bead1c") +def new_otp_session(old_otp_session: Otp = None): + if old_otp_session is None: + otp = Otp("bb8e981582b0f31353108fb020bead1c") + else: + otp = Otp("bb8e981582b0f31353108fb020bead1c", device_id=old_otp_session.device_id) otp.smsCode = input("What is the code you just received by SMS ?") otp.codepin = input("What is your app pin code ?") otp.activation_start()