Full blog engine source: build_blog.py, content, deploy scripts
This commit is contained in:
92
config.py
Normal file
92
config.py
Normal file
@ -0,0 +1,92 @@
|
||||
"""
|
||||
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()
|
||||
Reference in New Issue
Block a user