import json from .config import ( DATA_DIR, SUBSCRIPTION_FILE, FALLBACK_FILE, PROXY_ENABLED_FILE, START_TIME_FILE, DEFAULT_FALLBACK ) def save_subscription(url: str, selected_server: str = None, user_info: dict = None): """Save subscription URL, selected server and user info to file""" DATA_DIR.mkdir(parents=True, exist_ok=True) data = { "url": url, "selectedServer": selected_server, "userInfo": user_info } SUBSCRIPTION_FILE.write_text(json.dumps(data, ensure_ascii=False, indent=2)) def load_subscription() -> dict: """Load subscription from file""" if SUBSCRIPTION_FILE.exists(): try: return json.loads(SUBSCRIPTION_FILE.read_text()) except json.JSONDecodeError: pass return None def save_fallback_config(enabled: bool, host: str, port: int): """Save fallback proxy configuration to file""" DATA_DIR.mkdir(parents=True, exist_ok=True) data = { "enabled": enabled, "host": host, "port": port } FALLBACK_FILE.write_text(json.dumps(data, ensure_ascii=False, indent=2)) def load_fallback_config() -> dict: """Load fallback proxy configuration from file""" if FALLBACK_FILE.exists(): try: return json.loads(FALLBACK_FILE.read_text()) except json.JSONDecodeError: pass return DEFAULT_FALLBACK.copy() def save_proxy_enabled(enabled: bool): """Save proxy enabled state to file""" DATA_DIR.mkdir(parents=True, exist_ok=True) PROXY_ENABLED_FILE.write_text(json.dumps({"enabled": enabled})) def load_proxy_enabled() -> bool: """Load proxy enabled state from file""" if PROXY_ENABLED_FILE.exists(): try: data = json.loads(PROXY_ENABLED_FILE.read_text()) return data.get("enabled", True) except json.JSONDecodeError: pass return True # Default: proxy enabled def save_start_time(start_time: float): """Save VPN start time to file""" DATA_DIR.mkdir(parents=True, exist_ok=True) START_TIME_FILE.write_text(json.dumps({"startTime": start_time})) def load_start_time() -> float: """Load VPN start time from file""" if START_TIME_FILE.exists(): try: data = json.loads(START_TIME_FILE.read_text()) return data.get("startTime", 0.0) except json.JSONDecodeError: pass return 0.0