commit 9f4eef051530b471444f8102f1f3432ea15f75f3 Author: Andrew Golovashevich Date: Sat Sep 27 16:14:53 2025 +0300 Working daemon with hardcoded params diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..85e7c1d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.idea/ diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..fdf08bd --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module maven-on-gitea-redirector + +go 1.24 diff --git a/main.go b/main.go new file mode 100644 index 0000000..c8a25f9 --- /dev/null +++ b/main.go @@ -0,0 +1,65 @@ +package main + +import ( + "fmt" + "log" + "net/http" + "net/http/httputil" + "strings" +) + +const DOMAIN = "git.landgrafhomyak.ru" + +var ORGS_LIST = []string{"Multitasking", "LanguageUtilities", "xomrk"} + +func searcher(w http.ResponseWriter, r *http.Request) { + for _, org := range ORGS_LIST { + actualUrl := fmt.Sprintf( + "https://%s/api/packages/%s/maven/%s", + DOMAIN, org, strings.TrimLeft(r.URL.Path, "/"), + ) + resp, err := http.Head(actualUrl) + if err != nil { + w.WriteHeader(500) + _, err := fmt.Fprintf(w, "%v", err) + if err != nil { + log.Fatal(err) + } + return + } + switch resp.StatusCode { + case 200: + w.Header().Set("Location", actualUrl) + w.WriteHeader(307) + return + case 404: + fallthrough + case 403: + continue + case 502: + fallthrough + case 503: + w.WriteHeader(503) + return + default: + w.WriteHeader(500) + rawResp, err := httputil.DumpResponse(resp, true) + if err != nil { + log.Fatal(err) + return + } + _, err = w.Write(rawResp) + if err != nil { + log.Fatal(err) + return + } + return + } + } + w.WriteHeader(404) +} + +func main() { + http.HandleFunc("/", searcher) + log.Fatal(http.ListenAndServe("localhost:49186", nil)) +}