fix: persist Gitea token to config file instead of clearing it on save

This commit is contained in:
2026-05-14 17:03:27 +08:00
parent 7e735cdf72
commit 69efff3cb4
+8 -13
View File
@@ -104,20 +104,15 @@ class ConfigManager:
logger.info(f"已创建默认配置文件: {self.config_file}") logger.info(f"已创建默认配置文件: {self.config_file}")
def save_config(self) -> None: def save_config(self) -> None:
"""保存配置到文件(敏感字段不写入文件""" """保存配置到文件(API 密钥不写入文件,Gitea token 需要持久化"""
# 保存前临时清空敏感字段,避免写入文件 # 保存前临时清空 API 密钥,避免写入文件(这些从 .env 读取)
saved_keys = {} saved_keys = {}
sensitive_fields = [ for option in ('api_key', 'secret_key'):
('API', 'api_key'),
('API', 'secret_key'),
('Gitea', 'token'),
]
for section, option in sensitive_fields:
try: try:
saved_keys[(section, option)] = self.config.get(section, option, fallback='') saved_keys[option] = self.config.get('API', option, fallback='')
except Exception: except Exception:
saved_keys[(section, option)] = '' saved_keys[option] = ''
self.config.set(section, option, '') self.config.set('API', option, '')
try: try:
with open(self.config_file, 'w', encoding='utf-8') as f: with open(self.config_file, 'w', encoding='utf-8') as f:
@@ -125,9 +120,9 @@ class ConfigManager:
logger.info(f"配置已保存到: {self.config_file}") logger.info(f"配置已保存到: {self.config_file}")
finally: finally:
# 恢复内存中的值(即使写入失败也恢复) # 恢复内存中的值(即使写入失败也恢复)
for (section, option), val in saved_keys.items(): for option, val in saved_keys.items():
if val: if val:
self.config.set(section, option, val) self.config.set('API', option, val)
def get(self, section: str, option: str, fallback: Any = None) -> Any: def get(self, section: str, option: str, fallback: Any = None) -> Any:
"""获取配置值""" """获取配置值"""