Refactor environment variables with shorter names and add comprehensive override support

- Rename OVERRIDE_INTERFACE_* to WG_* (shorter, non-conflicting)
- Add interface overrides: WG_PORT, WG_DEVICE, WG_MTU, WG_IPV4_CIDR, WG_IPV6_CIDR, WG_ENABLED
- Add client config overrides: WG_HOST, WG_CLIENT_PORT, WG_DEFAULT_DNS, WG_DEFAULT_ALLOWED_IPS, WG_DEFAULT_MTU, WG_DEFAULT_PERSISTENT_KEEPALIVE
- Add general config overrides: WG_SESSION_TIMEOUT, WG_METRICS_PROMETHEUS, WG_METRICS_JSON
- Update all API endpoints to apply and filter overrides
- Update documentation with all new environment variables
- Exclude AmneziaWG parameters (j*, s*, i*, h*) as requested

Co-authored-by: kaaax0815 <32197462+kaaax0815@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-11-14 13:25:22 +00:00
parent 5fd3ee9843
commit 67185192fd
9 changed files with 189 additions and 23 deletions
+2 -1
View File
@@ -1,4 +1,5 @@
export default definePermissionEventHandler('admin', 'any', async () => {
const generalConfig = await Database.general.getConfig();
return generalConfig;
const generalConfigWithOverrides = applyGeneralOverrides(generalConfig);
return generalConfigWithOverrides;
});
+14 -1
View File
@@ -8,7 +8,20 @@ export default definePermissionEventHandler(
event,
validateZod(GeneralUpdateSchema, event)
);
await Database.general.update(data);
// Remove overridden fields from the update data
const updateData = { ...data };
if (WG_GENERAL_OVERRIDE_ENV.SESSION_TIMEOUT !== undefined) {
delete updateData.sessionTimeout;
}
if (WG_GENERAL_OVERRIDE_ENV.METRICS_PROMETHEUS !== undefined) {
delete updateData.metricsPrometheus;
}
if (WG_GENERAL_OVERRIDE_ENV.METRICS_JSON !== undefined) {
delete updateData.metricsJson;
}
await Database.general.update(updateData);
return { success: true };
}
);
+10 -1
View File
@@ -9,7 +9,16 @@ export default definePermissionEventHandler(
validateZod(InterfaceCidrUpdateSchema, event)
);
await Database.interfaces.updateCidr(data);
// Remove overridden fields from the update data
const updateData = { ...data };
if (WG_OVERRIDE_ENV.IPV4_CIDR !== undefined) {
delete updateData.ipv4Cidr;
}
if (WG_OVERRIDE_ENV.IPV6_CIDR !== undefined) {
delete updateData.ipv6Cidr;
}
await Database.interfaces.updateCidr(updateData);
await WireGuard.saveConfig();
return { success: true };
}
+12 -3
View File
@@ -11,15 +11,24 @@ export default definePermissionEventHandler(
// Remove overridden fields from the update data
const updateData = { ...data };
if (WG_OVERRIDE_ENV.INTERFACE_PORT !== undefined) {
if (WG_OVERRIDE_ENV.PORT !== undefined) {
delete updateData.port;
}
if (WG_OVERRIDE_ENV.INTERFACE_DEVICE !== undefined) {
if (WG_OVERRIDE_ENV.DEVICE !== undefined) {
delete updateData.device;
}
if (WG_OVERRIDE_ENV.INTERFACE_MTU !== undefined) {
if (WG_OVERRIDE_ENV.MTU !== undefined) {
delete updateData.mtu;
}
if (WG_OVERRIDE_ENV.IPV4_CIDR !== undefined) {
delete updateData.ipv4Cidr;
}
if (WG_OVERRIDE_ENV.IPV6_CIDR !== undefined) {
delete updateData.ipv6Cidr;
}
if (WG_OVERRIDE_ENV.ENABLED !== undefined) {
delete updateData.enabled;
}
await Database.interfaces.update(updateData);
await WireGuard.saveConfig();
+2 -1
View File
@@ -1,4 +1,5 @@
export default definePermissionEventHandler('admin', 'any', async () => {
const userConfig = await Database.userConfigs.get();
return userConfig;
const userConfigWithOverrides = applyUserConfigOverrides(userConfig);
return userConfigWithOverrides;
});
+23 -1
View File
@@ -8,7 +8,29 @@ export default definePermissionEventHandler(
event,
validateZod(UserConfigUpdateSchema, event)
);
await Database.userConfigs.update(data);
// Remove overridden fields from the update data
const updateData = { ...data };
if (WG_CLIENT_OVERRIDE_ENV.HOST !== undefined) {
delete updateData.host;
}
if (WG_CLIENT_OVERRIDE_ENV.CLIENT_PORT !== undefined) {
delete updateData.port;
}
if (WG_CLIENT_OVERRIDE_ENV.DEFAULT_DNS !== undefined) {
delete updateData.defaultDns;
}
if (WG_CLIENT_OVERRIDE_ENV.DEFAULT_ALLOWED_IPS !== undefined) {
delete updateData.defaultAllowedIps;
}
if (WG_CLIENT_OVERRIDE_ENV.DEFAULT_MTU !== undefined) {
delete updateData.defaultMtu;
}
if (WG_CLIENT_OVERRIDE_ENV.DEFAULT_PERSISTENT_KEEPALIVE !== undefined) {
delete updateData.defaultPersistentKeepalive;
}
await Database.userConfigs.update(updateData);
await WireGuard.saveConfig();
return { success: true };
}