Home

tailroute @d9e0d689f11a1e5586bd34e71334c84c02971b93 - refs - log -
-
https://git.jolheiser.com/tailroute.git
Router for tailnet and funnel across tailscale
tailroute / tailproxy.go
- raw -
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package tailroute

import (
	"net/http"
	"net/http/httputil"
	"net/url"
)

func Proxy(target *url.URL, funnel bool) Router {
	proxy := httputil.NewSingleHostReverseProxy(target)
	proxyDirector := proxy.Director
	proxy.Director = func(r *http.Request) {
		proxyDirector(r)
		r.Host = target.Host
		r.Header.Set("X-Forwarded-Host", r.Header.Get("Host"))
	}
	handler := http.HandlerFunc(proxy.ServeHTTP)

	r := Router{
		Tailnet: handler,
	}
	if funnel {
		r.Funnel = handler
	}
	return r
}