diff --git a/api/system/router.go b/api/system/router.go index e9b516d9..df536442 100644 --- a/api/system/router.go +++ b/api/system/router.go @@ -11,6 +11,7 @@ func InitPublicRouter(r *gin.RouterGroup) { } func InitPrivateRouter(r *gin.RouterGroup) { + r.GET("settings/server/name", GetServerName) r.GET("settings", GetSettings) r.POST("settings", SaveSettings) diff --git a/api/system/settings.go b/api/system/settings.go index b09bc3c3..ea7f8c7c 100644 --- a/api/system/settings.go +++ b/api/system/settings.go @@ -6,9 +6,14 @@ import ( "github.com/0xJacky/Nginx-UI/settings" "github.com/gin-gonic/gin" "net/http" - "reflect" ) +func GetServerName(c *gin.Context) { + c.JSON(http.StatusOK, gin.H{ + "name": settings.ServerSettings.Name, + }) +} + func GetSettings(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "server": settings.ServerSettings, @@ -35,10 +40,10 @@ func SaveSettings(c *gin.Context) { go cron.RestartLogrotate() } - fillSettings(&settings.ServerSettings, &json.Server) - fillSettings(&settings.NginxSettings, &json.Nginx) - fillSettings(&settings.OpenAISettings, &json.Openai) - fillSettings(&settings.LogrotateSettings, &json.Logrotate) + settings.ProtectedFill(&settings.ServerSettings, &json.Server) + settings.ProtectedFill(&settings.NginxSettings, &json.Nginx) + settings.ProtectedFill(&settings.OpenAISettings, &json.Openai) + settings.ProtectedFill(&settings.LogrotateSettings, &json.Logrotate) err := settings.Save() if err != nil { @@ -48,16 +53,3 @@ func SaveSettings(c *gin.Context) { GetSettings(c) } - -func fillSettings(targetSettings interface{}, newSettings interface{}) { - s := reflect.TypeOf(targetSettings).Elem() - vt := reflect.ValueOf(targetSettings).Elem() - vn := reflect.ValueOf(newSettings).Elem() - - // copy the values from new to target settings if it is not protected - for i := 0; i < s.NumField(); i++ { - if s.Field(i).Tag.Get("protected") != "true" { - vt.Field(i).Set(vn.Field(i)) - } - } -} diff --git a/app.example.ini b/app.example.ini index f0e97bcf..8657d406 100644 --- a/app.example.ini +++ b/app.example.ini @@ -15,6 +15,7 @@ HttpHost = 0.0.0.0 CertRenewalInterval = 7 RecursiveNameservers = SkipInstallation = false +Name = [nginx] AccessLogPath = /var/log/nginx/access.log diff --git a/app/src/api/settings.ts b/app/src/api/settings.ts index 6a8088f6..09146ba9 100644 --- a/app/src/api/settings.ts +++ b/app/src/api/settings.ts @@ -8,6 +8,10 @@ const settings = { save(data: any) { return http.post('/settings', data) }, + + get_server_name() { + return http.get('/settings/server/name') + }, } export default settings diff --git a/app/src/components/EnvIndicator/EnvIndicator.vue b/app/src/components/EnvIndicator/EnvIndicator.vue index 868d6d43..8630fbdb 100644 --- a/app/src/components/EnvIndicator/EnvIndicator.vue +++ b/app/src/components/EnvIndicator/EnvIndicator.vue @@ -4,6 +4,7 @@ import { storeToRefs } from 'pinia' import { useRouter } from 'vue-router' import { computed, watch } from 'vue' import { useSettingsStore } from '@/pinia' +import settings from '@/api/settings' const settingsStore = useSettingsStore() @@ -25,6 +26,12 @@ watch(node_id, async () => { await router.push('/dashboard') location.reload() }) + +const { server_name } = storeToRefs(useSettingsStore()) + +settings.get_server_name().then(r => { + server_name.value = r.name +}) + + + diff --git a/app/src/views/preference/OpenAISettings.vue b/app/src/views/preference/OpenAISettings.vue index 58c124ad..024cfaca 100644 --- a/app/src/views/preference/OpenAISettings.vue +++ b/app/src/views/preference/OpenAISettings.vue @@ -23,7 +23,13 @@ const models = shallowRef([