dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit d6a24ca3c763a5032599258d74f5bbbe1ca7f6f7
parent 0e84e3c3f0ea883c3a836fe4f514909e5679e3d1
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Wed, 21 Jun 2023 20:14:00 -0700

test git subdomain

Diffstat:
Mpkg/web/web.go | 26+++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/pkg/web/web.go b/pkg/web/web.go @@ -21,6 +21,8 @@ import ( yaml "gopkg.in/yaml.v1" "net" "net/http" + "net/http/httputil" + "net/url" "os" "os/signal" "regexp" @@ -345,7 +347,29 @@ func getI2pServer(db *database.DkfDB) *echo.Echo { } func getTorServer(db *database.DkfDB) *echo.Echo { - e := getBaseServer(db) + e := echo.New() + e.HideBanner = true + e.HidePort = true + e.Debug = true + e.Any("*", func(c echo.Context) error { + host := c.Request().Host + hostParts := strings.Split(host, ".") + if hostParts[0] == "git" { + remote, _ := url.Parse("http://127.0.0.1:3000/") + reverseProxy := httputil.NewSingleHostReverseProxy(remote) + reverseProxy.FlushInterval = 1000 * time.Millisecond + reverseProxy.ErrorHandler = func(w http.ResponseWriter, req *http.Request, e error) { + if e.Error() != "context canceled" { + logrus.Error(e.Error()) + } + w.WriteHeader(http.StatusBadGateway) + } + reverseProxy.ServeHTTP(c.Response(), c.Request()) + return nil + } + getBaseServer(db).ServeHTTP(c.Response(), c.Request()) + return nil + }) configTorProdServer(e) return e }