web admin: use a textarea for allowed/denied ip mask fields

Fixes #621
This commit is contained in:
Nicola Murino 2021-11-25 13:08:12 +01:00
parent 4652f9ede8
commit aeb4675196
No known key found for this signature in database
GPG key ID: 2F1FB59433D5A8CB
2 changed files with 9 additions and 4 deletions

View file

@ -1620,18 +1620,21 @@ func checkEmptyFiltersStruct(user *User) {
func validateFilters(user *User) error {
checkEmptyFiltersStruct(user)
user.Filters.DeniedIP = util.RemoveDuplicates(user.Filters.DeniedIP)
for _, IPMask := range user.Filters.DeniedIP {
_, _, err := net.ParseCIDR(IPMask)
if err != nil {
return util.NewValidationError(fmt.Sprintf("could not parse denied IP/Mask %#v : %v", IPMask, err))
}
}
user.Filters.AllowedIP = util.RemoveDuplicates(user.Filters.AllowedIP)
for _, IPMask := range user.Filters.AllowedIP {
_, _, err := net.ParseCIDR(IPMask)
if err != nil {
return util.NewValidationError(fmt.Sprintf("could not parse allowed IP/Mask %#v : %v", IPMask, err))
}
}
user.Filters.DeniedLoginMethods = util.RemoveDuplicates(user.Filters.DeniedLoginMethods)
if len(user.Filters.DeniedLoginMethods) >= len(ValidLoginMethods) {
return util.NewValidationError("invalid denied_login_methods")
}
@ -1640,6 +1643,7 @@ func validateFilters(user *User) error {
return util.NewValidationError(fmt.Sprintf("invalid login method: %#v", loginMethod))
}
}
user.Filters.DeniedProtocols = util.RemoveDuplicates(user.Filters.DeniedProtocols)
if len(user.Filters.DeniedProtocols) >= len(ValidProtocols) {
return util.NewValidationError("invalid denied_protocols")
}
@ -1653,6 +1657,7 @@ func validateFilters(user *User) error {
return util.NewValidationError(fmt.Sprintf("invalid TLS username: %#v", user.Filters.TLSUsername))
}
}
user.Filters.WebClient = util.RemoveDuplicates(user.Filters.WebClient)
for _, opts := range user.Filters.WebClient {
if !util.IsStringInSlice(opts, sdk.WebClientOptions) {
return util.NewValidationError(fmt.Sprintf("invalid web client options %#v", opts))

View file

@ -477,8 +477,8 @@
<div class="form-group row">
<label for="idDeniedIP" class="col-sm-2 col-form-label">Denied IP/Mask</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="idDeniedIP" name="denied_ip" placeholder=""
value="{{.User.GetDeniedIPAsString}}" maxlength="255" aria-describedby="deniedIPHelpBlock">
<textarea class="form-control" id="idDeniedIP" name="denied_ip" rows="3" placeholder=""
aria-describedby="deniedIPHelpBlock">{{.User.GetDeniedIPAsString}}</textarea>
<small id="deniedIPHelpBlock" class="form-text text-muted">
Comma separated IP/Mask in CIDR format, for example "192.168.1.0/24,10.8.0.100/32"
</small>
@ -488,8 +488,8 @@
<div class="form-group row">
<label for="idAllowedIP" class="col-sm-2 col-form-label">Allowed IP/Mask</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="idAllowedIP" name="allowed_ip" placeholder=""
value="{{.User.GetAllowedIPAsString}}" maxlength="255" aria-describedby="allowedIPHelpBlock">
<textarea class="form-control" id="idAllowedIP" name="allowed_ip" rows="3" placeholder=""
aria-describedby="allowedIPHelpBlock">{{.User.GetAllowedIPAsString}}</textarea>
<small id="allowedIPHelpBlock" class="form-text text-muted">
Comma separated IP/Mask in CIDR format, for example "192.168.1.0/24,10.8.0.100/32"
</small>