diff --git a/config/config.go b/config/config.go index 19e58fe..4c65bf7 100644 --- a/config/config.go +++ b/config/config.go @@ -319,6 +319,9 @@ type Configuration struct { // is only required by users running Wings without SSL certificates and using internal IP // addresses in order to connect. Most users should NOT enable this setting. AllowCORSPrivateNetwork bool `json:"allow_cors_private_network" yaml:"allow_cors_private_network"` + + // IgnorePanelConfigUpdates causes confiuration updates that are sent by the panel to be ignored. + IgnorePanelConfigUpdates bool `json:"ignore_panel_config_updates" yaml:"ignore_panel_config_updates"` } // NewAtPath creates a new struct and set the path where it should be stored. diff --git a/router/router_system.go b/router/router_system.go index b40e1d1..9dbe605 100644 --- a/router/router_system.go +++ b/router/router_system.go @@ -113,9 +113,21 @@ func postCreateServer(c *gin.Context) { c.Status(http.StatusAccepted) } +type postUpdateConfigurationResponse struct { + Applied bool `json:"applied"` +} + // Updates the running configuration for this Wings instance. func postUpdateConfiguration(c *gin.Context) { cfg := config.Get() + + if cfg.IgnorePanelConfigUpdates { + c.JSON(http.StatusOK, postUpdateConfigurationResponse{ + Applied: false, + }) + return + } + if err := c.BindJSON(&cfg); err != nil { return } @@ -139,5 +151,7 @@ func postUpdateConfiguration(c *gin.Context) { // Since we wrote it to the disk successfully now update the global configuration // state to use this new configuration struct. config.Set(cfg) - c.Status(http.StatusNoContent) + c.JSON(http.StatusOK, postUpdateConfigurationResponse{ + Applied: true, + }) }