diff --git a/.gitignore b/.gitignore index 7226376d6d..296f7ced8d 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ data/charge_log/* data/daily_log/* data/monthly_log/* data/backup/*.tar.gz +data/backup/*.openwb-backup* data/restore/*.tar.gz data/data_migration/*.tar.gz ramdisk/* diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index f631d09901..2c3fdd573e 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -1020,7 +1020,8 @@ def process_system_topic(self, msg: mqtt.MQTTMessage): "openWB/set/system/usage_terms_acknowledged" in msg.topic or "openWB/set/system/update_config_completed" in msg.topic): self._validate_value(msg, bool) - elif "openWB/set/system/version" in msg.topic: + elif ("openWB/set/system/version" in msg.topic or + "openWB/set/system/backup_password" in msg.topic): self._validate_value(msg, str) elif "openWB/set/system/time" in msg.topic: self._validate_value(msg, float) diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index fa8a47c862..ae4e23bb87 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -887,6 +887,18 @@ def process_system_topic(self, client: mqtt.Client, var: dict, msg: mqtt.MQTTMes user = splitted[2] if len(splitted) > 2 else "getsupport" run_command([str(Path(__file__).resolve().parents[2] / "runs" / "start_remote_support.sh"), token, port, user], process_exception=True) + elif "openWB/system/backup_password" in msg.topic: + if self.event_subdata_initialized.is_set(): + key_file = Path.home() / "backup.key" + payload = decode_payload(msg.payload) + if payload is None or payload == "": + # delete key file + if key_file.exists(): + key_file.unlink() + else: + # write key file + with key_file.open("w") as file: + file.write(payload) elif "openWB/system/backup_cloud/config" in msg.topic: config_dict = decode_payload(msg.payload) if config_dict["type"] is None: diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 1e79a285aa..749cfa51ed 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -471,6 +471,7 @@ class UpdateConfig: "^openWB/system/boot_done$", "^openWB/system/configurable/backup_clouds$", "^openWB/system/backup_cloud/backup_before_update$", + "^openWB/system/backup_password$", "^openWB/system/configurable/chargepoints$", "^openWB/system/configurable/chargepoints_internal$", "^openWB/system/configurable/devices_components$", @@ -587,6 +588,7 @@ class UpdateConfig: ("openWB/optional/monitoring/config", NO_MODULE), ("openWB/optional/ocpp/config", dataclass_utils.asdict(Ocpp())), ("openWB/optional/rfid/active", False), + ("openWB/system/backup_password", None), ("openWB/system/backup_cloud/config", NO_MODULE), ("openWB/system/backup_cloud/backup_before_update", True), ("openWB/system/current_branch", None),