mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-14 03:52:26 +08:00
feat(simple): make startup default group creation optional
This commit is contained in:
@@ -119,6 +119,9 @@ SERVER_H2C_MAX_UPLOAD_BUFFER_PER_STREAM=524288
|
||||
# 运行模式: standard (默认) 或 simple (内部自用)
|
||||
# standard: 完整 SaaS 功能,包含计费/余额校验;simple: 隐藏 SaaS 功能并跳过计费/余额校验
|
||||
RUN_MODE=standard
|
||||
# 简易模式启动时自动补齐默认分组;留空或未设置时使用 YAML 配置,未配置时应用默认 true
|
||||
# 显式 true/false 会覆盖 YAML;false 由用户自行管理,已有分组和运行时行为不变
|
||||
SIMPLE_MODE_AUTO_CREATE_DEFAULT_GROUPS=
|
||||
|
||||
# Timezone
|
||||
TZ=Asia/Shanghai
|
||||
|
||||
@@ -100,6 +100,11 @@ webauthn:
|
||||
# - simple: 隐藏 SaaS 功能,跳过计费和余额校验
|
||||
run_mode: "standard"
|
||||
|
||||
simple_mode:
|
||||
# 仅控制简易模式启动时补齐默认分组;false 不删除已有分组,不改变运行时自动绑定或管理员并发设置。
|
||||
# 环境变量:SIMPLE_MODE_AUTO_CREATE_DEFAULT_GROUPS
|
||||
auto_create_default_groups: true
|
||||
|
||||
# =============================================================================
|
||||
# CORS Configuration
|
||||
# 跨域资源共享 (CORS) 配置
|
||||
|
||||
@@ -30,6 +30,7 @@ services:
|
||||
- SERVER_MODE=debug
|
||||
- ENABLE_SERVER_TIMING=${ENABLE_SERVER_TIMING:-false}
|
||||
- RUN_MODE=${RUN_MODE:-standard}
|
||||
- SIMPLE_MODE_AUTO_CREATE_DEFAULT_GROUPS=${SIMPLE_MODE_AUTO_CREATE_DEFAULT_GROUPS:-}
|
||||
- DATABASE_HOST=postgres
|
||||
- DATABASE_PORT=5432
|
||||
- DATABASE_USER=${POSTGRES_USER:-sub2api}
|
||||
|
||||
@@ -55,6 +55,7 @@ services:
|
||||
- SERVER_MODE=${SERVER_MODE:-release}
|
||||
- ENABLE_SERVER_TIMING=${ENABLE_SERVER_TIMING:-false}
|
||||
- RUN_MODE=${RUN_MODE:-standard}
|
||||
- SIMPLE_MODE_AUTO_CREATE_DEFAULT_GROUPS=${SIMPLE_MODE_AUTO_CREATE_DEFAULT_GROUPS:-}
|
||||
- UPDATE_GITHUB_TOKEN=${UPDATE_GITHUB_TOKEN:-}
|
||||
|
||||
# =======================================================================
|
||||
|
||||
@@ -41,6 +41,7 @@ services:
|
||||
- SERVER_MODE=${SERVER_MODE:-release}
|
||||
- ENABLE_SERVER_TIMING=${ENABLE_SERVER_TIMING:-false}
|
||||
- RUN_MODE=${RUN_MODE:-standard}
|
||||
- SIMPLE_MODE_AUTO_CREATE_DEFAULT_GROUPS=${SIMPLE_MODE_AUTO_CREATE_DEFAULT_GROUPS:-}
|
||||
- UPDATE_GITHUB_TOKEN=${UPDATE_GITHUB_TOKEN:-}
|
||||
|
||||
# =======================================================================
|
||||
|
||||
@@ -51,6 +51,7 @@ services:
|
||||
- SERVER_MODE=${SERVER_MODE:-release}
|
||||
- ENABLE_SERVER_TIMING=${ENABLE_SERVER_TIMING:-false}
|
||||
- RUN_MODE=${RUN_MODE:-standard}
|
||||
- SIMPLE_MODE_AUTO_CREATE_DEFAULT_GROUPS=${SIMPLE_MODE_AUTO_CREATE_DEFAULT_GROUPS:-}
|
||||
- UPDATE_GITHUB_TOKEN=${UPDATE_GITHUB_TOKEN:-}
|
||||
- ALIPAY_MOBILE_PRECREATE_DEEP_LINK=${ALIPAY_MOBILE_PRECREATE_DEEP_LINK:-}
|
||||
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
repo_root=$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd)
|
||||
cd "$repo_root"
|
||||
|
||||
python3 - <<'PY'
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
|
||||
key = "SIMPLE_MODE_AUTO_CREATE_DEFAULT_GROUPS"
|
||||
sample = Path("deploy/.env.example").read_text().splitlines()
|
||||
assert [line for line in sample if line.startswith(key + "=")] == [key + "="], \
|
||||
".env.example must preserve YAML configuration by leaving the override empty"
|
||||
|
||||
for filename in (
|
||||
"docker-compose.yml",
|
||||
"docker-compose.local.yml",
|
||||
"docker-compose.standalone.yml",
|
||||
"docker-compose.dev.yml",
|
||||
):
|
||||
path = Path("deploy") / filename
|
||||
expected = " - " + key + "=${" + key + ":-}"
|
||||
assert path.read_text().splitlines().count(expected) == 1, \
|
||||
f"{path} must pass the override with an empty fallback exactly once"
|
||||
for value in (None, "", "true", "false"):
|
||||
env = dict(
|
||||
os.environ, POSTGRES_PASSWORD="compose-test-password",
|
||||
DATABASE_HOST="postgres", DATABASE_PASSWORD="compose-test-password",
|
||||
REDIS_HOST="redis",
|
||||
)
|
||||
env.pop(key, None)
|
||||
if value is not None:
|
||||
env[key] = value
|
||||
result = subprocess.run(
|
||||
["docker", "compose", "--env-file", "/dev/null", "-f", str(path),
|
||||
"config", "--format", "json"],
|
||||
env=env, check=True, capture_output=True, text=True,
|
||||
)
|
||||
actual = json.loads(result.stdout)["services"]["sub2api"]["environment"][key]
|
||||
assert actual == (value or ""), f"{path}: override {value!r} rendered as {actual!r}"
|
||||
|
||||
print("docker compose simple mode environment test passed")
|
||||
PY
|
||||
Reference in New Issue
Block a user