Files
Sdf1_login/config.php
T

92 lines
4.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Web通信系统 - 配置文件
*
* ★ 本文件随仓库分发,里面的值全部是占位符 —— 请改成你自己的。
* 任何真实口令 / 密钥 / IP / 令牌都严禁写进仓库(2026-09-29 用户指令)。
* 部署脚本也不会上传本文件,线上 config.php 只在服务器上由 admin_2fa_setup.php 改写。
*
* 拿到代码第一次要改的东西:
* 1. SECRET_KEY —— 插件(Java)与本 Web 端必须一字不差地相同,否则所有同步接口 401
* 2. ADMIN_PASS —— 后台管理密码
* 3. SMTP_* —— 邮件发信用途(不发信可以不管)
* 4. GAME_*_DB / DIR —— 你服务器上游戏数据库的实际路径
* 最下面 SEC-UPDATE 区故意是空的:后台访问令牌、IP 白名单、二次验证这三项
* 在你自己的服务器上首次生成 / 由你自己填,不会进仓库。
*/
// ===== 安全密钥(插件和Web端必须一致) =====
define('SECRET_KEY', 'REPLACE_ME_SECRET_KEY');
// ===== Token配置 =====
define('TOKEN_EXPIRE_SECONDS', 86400); // 24小时
// ===== 数据库路径 =====
define('DB_PATH', __DIR__ . '/db/web.db');
// ★ 收银台订单独立库:与 web.db(Java 高频写入)彻底解耦,消除 SQLite 文件锁竞争
// 订单记录纯属 PHP 收银台自己的数据,Java 永不读写此库
define('ORDERS_DB_PATH', __DIR__ . '/db/orders.db');
// ===== 管理员认证 =====
define('ADMIN_USER', 'admin');
define('ADMIN_PASS', 'REPLACE_ME_ADMIN_PASSWORD'); // 管理员密码
// ===== 游戏数据库路径(用于同步) =====
define('GAME_BOND_DB', 'REPLACE_ME_GAME_BOND_DB_PATH');
define('GAME_LOGIN_DB', 'REPLACE_ME_GAME_LOGIN_DB_PATH');
define('GAME_SHOP_DIR', 'REPLACE_ME_GAME_SHOP_DIR_PATH');
// ===== Web子目录路径(如 /plugin 或 /test1,根目录则留空) =====
define('WEBSUB_DIR', '/plugin');
// ===== Java插件回调端口 =====
define('CALLBACK_PORT', 9090);
// ===== Java游戏服务器地址(PHP回调Java用) =====
define('GAME_SERVER_HOST', '127.0.0.1');
// ===== 辅助函数:构建相对路径 =====
function webPath($path = '') {
return trim(WEBSUB_DIR, '/') . ($path ? '/' . trim($path, '/') : '');
}
// ===== SMTP邮件配置 =====
define('SMTP_HOST', 'REPLACE_ME_SMTP_HOST');
define('SMTP_PORT', '465');
define('SMTP_USER', 'REPLACE_ME_SMTP_USER');
define('SMTP_PASS', 'REPLACE_ME_SMTP_PASSWORD');
define('SMTP_SENDER_NAME', 'Sdf1_login');
define('SMTP_USE_SSL', true);
// ===== 人机验证码选择(2026-10-02,实现见 captcha_guard.php)=====
// 覆盖三个场景:管理员登录 / 用户后台账密登录 / 正版验证提交前。
// 取值不区分大小写,兼容全名:
// 'CF' 或 'cloudflare' 或 'turnstile' → Cloudflare Turnstile(默认,体验最好基本无感)
// 'VA' 或 'vaptcha' → VAPTCHA V4
// '' 或 'off' 或 'none' → 关闭人机验证
// 本文件未定义本常量时(线上 config.php 是老版本),一律按默认 'CF' 处理。
// 密钥本身不在这里,写在 captcha_keys.php(仓库里是空模板,真实值只放服务器)。
define('CAPTCHA_PROVIDER', 'CF');
// ===== 紧急安全加固(2026-09-29 入侵事件响应,实现见 security.php)=====
// 第一层:TOTP 二次验证 —— 1Password / Microsoft Authenticator 等标准 6 位动态码(仅校验,无推送)。
// 第二层:管理面 IP 白名单 —— 未配置白名单时,仅服务器本机 127.0.0.1 与持有 boot 引导令牌的
// 人可访问后台,其余任何人一律 403。
// 第三层:admin.php 动态访问令牌 —— 只有 https://域名/plugin/admin.php?token=<SEC_ACCESS_TOKEN>
// 才能打开后台;不带令牌(或令牌错)的请求一律返回 nginx 原生 404 页,
// 与"服务器上根本没有这个文件"表现完全一致,探测者无从判断。
//
// 下面这个区段故意不写任何 define —— 这些是每个部署者自己的安全隐私,严禁入库:
// SEC_BOOT_TOKEN 引导令牌(被锁在外面时的逃生舱)
// SEC_ACCESS_TOKEN 后台访问令牌(第三层门禁)
// SEC_EPOCH 安全纪元(部署加固时作废此前的全部活会话)
// ADMIN_IP_WHITELIST 你自己的 IP 白名单
// SEC_2FA_ENABLED / SEC_2FA_SECRET 你自己的二次验证开关与密钥
// 首次访问 https://域名/plugin/admin_2fa_setup.php 并保存任意一项时,缺失的键会由该页
// 在你自己的服务器上随机生成并就地补全(写前自动备份到 db/config_bak/)。
// 被锁在外面时的恢复方法:宝塔/SSH 查看本文件补全后的 SEC_BOOT_TOKEN,访问
// https://你的域名/plugin/admin_2fa_setup.php?boot=<令牌>
// 进入配置页把自己当前 IP 加入白名单(boot 令牌本身也是配置页入口)。
// >>>SEC-UPDATE-BEGIN 本区段由 admin_2fa_setup.php 自动维护,请勿手工改动标记行
// >>>SEC-UPDATE-END