74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
package config
|
|
|
|
type BaseConfiguration interface {
|
|
GetConfiguration() *Configuration
|
|
}
|
|
|
|
type Configuration struct {
|
|
Gateway Gateway `yaml:"gateway"`
|
|
Hosts []Host `yaml:"hosts"`
|
|
Targets []Target `yaml:"targets"`
|
|
Apis []Api `yaml:"apis"`
|
|
Routes []Route `yaml:"routes"`
|
|
}
|
|
|
|
type Gateway struct {
|
|
Host string `yaml:"host"`
|
|
Port int `yaml:"port"`
|
|
Features []string `yaml:"features"`
|
|
}
|
|
|
|
type Host struct {
|
|
ID string `yaml:"id"`
|
|
Name string `yaml:"name"`
|
|
Domain string `yaml:"domain"`
|
|
Secure bool `yaml:"secure"`
|
|
}
|
|
|
|
type Target struct {
|
|
ID string `yaml:"id"`
|
|
Name string `yaml:"name"`
|
|
URL string `yaml:"url"`
|
|
}
|
|
|
|
type Api struct {
|
|
ID string `yaml:"id"`
|
|
Host string `yaml:"host"`
|
|
Target string `yaml:"target"`
|
|
}
|
|
|
|
type Route struct {
|
|
ID string `yaml:"id"`
|
|
Api string `yaml:"api"`
|
|
Path string `yaml:"path"`
|
|
StripPrefix StripPrefix `yaml:"strip_prefix"`
|
|
Security Security `yaml:"security"`
|
|
}
|
|
|
|
type StripPrefix struct {
|
|
Enabled bool `yaml:"enabled"`
|
|
Prefix string `yaml:"prefix"`
|
|
}
|
|
|
|
type Security struct {
|
|
Auth Auth `yaml:"auth"`
|
|
WAF WAF `yaml:"waf"`
|
|
}
|
|
|
|
type Auth struct {
|
|
Enabled bool `yaml:"enabled"`
|
|
Type string `yaml:"type"`
|
|
Header string `yaml:"header"`
|
|
Path AuthPath `yaml:"path"`
|
|
}
|
|
|
|
type AuthPath struct {
|
|
Include []string `yaml:"include"`
|
|
Exclude []string `yaml:"exclude"`
|
|
}
|
|
|
|
type WAF struct {
|
|
Enabled bool `yaml:"enabled"`
|
|
Methods []string `yaml:"methods"`
|
|
}
|