package main import ( "io/ioutil" "github.com/go-yaml/yaml" ) type conf struct { Listens []listen `yaml:"listen"` Vhosts []vhost `yaml:"vhost"` Proxy proxycfg `yaml:"proxy"` } type proxycfg struct { HTTP1Proxy bool `yaml:"http1-proxy"` HTTP2Proxy bool `yaml:"http2-proxy"` LocalDomains []string `yaml:"localdomains"` } type listen struct { Addr string `yaml:"addr"` Port int16 `yaml:"port"` Certificates []certificate `yaml:"certificates"` } type certificate struct { CertFile string `yaml:"certfile"` KeyFile string `yaml:"keyfile"` } type vhost struct { Docroot string `yaml:"docroot"` Hostname string `yaml:"hostname"` ProxyPass string `yaml:"proxypass"` URLRules []struct { Prefix string `yaml:"prefix"` LuaFile string `yaml:"lua_file"` } `yaml:"url_rules"` } func loadConfig(fn string) (*conf, error) { data, err := ioutil.ReadFile(fn) if err != nil { return nil, err } var c conf if err := yaml.Unmarshal(data, &c); err != nil { return nil, err } return &c, nil }