diff --git a/app/core/config.py b/app/core/config.py index 5e7293c..47248e6 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -135,19 +135,22 @@ class GlobalConfig(ConfigBase): Data_StageTimeStamp = ConfigItem( "Data", "StageTimeStamp", "2000-01-01 00:00:00", DateTimeValidator() ) - Data_Stage = ConfigItem("Data", "Stage", "{ }") + Data_Stage = ConfigItem("Data", "Stage", "{ }", JSONValidator()) Data_LastNoticeUpdated = ConfigItem( "Data", "LastNoticeUpdated", "2000-01-01 00:00:00", DateTimeValidator() ) Data_IfShowNotice = ConfigItem("Data", "IfShowNotice", True, BoolValidator()) - Data_Notice = ConfigItem("Data", "Notice", "{ }") + Data_Notice = ConfigItem("Data", "Notice", "{ }", JSONValidator()) Data_LastWebConfigUpdated = ConfigItem( "Data", "LastWebConfigUpdated", "2000-01-01 00:00:00", DateTimeValidator() ) Data_LastCheckVersion = ConfigItem( "Data", "LastCheckVersion", "2000-01-01 00:00:00", DateTimeValidator() ) - Data_WebConfig = ConfigItem("Data", "WebConfig", "{ }") + Data_UpdateVersionInfo = ConfigItem( + "Data", "UpdateVersionInfo", "{ }", JSONValidator() + ) + Data_WebConfig = ConfigItem("Data", "WebConfig", "{ }", JSONValidator()) class QueueItem(ConfigBase): diff --git a/app/models/ConfigBase.py b/app/models/ConfigBase.py index 973eaed..67c263d 100644 --- a/app/models/ConfigBase.py +++ b/app/models/ConfigBase.py @@ -134,6 +134,21 @@ class DateTimeValidator(ConfigValidator): return "2000-01-01 00:00:00" +class JSONValidator(ConfigValidator): + + def validate(self, value: Any) -> bool: + if not isinstance(value, str): + return False + try: + json.loads(value) + return True + except json.JSONDecodeError: + return False + + def correct(self, value: Any) -> str: + return value if self.validate(value) else "{ }" + + class EncryptValidator(ConfigValidator): """加密数据验证器""" diff --git a/app/services/update.py b/app/services/update.py index 51aa877..8a11fea 100644 --- a/app/services/update.py +++ b/app/services/update.py @@ -64,7 +64,7 @@ class _UpdateHandler: ) ), current_version if self.remote_version is None else self.remote_version, - {}, + json.loads(Config.get("Data", "UpdateVersionInfo")), ) logger.info("开始检查更新") @@ -122,6 +122,9 @@ class _UpdateHandler: update_version_info[key] = [] update_version_info[key] += value + await Config.set( + "Data", "UpdateVersionInfo", json.dumps(update_version_info) + ) return True, remote_version, update_version_info else: