mirror of
https://github.com/yusing/godoxy.git
synced 2026-03-18 15:23:51 +01:00
43 lines
868 B
Go
43 lines
868 B
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
type ProxyConfig struct {
|
|
Alias string
|
|
Scheme string
|
|
Host string
|
|
Port string
|
|
LoadBalance string // docker provider only
|
|
Path string // http proxy only
|
|
PathMode string `yaml:"path_mode"` // http proxy only
|
|
|
|
provider *Provider
|
|
}
|
|
|
|
func NewProxyConfig(provider *Provider) ProxyConfig {
|
|
return ProxyConfig{
|
|
provider: provider,
|
|
}
|
|
}
|
|
|
|
// used by `GetFileProxyConfigs`
|
|
func (cfg *ProxyConfig) SetDefaults() error {
|
|
if cfg.Alias == "" {
|
|
return fmt.Errorf("alias is required")
|
|
}
|
|
if cfg.Scheme == "" {
|
|
cfg.Scheme = "http"
|
|
}
|
|
if cfg.Host == "" {
|
|
return fmt.Errorf("host is required for %q", cfg.Alias)
|
|
}
|
|
if cfg.Port == "" {
|
|
cfg.Port = "80"
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (cfg *ProxyConfig) GetID() string {
|
|
return fmt.Sprintf("%s-%s-%s-%s-%s", cfg.Alias, cfg.Scheme, cfg.Host, cfg.Port, cfg.Path)
|
|
}
|