47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
"""
|
|
conol_secrets.py - single source of truth for credentials.
|
|
|
|
Secrets live in config.json (gitignored) or environment variables.
|
|
Env vars win over config.json. NEVER hardcode secrets in code files.
|
|
|
|
Env mapping: CONOL_GMAIL_ADDRESS, CONOL_GMAIL_APP_PASSWORD, CONOL_PASSWORD,
|
|
CONOL_SITE_KEY, CONOL_BASE_URL, CONOL_ANTICAPTCHA_KEYS (comma-separated).
|
|
"""
|
|
import json
|
|
import os
|
|
from pathlib import Path
|
|
|
|
_ROOT = Path(__file__).resolve().parent
|
|
_CFG = None
|
|
|
|
|
|
def _cfg() -> dict:
|
|
global _CFG
|
|
if _CFG is None:
|
|
p = _ROOT / "config.json"
|
|
_CFG = json.loads(p.read_text(encoding="utf-8")) if p.exists() else {}
|
|
return _CFG
|
|
|
|
|
|
def get(section: str, key: str, default=None):
|
|
env = os.environ.get("CONOL_" + section.upper() + "_" + key.upper())
|
|
if env:
|
|
return env
|
|
return _cfg().get(section, {}).get(key, default)
|
|
|
|
|
|
GMAIL = get("gmail", "address", "")
|
|
GMAIL_APP = get("gmail", "app_password", "")
|
|
PASSWORD = get("conol", "password", "")
|
|
SITE_KEY = get("conol", "site_key", "")
|
|
BASE_URL = get("conol", "base_url", "https://conol.ai")
|
|
|
|
_keys_env = os.environ.get("CONOL_ANTICAPTCHA_KEYS")
|
|
if _keys_env:
|
|
ANTICAPTCHA_KEYS = [k.strip() for k in _keys_env.split(",") if k.strip()]
|
|
else:
|
|
ANTICAPTCHA_KEYS = list(get("captcha", "anticaptcha_keys", []) or [])
|
|
|
|
ANTICAPTCHA_KEY = ANTICAPTCHA_KEYS[0] if ANTICAPTCHA_KEYS else ""
|
|
ANTICAPTCHA_BACKUP = ANTICAPTCHA_KEYS[1] if len(ANTICAPTCHA_KEYS) > 1 else ""
|