93 lines
2.8 KiB
Python
93 lines
2.8 KiB
Python
"""
|
||
GFIL BLOG 统一配置加载器
|
||
用法: from config import TELEGRAPH_TOKEN, BLOG_URL, ...
|
||
所有密钥从 .env 加载,修改密钥只需改 .env 一个文件
|
||
"""
|
||
import os
|
||
import sys
|
||
|
||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||
ENV_FILE = os.path.join(BASE_DIR, ".env")
|
||
|
||
def _load_env():
|
||
"""手动解析 .env,零依赖"""
|
||
env = {}
|
||
if os.path.exists(ENV_FILE):
|
||
with open(ENV_FILE, "r", encoding="utf-8") as f:
|
||
for line in f:
|
||
line = line.strip()
|
||
if not line or line.startswith("#") or "=" not in line:
|
||
continue
|
||
key, _, val = line.partition("=")
|
||
env[key.strip()] = val.strip().strip('"').strip("'")
|
||
return env
|
||
|
||
_env = _load_env()
|
||
|
||
def _get(key, default=""):
|
||
"""优先环境变量,其次 .env 文件"""
|
||
return os.environ.get(key) or _env.get(key, default)
|
||
|
||
# --- 服务器 ---
|
||
SSH_HOST = _get("SSH_HOST", "")
|
||
SSH_USER = _get("SSH_USER", "root")
|
||
SSH_PASS = _get("SSH_PASS")
|
||
SSH_PORT = int(_get("SSH_PORT", "22"))
|
||
|
||
# --- API Keys ---
|
||
TELEGRAPH_TOKEN = _get("TELEGRAPH_TOKEN")
|
||
GITHUB_TOKEN = _get("GITHUB_TOKEN")
|
||
GITHUB_TOKEN_ALT = _get("GITHUB_TOKEN_ALT")
|
||
TG_BOT_TOKEN = _get("TG_BOT_TOKEN")
|
||
DISCORD_WEBHOOK = _get("DISCORD_WEBHOOK")
|
||
DEEPSEEK_KEY = _get("DEEPSEEK_KEY")
|
||
DEVTO_KEY = _get("DEVTO_KEY")
|
||
INDEXNOW_KEY = _get("INDEXNOW_KEY")
|
||
SCREENSHOTONE_KEY = _get("SCREENSHOTONE_KEY")
|
||
SHOTSTACK_KEY = _get("SHOTSTACK_KEY")
|
||
BUFFER_TOKEN = _get("BUFFER_TOKEN")
|
||
|
||
# --- Google ---
|
||
GOOGLE_EMAIL = _get("GOOGLE_EMAIL")
|
||
GOOGLE_PASS = _get("GOOGLE_PASS")
|
||
SMTP_PASS = _get("SMTP_PASS")
|
||
GA_ID = _get("GA_ID")
|
||
GOOGLE_VERIFY = _get("GOOGLE_VERIFY")
|
||
|
||
# --- URLs ---
|
||
BLOG_URL = _get("BLOG_URL", "https://blog.quant-view.xyz")
|
||
TERMINAL_URL = _get("TERMINAL_URL", "https://gfil-intel.xyz")
|
||
LANDING_URL = _get("LANDING_URL", "https://gold-node.xyz")
|
||
TG_CHANNEL = _get("TG_CHANNEL", "https://t.me/GFIL_Trading")
|
||
DISCORD_INVITE = _get("DISCORD_INVITE", "https://discord.gg/GMmMCD4MCr")
|
||
TOOLS_URL = f"{BLOG_URL}/tools/"
|
||
|
||
# --- 本地代理 ---
|
||
HTTP_PROXY = _get("HTTP_PROXY")
|
||
|
||
# --- 邮箱 ---
|
||
MAILERLITE_GROUP_ID = "189341033455158511"
|
||
|
||
# --- 密钥状态检查 ---
|
||
def check_config():
|
||
"""打印配置状态,快速发现过期密钥"""
|
||
keys = {
|
||
"Telegraph": TELEGRAPH_TOKEN,
|
||
"GitHub": GITHUB_TOKEN,
|
||
"TG Bot": TG_BOT_TOKEN,
|
||
"Discord": DISCORD_WEBHOOK,
|
||
"DeepSeek": DEEPSEEK_KEY,
|
||
}
|
||
print("=== 配置状态检查 ===")
|
||
for name, val in keys.items():
|
||
if not val:
|
||
print(f" {name}: MISSING!")
|
||
elif "expired" in val.lower() or "invalid" in val.lower():
|
||
print(f" {name}: EXPIRED/INVALID")
|
||
else:
|
||
masked = val[:15] + "..." if len(val) > 15 else val
|
||
print(f" {name}: {masked}")
|
||
|
||
if __name__ == "__main__":
|
||
check_config()
|