diff options
| author | EuAndreh <eu@euandre.org> | 2024-11-15 19:48:16 -0300 |
|---|---|---|
| committer | EuAndreh <eu@euandre.org> | 2024-11-15 19:48:16 -0300 |
| commit | a1a3cb15b9c7e8767d6baea90fcf1e7dbc1f5a7d (patch) | |
| tree | bb70468c4a04d9a20266bc291ffd5e56f540c470 /src | |
| parent | Initial empty commit (diff) | |
| download | hsts-a1a3cb15b9c7e8767d6baea90fcf1e7dbc1f5a7d.tar.gz hsts-a1a3cb15b9c7e8767d6baea90fcf1e7dbc1f5a7d.tar.xz | |
First version with code imported from glaze, without tests
Diffstat (limited to 'src')
| -rw-r--r-- | src/hsts.go | 62 | ||||
| -rw-r--r-- | src/main.go | 7 |
2 files changed, 69 insertions, 0 deletions
diff --git a/src/hsts.go b/src/hsts.go new file mode 100644 index 0000000..16082de --- /dev/null +++ b/src/hsts.go @@ -0,0 +1,62 @@ +package hsts + +import ( + "fmt" + "log/slog" + "net" + "net/http" + "os" + + "guuid" + g "gobang" +) + + + +var countRedirection = g.MakeCounter("request-redirection") + + + +func redirectHandler(w http.ResponseWriter, r *http.Request) { + target := "https://" + r.Host + r.RequestURI + http.Redirect(w, r, target, http.StatusMovedPermanently) + countRedirection( + "id", guuid.New().String(), + "url-path", r.URL.Path, + "req-pattern", r.Pattern, + "method", r.Method, + "host", r.Host, + "uri", r.RequestURI, + ) +} + +func listen(fromAddr string) net.Listener { + listener, err := net.Listen("unix", fromAddr) + g.FatalIf(err) + g.Info( + "Started listening", "listen-start", + "from-address", fromAddr, + slog.Group( + "versions", + "guuid", guuid.Version, + "gobang", g.Version, + "hsts", Version, + ), + ) + return listener +} + + + +func Main() { + g.Init("program", "hsts") + + if len(os.Args) != 2 { + fmt.Fprintf(os.Stderr, "Usage: %s LISTEN.socket\n", os.Args[0]) + os.Exit(2) + } + + listener := listen(os.Args[1]) + err := http.Serve(listener, http.HandlerFunc(redirectHandler)) + g.FatalIf(err) +} diff --git a/src/main.go b/src/main.go new file mode 100644 index 0000000..9d796c6 --- /dev/null +++ b/src/main.go @@ -0,0 +1,7 @@ +package main + +import "hsts" + +func main() { + hsts.Main() +} |
