Files
api-gateway/app/config/config.go
2026-02-05 23:58:47 +01:00

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"`
}