fix: prevent Gitea token corruption from masked config values, add real connection test

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