package controller import ( "github.com/gin-gonic/gin" "github.com/nezhahq/nezha/model" "github.com/nezhahq/nezha/service/singleton" ) // List settings // @Summary List settings // @Schemes // @Description List settings // @Security BearerAuth // @Tags common // @Produce json // @Success 200 {object} model.CommonResponse[model.SettingResponse] // @Router /setting [get] func listConfig(c *gin.Context) (model.SettingResponse, error) { _, isMember := c.Get(model.CtxKeyAuthorizedUser) authorized := isMember // TODO || isViewPasswordVerfied conf := model.SettingResponse{ Config: *singleton.Conf, Version: singleton.Version, } if !authorized { conf = model.SettingResponse{ Config: model.Config{ SiteName: conf.SiteName, Language: conf.Language, CustomCode: conf.CustomCode, CustomCodeDashboard: conf.CustomCodeDashboard, }, } } return conf, nil } // Edit config // @Summary Edit config // @Security BearerAuth // @Schemes // @Description Edit config // @Tags auth required // @Accept json // @Param body body model.SettingForm true "SettingForm" // @Produce json // @Success 200 {object} model.CommonResponse[any] // @Router /setting [patch] func updateConfig(c *gin.Context) (any, error) { var sf model.SettingForm if err := c.ShouldBindJSON(&sf); err != nil { return nil, err } singleton.Conf.Language = sf.Language singleton.Conf.EnableIPChangeNotification = sf.EnableIPChangeNotification singleton.Conf.EnablePlainIPInNotification = sf.EnablePlainIPInNotification singleton.Conf.Cover = sf.Cover singleton.Conf.InstallHost = sf.InstallHost singleton.Conf.IgnoredIPNotification = sf.IgnoredIPNotification singleton.Conf.IPChangeNotificationGroupID = sf.IPChangeNotificationGroupID singleton.Conf.SiteName = sf.SiteName singleton.Conf.DNSServers = sf.CustomNameservers singleton.Conf.CustomCode = sf.CustomCode singleton.Conf.CustomCodeDashboard = sf.CustomCodeDashboard singleton.Conf.RealIPHeader = sf.RealIPHeader singleton.Conf.TLS = sf.TLS if err := singleton.Conf.Save(); err != nil { return nil, newGormError("%v", err) } singleton.OnNameserverUpdate() singleton.OnUpdateLang(singleton.Conf.Language) return nil, nil }