Completed feature for #843

This commit is contained in:
Donald Zou
2025-08-17 18:58:28 +08:00
parent f418520f66
commit e61afba608
6 changed files with 34 additions and 18 deletions

View File

@@ -490,12 +490,12 @@ def API_updateDashboardConfigurationItem():
valid, msg = DashboardConfig.SetConfig(
data["section"], data["key"], data['value'])
if not valid:
return ResponseObject(False, msg, status_code=404)
return ResponseObject(False, msg)
if data['section'] == "Server":
if data['key'] == 'wg_conf_path':
WireguardConfigurations.clear()
WireguardConfigurations.clear()
InitWireguardConfigurationsList()
InitWireguardConfigurationsList()
return ResponseObject(True, data=DashboardConfig.GetConfig(data["section"], data["key"])[1])
@app.get(f'{APP_PREFIX}/api/getDashboardAPIKeys')

View File

@@ -251,7 +251,7 @@ class DashboardConfig:
except Exception as e:
return False
def GetConfig(self, section, key) ->tuple[bool, bool] | tuple[bool, str] | tuple[bool, list[str]] | tuple[bool, None]:
def GetConfig(self, section, key) ->tuple[bool, bool] | tuple[bool, str] | tuple[bool, list[str]] | tuple[bool, None]:
if section not in self.__config:
return False, None

View File

@@ -2,6 +2,9 @@
Peer
"""
import os, subprocess, uuid, random, re
import jinja2
from .PeerJob import PeerJob
from .PeerShareLink import PeerShareLink
from .Utilities import GenerateWireguardPublicKey, ValidateIPAddressesWithRange, ValidateDNSAddress
@@ -136,7 +139,10 @@ class Peer:
interfaceSection = {
"PrivateKey": self.private_key,
"Address": self.allowed_ip,
"MTU": self.mtu,
"MTU": (
self.configuration.configurationInfo.OverridePeerSettings.MTU
if self.configuration.configurationInfo.OverridePeerSettings.MTU else self.mtu
),
"DNS": (
self.configuration.configurationInfo.OverridePeerSettings.DNS
if self.configuration.configurationInfo.OverridePeerSettings.DNS else self.DNS
@@ -144,9 +150,16 @@ class Peer:
}
peerSection = {
"PublicKey": self.configuration.PublicKey,
"AllowedIPs": self.endpoint_allowed_ip,
"Endpoint": f'{self.configuration.DashboardConfig.GetConfig("Peers", "remote_endpoint")[1]}:{self.configuration.ListenPort}',
"PersistentKeepalive": self.keepalive,
"AllowedIPs": (
self.configuration.configurationInfo.OverridePeerSettings.EndpointAllowedIPs
if self.configuration.configurationInfo.OverridePeerSettings.EndpointAllowedIPs else self.endpoint_allowed_ip
),
"Endpoint": f'{(self.configuration.configurationInfo.OverridePeerSettings.PeerRemoteEndpoint if self.configuration.configurationInfo.OverridePeerSettings.PeerRemoteEndpoint else self.configuration.DashboardConfig.GetConfig("Peers", "remote_endpoint")[1])}:{(self.configuration.configurationInfo.OverridePeerSettings.ListenPort if self.configuration.configurationInfo.OverridePeerSettings.ListenPort else self.configuration.ListenPort)}',
"PersistentKeepalive": (
self.configuration.configurationInfo.OverridePeerSettings.PersistentKeepalive
if self.configuration.configurationInfo.OverridePeerSettings.PersistentKeepalive
else self.keepalive
),
"PresharedKey": self.preshared_key
}
combine = [interfaceSection.items(), peerSection.items()]
@@ -161,7 +174,7 @@ class Peer:
peerConfiguration += f"{key} = {val}\n"
return {
"fileName": finalFilename,
"file": peerConfiguration
"file": jinja2.Template(peerConfiguration).render(configuration=self.configuration)
}
def getJobs(self):

View File

@@ -4,6 +4,7 @@ import {DashboardConfigurationStore} from "@/stores/DashboardConfigurationStore.
import {computed, watch} from "vue";
const store = DashboardConfigurationStore();
import "@/utilities/wireguard.js"
import {fetchGet} from "@/utilities/fetch.js";
store.initCrossServerConfiguration();
if (window.IS_WGDASHBOARD_DESKTOP){
store.IsElectronApp = true;
@@ -15,7 +16,9 @@ watch(store.CrossServerConfiguration, () => {
deep: true
});
const route = useRoute()
fetchGet("/api/locale", {}, (res) => {
store.Locale = res.data
})
</script>
<template>

View File

@@ -11,13 +11,15 @@ import router from './router/router.js'
import {DashboardConfigurationStore} from "@/stores/DashboardConfigurationStore.js";
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
let Locale;
await fetch("/api/locale")
.then(res => res.json())
.then(res => Locale = res.data)
.catch(() => {
Locale = null
})
const app = createApp(App)
// await fetch("/api/locale")
// .then(res => res.json())
// .then(res => Locale = res.data)
// .catch(() => {
// Locale = null
// })
app.use(router)
const pinia = createPinia();
pinia.use(piniaPluginPersistedstate)
@@ -27,6 +29,4 @@ pinia.use(({ store }) => {
app.use(pinia)
const store = DashboardConfigurationStore()
store.Locale = Locale;
app.mount('#app')

View File

@@ -20,7 +20,7 @@ export const DashboardConfigurationStore = defineStore('DashboardConfigurationSt
ActiveServerConfiguration: undefined,
IsElectronApp: false,
ShowNavBar: false,
Locale: undefined,
Locale: null,
HelpAgent: {
Enable: false
}