feat: 每用户最大连接数改为可配置,默认 30

将 maxConnsPerUser 从硬编码常量(3)改为数据库动态配置项,管理员可在
/admin/vpn 隧道设置中调整,保存后对新连接立即生效。

- model/vpn.go: VpnSetting 新增 MaxConnsPerUser 字段,gorm default:30
- db/db.go: 种子数据设默认 30;旧库回填 0 值为 30
- vpn/tunnel.go: 删除 maxConnsPerUser 常量,改读 VPN.Settings(),兜底 30
- handler/vpn.go: API 响应/请求结构体新增字段,校验范围 1-1000
- VpnView.vue: 隧道设置表单新增"每用户最大连接数"输入框
- zh.ts/en.ts: 新增 maxConnsPerUser 文案,更新首页多设备描述
- docs/client-development.md: 更新常量表为可配置项
This commit is contained in:
2026-07-10 13:44:46 +08:00
parent f6a1fb6288
commit c63440435e
8 changed files with 45 additions and 14 deletions
+6
View File
@@ -16,6 +16,7 @@ interface Settings {
allow_client_to_client: boolean
do_local_ip_config: boolean
do_remote_ip_config: boolean
max_conns_per_user: number
}
interface ClientInfo {
user_id: number
@@ -83,6 +84,7 @@ const form = ref<Settings>({
allow_client_to_client: false,
do_local_ip_config: true,
do_remote_ip_config: true,
max_conns_per_user: 30,
})
async function fetchSettings() {
@@ -403,6 +405,10 @@ onMounted(() => {
<option :value="false">{{ t('vpn.manual') }}</option>
</select>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">{{ t('vpn.maxConnsPerUser') }}</label>
<input v-model.number="form.max_conns_per_user" type="number" min="1" max="1000" class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white" />
</div>
</div>
<div class="flex items-center gap-4 mt-6">
<button