dynamic conf
This commit is contained in:
@@ -21,6 +21,7 @@ func main() {
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
c.Start()
|
||||
|
||||
s := &http.Server{
|
||||
Addr: fmt.Sprintf(":%d", c.Port),
|
||||
@@ -40,7 +41,7 @@ func main() {
|
||||
|
||||
var resolver = dnscache.New(time.Minute * 500)
|
||||
|
||||
func (c Config) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
func (c *Config) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
endpoint := c.endpoint(r)
|
||||
if endpoint.To == "" {
|
||||
http.NotFound(w, r)
|
||||
@@ -54,7 +55,7 @@ func (c Config) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
func (c Config) serveHTTPRedir(w http.ResponseWriter, r *http.Request, endpoint Endpoint) {
|
||||
func (c *Config) serveHTTPRedir(w http.ResponseWriter, r *http.Request, endpoint Endpoint) {
|
||||
if !c.basicAuth(w, r) {
|
||||
return
|
||||
}
|
||||
@@ -68,7 +69,7 @@ func (c Config) serveHTTPRedir(w http.ResponseWriter, r *http.Request, endpoint
|
||||
|
||||
var someDialer = &net.Dialer{}
|
||||
|
||||
func (c Config) serveHTTPProxy(w http.ResponseWriter, r *http.Request, endpoint Endpoint) {
|
||||
func (c *Config) serveHTTPProxy(w http.ResponseWriter, r *http.Request, endpoint Endpoint) {
|
||||
cors(w)
|
||||
if r.Method == http.MethodOptions {
|
||||
w.Header().Set("Content-Length", "0")
|
||||
@@ -146,11 +147,11 @@ func cors(w http.ResponseWriter) {
|
||||
w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, OPTIONS, TRACE, PATCH, HEAD, DELETE")
|
||||
}
|
||||
|
||||
func (c Config) key(r *http.Request) string {
|
||||
func (c *Config) key(r *http.Request) string {
|
||||
return strings.Split(r.Host, ".")[0]
|
||||
}
|
||||
|
||||
func (c Config) handleAdmin(w http.ResponseWriter, r *http.Request) bool {
|
||||
func (c *Config) handleAdmin(w http.ResponseWriter, r *http.Request) bool {
|
||||
switch c.key(r) {
|
||||
case "_":
|
||||
panic("not impl: list")
|
||||
@@ -160,7 +161,7 @@ func (c Config) handleAdmin(w http.ResponseWriter, r *http.Request) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (c Config) basicAuth(w http.ResponseWriter, r *http.Request) bool {
|
||||
func (c *Config) basicAuth(w http.ResponseWriter, r *http.Request) bool {
|
||||
basicAuth := c.endpoint(r).BasicAuth
|
||||
if noAuth := basicAuth == ""; noAuth {
|
||||
return true
|
||||
@@ -176,7 +177,7 @@ func (c Config) basicAuth(w http.ResponseWriter, r *http.Request) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (c Config) endpoint(r *http.Request) Endpoint {
|
||||
func (c *Config) endpoint(r *http.Request) Endpoint {
|
||||
key := c.key(r)
|
||||
domain := strings.Split(strings.TrimPrefix(r.Host, key), ":")[0]
|
||||
m, ok := c.Domains[domain]
|
||||
|
||||
Reference in New Issue
Block a user