feat: add guided standalone setup flow

This commit is contained in:
mmc
2026-03-19 11:12:26 +08:00
parent 9169ede86b
commit e312a62b08
4 changed files with 202 additions and 0 deletions

View File

@@ -109,6 +109,31 @@ def load_sync_config() -> Dict[str, Any]:
return normalize_config(copy.deepcopy(DEFAULT_CONFIG))
def has_initialized_config() -> bool:
if not CONFIG_FILE.exists():
return False
try:
data = json.loads(CONFIG_FILE.read_text(encoding="utf-8"))
except Exception:
return False
if not isinstance(data, dict):
return False
proxy = str(data.get("proxy") or "").strip()
providers = data.get("mail_providers") or []
cpa_base_url = str(data.get("cpa_base_url") or "").strip()
base_url = str(data.get("base_url") or "").strip()
bearer_token = str(data.get("bearer_token") or "").strip()
email = str(data.get("email") or "").strip()
password = str(data.get("password") or "").strip()
provider_ready = isinstance(providers, list) and any(str(item).strip() for item in providers)
sub2api_ready = bool(base_url and (bearer_token or (email and password)))
cpa_ready = bool(cpa_base_url and str(data.get("cpa_token") or "").strip())
return bool(proxy and provider_ready) or sub2api_ready or cpa_ready
def normalize_config(cfg: Dict[str, Any]) -> Dict[str, Any]:
cfg = copy.deepcopy(cfg or {})
legacy = str(cfg.get("mail_provider", "mailtm") or "mailtm").strip().lower()