81 lines
2.4 KiB
Python
81 lines
2.4 KiB
Python
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
|