mirror of
https://github.com/jc21/nginx-proxy-manager.git
synced 2024-08-30 18:22:48 +00:00
5e5f0de0e2
- Renamed host templates to nginx templates - Generate upstream templates - Better nginx error reporting when reloading - Use tparse for golang test reporting
40 lines
1.0 KiB
Go
40 lines
1.0 KiB
Go
package validator
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
|
|
"npm/internal/entity/nginxtemplate"
|
|
"npm/internal/entity/upstream"
|
|
)
|
|
|
|
// ValidateUpstream will check if associated objects exist and other checks
|
|
// will return a nil error if things are OK
|
|
func ValidateUpstream(u upstream.Model) error {
|
|
// Needs to have more than 1 server
|
|
if len(u.Servers) < 2 {
|
|
return errors.New("Upstreams require at least 2 servers")
|
|
}
|
|
|
|
// Backup servers aren't permitted with hash balancing
|
|
if u.IPHash {
|
|
// check all servers for a backup param
|
|
for _, server := range u.Servers {
|
|
if server.Backup {
|
|
return errors.New("Backup servers cannot be used with hash balancing")
|
|
}
|
|
}
|
|
}
|
|
|
|
// Check the nginx template exists and has the same type.
|
|
nginxTemplate, err := nginxtemplate.GetByID(u.NginxTemplateID)
|
|
if err != nil {
|
|
return fmt.Errorf("Nginx Template #%d does not exist", u.NginxTemplateID)
|
|
}
|
|
if nginxTemplate.Type != "upstream" {
|
|
return fmt.Errorf("Host Template #%d is not valid for this upstream", u.NginxTemplateID)
|
|
}
|
|
|
|
return nil
|
|
}
|