diff options
| author | Grégoire Duchêne <gduchene@awhk.org> | 2021-07-04 15:33:18 +0100 |
|---|---|---|
| committer | Grégoire Duchêne <gduchene@awhk.org> | 2021-07-04 15:33:18 +0100 |
| commit | 80b5a6680e2fc4d2f1e425ff2e5f1cfbbd529d9e (patch) | |
| tree | 6286c7d490ebfe4b8c1013dbb2807e8c55e0d71d /cmd | |
| parent | 8c5aaad11e949adfd1545b7802899b81f7d74ed5 (diff) | |
Simplify project structure
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/go-import-redirect/main.go | 87 | ||||
| -rw-r--r-- | cmd/go-import-redirect/main_aws.go | 40 |
2 files changed, 0 insertions, 127 deletions
diff --git a/cmd/go-import-redirect/main.go b/cmd/go-import-redirect/main.go deleted file mode 100644 index ea994b2..0000000 --- a/cmd/go-import-redirect/main.go +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (c) 2019, Grégoire Duchêne <gduchene@awhk.org> -// -// Use of this source code is governed by the ISC license that can be -// found in the LICENSE file. - -// +build !aws - -package main - -import ( - "context" - "fmt" - "log" - "net" - "net/http" - "os" - "os/signal" - "path" - "time" - - "golang.org/x/sys/unix" - - "go.awhk.org/go-import-redirect/internal" -) - -func redirect(resp http.ResponseWriter, req *http.Request) { - if req.Method != http.MethodGet { - resp.Header().Set("Allow", http.MethodGet) - resp.WriteHeader(http.StatusMethodNotAllowed) - return - } - - pkg := path.Join(req.Host, req.URL.Path) - resp.Header().Set("Content-Type", "text/html; charset=utf-8") - if req.URL.Query().Get("go-get") == "1" { - resp.WriteHeader(http.StatusOK) - } else { - resp.Header().Set("Location", "https://pkg.go.dev/"+pkg) - resp.WriteHeader(http.StatusFound) - } - if _, err := fmt.Fprint(resp, internal.GetBody(pkg)); err != nil { - log.Println("fmt.Fprint:", err) - } -} - -func main() { - mux := http.NewServeMux() - mux.HandleFunc("/", redirect) - srv := http.Server{Handler: mux} - - done := make(chan os.Signal, 1) - signal.Notify(done, os.Interrupt, unix.SIGTERM) - - go func() { - var ( - addr = os.Getenv("ADDR") - l net.Listener - err error - ) - if addr != "" && addr[0] == '/' { - if l, err = net.Listen("unix", addr); err != nil { - log.Fatalln("net.Listen:", err) - } - // We do not do any authorization anyway, so 0666 makes sense here. - if err = os.Chmod(addr, 0666); err != nil { - log.Fatalln("os.Chmod:", err) - } - } else { - if addr == "" { - addr = ":8080" - } - if l, err = net.Listen("tcp", addr); err != nil { - log.Fatalln("net.Listen:", err) - } - } - if err = srv.Serve(l); err != nil && err != http.ErrServerClosed { - log.Fatalln("server.ListenAndServe:", err) - } - }() - - <-done - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - if err := srv.Shutdown(ctx); err != nil && err != http.ErrServerClosed { - log.Fatalln("server.Shutdown:", err) - } -} diff --git a/cmd/go-import-redirect/main_aws.go b/cmd/go-import-redirect/main_aws.go deleted file mode 100644 index 4d4b0e7..0000000 --- a/cmd/go-import-redirect/main_aws.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) 2019, Grégoire Duchêne <gduchene@awhk.org> -// -// Use of this source code is governed by the ISC license that can be -// found in the LICENSE file. - -// +build aws,linux - -package main - -import ( - "context" - "net/http" - "path" - - "github.com/aws/aws-lambda-go/events" - "github.com/aws/aws-lambda-go/lambda" - - "go.awhk.org/go-import-redirect/internal" -) - -func redirect(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) { - var ( - pkg = path.Join(req.Headers["Host"], req.Path) - resp = events.APIGatewayProxyResponse{ - Body: internal.GetBody(pkg), - Headers: map[string]string{"Content-Type": "text/html; charset=utf-8"}, - } - ) - if v, ok := req.QueryStringParameters["go-get"]; ok && v == "1" { - resp.StatusCode = http.StatusOK - } else { - resp.Headers["Location"] = "https://pkg.go.dev/" + pkg - resp.StatusCode = http.StatusFound - } - return resp, nil -} - -func main() { - lambda.Start(redirect) -} |
