commit d6a24ca3c763a5032599258d74f5bbbe1ca7f6f7
parent 0e84e3c3f0ea883c3a836fe4f514909e5679e3d1
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Wed, 21 Jun 2023 20:14:00 -0700
test git subdomain
Diffstat:
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
}