Added client default settings page

Added client default settings page, where you can set Allowed IPs, Extra Allowed IPs, use server dns, enable after creation.
This commit is contained in:
Arminas 2023-02-10 07:22:24 +02:00 committed by GitHub
parent fdb36e4711
commit 5fff577c60
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 293 additions and 7 deletions

View file

@ -596,6 +596,22 @@ func GlobalSettings(db store.IStore) echo.HandlerFunc {
}
}
// ClientDefaultSettings handler
func ClientDefaultSettings(db store.IStore) echo.HandlerFunc {
return func(c echo.Context) error {
clientDefaultSettings, err := db.GetClientDefaultSettings()
if err != nil {
log.Error("Cannot get client default settings: ", err)
}
return c.Render(http.StatusOK, "client_default_settings.html", map[string]interface{}{
"baseData": model.BaseData{Active: "client-default-settings", CurrentUser: currentUser(c)},
"clientDefaultSettings": clientDefaultSettings,
})
}
}
// Status handler
func Status(db store.IStore) echo.HandlerFunc {
type PeerVM struct {
@ -709,6 +725,50 @@ func GlobalSettingSubmit(db store.IStore) echo.HandlerFunc {
}
}
// ClientDefaultSettingsSubmit handler to update the client default settings
func ClientDefaultSettingsSubmit(db store.IStore) echo.HandlerFunc {
return func(c echo.Context) error {
//data := make(map[string]interface{})
//err := json.NewDecoder(c.Request().Body).Decode(&data)
//if err != nil {
// return c.JSON(http.StatusBadRequest, jsonHTTPResponse{false, "Bad post data"})
//}
//
//var clientDefaultSettings model.ClientDefaults
//fmt.Println(data["allowed_ips"])
//
//clientDefaultSettings.AllowedIps = strings.Split(data["allowed_ips"].(string), ",")
//clientDefaultSettings.ExtraAllowedIps = strings.Split(data["extra_allowed_ips"].(string), ",")
//clientDefaultSettings.EnableAfterCreation = data["enable_after_creation"].(bool)
//clientDefaultSettings.UseServerDNS = data["use_server_dns"].(bool)
var clientDefaultSettings model.ClientDefaults
c.Bind(&clientDefaultSettings)
// validate the input allowed ips list
if util.ValidateCIDRList(clientDefaultSettings.AllowedIps, true) == false {
log.Warnf("Invalid Allowed IPs list input from user: %v", clientDefaultSettings.AllowedIps)
return c.JSON(http.StatusBadRequest, jsonHTTPResponse{false, "Allowed IPs must be in CIDR format"})
}
// validate the input extra allowed ips list
if util.ValidateCIDRList(clientDefaultSettings.ExtraAllowedIps, true) == false {
log.Warnf("Invalid Extra Allowed IPs list input from user: %v", clientDefaultSettings.ExtraAllowedIps)
return c.JSON(http.StatusBadRequest, jsonHTTPResponse{false, "Extra Allowed IPs must be in CIDR format"})
}
// write config to the database
if err := db.SaveClientDefaultSettings(clientDefaultSettings); err != nil {
return c.JSON(http.StatusInternalServerError, jsonHTTPResponse{false, "Error saving client default settings"})
}
log.Infof("Updated client default settings: %v", clientDefaultSettings)
return c.JSON(http.StatusOK, jsonHTTPResponse{true, "Updated client default settings successfully"})
}
}
// MachineIPAddresses handler to get local interface ip addresses
func MachineIPAddresses() echo.HandlerFunc {
return func(c echo.Context) error {