From f6f00a54da5b371f6d9af0ff2223caefac47ab4b Mon Sep 17 00:00:00 2001 From: WeebDataHoarder <57538841+WeebDataHoarder@users.noreply.github.com> Date: Fri, 11 Apr 2025 07:50:02 +0200 Subject: [PATCH] Go 1.22 -> Go 1.24 bump --- .drone.jsonnet | 8 +++++--- .drone.yml | 14 +++++++------- README.md | 2 +- cmd/go-away/main.go | 38 +++++++++----------------------------- go.mod | 30 +++++++++--------------------- go.sum | 30 ++++++++++++++---------------- go.work | 6 ++++-- go.work.sum | 15 +++++++++++++-- utils/exp/go.mod | 4 ++-- utils/http.go | 22 ++++++++++++++++++++++ 10 files changed, 86 insertions(+), 83 deletions(-) diff --git a/.drone.jsonnet b/.drone.jsonnet index 9a3ef06..d174d80 100644 --- a/.drone.jsonnet +++ b/.drone.jsonnet @@ -93,14 +93,16 @@ local Publish(go, alpine, os, arch, trigger, platforms, extra) = { # [ - Build("1.22", "3.20", "linux", "amd64"), - Build("1.22", "3.20", "linux", "arm64"), + Build("1.24", "3.20", "linux", "amd64"), + Build("1.24", "3.20", "linux", "arm64"), Build("1.24", "3.21", "linux", "amd64"), Build("1.24", "3.21", "linux", "arm64"), # latest Publish("1.24", "3.21", "linux", "amd64", {event: ["push"], branch: ["master"], }, ["linux/amd64", "linux/arm64"], {tags: ["latest"],}) + {name: "publish-latest"}, + + # modern Publish("1.24", "3.21", "linux", "amd64", {event: ["promote", "tag"], target: ["production"], }, ["linux/amd64", "linux/arm64"], {auto_tag: true,}), # legacy - Publish("1.22", "3.20", "linux", "amd64", {event: ["promote", "tag"], target: ["production"], }, ["linux/amd64", "linux/arm64"], {auto_tag: true,}), + Publish("1.24", "3.20", "linux", "amd64", {event: ["promote", "tag"], target: ["production"], }, ["linux/amd64", "linux/arm64"], {auto_tag: true,}), ] \ No newline at end of file diff --git a/.drone.yml b/.drone.yml index 2a2a749..8099c12 100644 --- a/.drone.yml +++ b/.drone.yml @@ -4,7 +4,7 @@ environment: GOARCH: amd64 GOOS: linux kind: pipeline -name: build-1.22-alpine3.20-amd64 +name: build-1.24-alpine3.20-amd64 platform: arch: amd64 os: linux @@ -15,7 +15,7 @@ steps: - mkdir .bin - go build -v -o ./.bin/go-away ./cmd/go-away - go build -v -o ./.bin/test-wasm-runtime ./cmd/test-wasm-runtime - image: golang:1.22-alpine3.20 + image: golang:1.24-alpine3.20 name: build - commands: - ./.bin/test-wasm-runtime -wasm ./embed/challenge/js-pow-sha256/runtime/runtime.wasm @@ -44,7 +44,7 @@ environment: GOARCH: arm64 GOOS: linux kind: pipeline -name: build-1.22-alpine3.20-arm64 +name: build-1.24-alpine3.20-arm64 platform: arch: arm64 os: linux @@ -55,7 +55,7 @@ steps: - mkdir .bin - go build -v -o ./.bin/go-away ./cmd/go-away - go build -v -o ./.bin/test-wasm-runtime ./cmd/test-wasm-runtime - image: golang:1.22-alpine3.20 + image: golang:1.24-alpine3.20 name: build - commands: - ./.bin/test-wasm-runtime -wasm ./embed/challenge/js-pow-sha256/runtime/runtime.wasm @@ -232,7 +232,7 @@ trigger: type: docker --- kind: pipeline -name: publish-1.22-alpine3.20 +name: publish-1.24-alpine3.20 platform: arch: amd64 os: linux @@ -247,7 +247,7 @@ steps: auto_tag_suffix: alpine3.20 build_args: from: alpine:3.20 - from_builder: golang:1.22-alpine3.20 + from_builder: golang:1.24-alpine3.20 builder_driver: docker-container compress: true password: @@ -268,6 +268,6 @@ trigger: type: docker --- kind: signature -hmac: 3cbd114d368c7bd348105921d85c703db1c1bc46de79f00daabbca23ffac6050 +hmac: 8583621811fa483a6594352a8f9eeca7d66f6509f8e36bd2299b9e0723ed1451 ... diff --git a/README.md b/README.md index e605e55..51b9953 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ go-away for now only accepts plaintext connections, although it can take _HTTP/2 ### Binary / Go -Requires Go 1.22+. Builds statically without CGo +Requires Go 1.24+. Builds statically without CGo. ```shell git clone https://git.gammaspectra.live/git/go-away.git && cd go-away diff --git a/cmd/go-away/main.go b/cmd/go-away/main.go index f8f0fad..09e8f26 100644 --- a/cmd/go-away/main.go +++ b/cmd/go-away/main.go @@ -4,6 +4,7 @@ import ( "context" "crypto/ed25519" "crypto/rand" + "crypto/tls" "encoding/hex" "errors" "flag" @@ -14,8 +15,6 @@ import ( "github.com/pires/go-proxyproto" "golang.org/x/crypto/acme" "golang.org/x/crypto/acme/autocert" - "golang.org/x/net/http2" - "golang.org/x/net/http2/h2c" "gopkg.in/yaml.v3" "log" "log/slog" @@ -98,26 +97,6 @@ func (v *MultiVar) Set(value string) error { return nil } -func newServer(handler http.Handler, manager *autocert.Manager) *http.Server { - - if manager == nil { - h2s := &http2.Server{} - - // TODO: use Go 1.24 Server.Protocols to add H2C - // https://pkg.go.dev/net/http#Server.Protocols - h1s := &http.Server{ - Handler: h2c.NewHandler(handler, h2s), - } - - return h1s - } else { - return &http.Server{ - TLSConfig: manager.TLSConfig(), - Handler: handler, - } - } -} - func newACMEManager(clientDirectory string, backends map[string]http.Handler) *autocert.Manager { var domains []string @@ -262,7 +241,7 @@ func main() { } } - var acmeManager *autocert.Manager + var tlsConfig *tls.Config if *acmeAutocert != "" { switch *acmeAutocert { @@ -270,7 +249,7 @@ func main() { *acmeAutocert = "https://acme-v02.api.letsencrypt.org/directory" } - acmeManager = newACMEManager(*acmeAutocert, createdBackends) + acmeManager := newACMEManager(*acmeAutocert, createdBackends) if *cachePath != "" { err = os.MkdirAll(path.Join(*cachePath, "acme"), 0755) if err != nil { @@ -282,6 +261,7 @@ func main() { "acme-autocert enabled", "directory", *acmeAutocert, ) + tlsConfig = acmeManager.TLSConfig() } var wg sync.WaitGroup @@ -294,7 +274,7 @@ func main() { go func() { defer wg.Done() - server := newServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + server := utils.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { backend, ok := createdBackends[r.Host] if !ok { http.Error(w, http.StatusText(http.StatusServiceUnavailable), http.StatusServiceUnavailable) @@ -302,7 +282,7 @@ func main() { } backend.ServeHTTP(w, r) - }), acmeManager) + }), tlsConfig) listener, listenUrl := setupListener(*bindNetwork, *bind, *socketMode, *bindProxy) slog.Warn( @@ -315,7 +295,7 @@ func main() { go func() { defer wg.Done() - if acmeManager != nil { + if tlsConfig != nil { if err := server.ServeTLS(listener, "", ""); !errors.Is(err, http.ErrServerClosed) { log.Fatal(err) } @@ -369,9 +349,9 @@ func main() { "url", listenUrl, ) - server := newServer(state, acmeManager) + server := utils.NewServer(state, tlsConfig) - if acmeManager != nil { + if tlsConfig != nil { if err := server.ServeTLS(listener, "", ""); !errors.Is(err, http.ErrServerClosed) { log.Fatal(err) } diff --git a/go.mod b/go.mod index 32d8b60..2c0a661 100644 --- a/go.mod +++ b/go.mod @@ -1,21 +1,21 @@ module git.gammaspectra.live/git/go-away -go 1.22.0 +go 1.24.0 -toolchain go1.22.12 +toolchain go1.24.2 require ( codeberg.org/meta/gzipped/v2 v2.0.0-20231111234332-aa70c3194756 github.com/andybalholm/brotli v1.1.1 - github.com/go-jose/go-jose/v4 v4.0.5 + github.com/go-jose/go-jose/v4 v4.1.0 github.com/google/cel-go v0.24.1 github.com/itchyny/gojq v0.12.17 github.com/klauspost/compress v1.18.0 github.com/pires/go-proxyproto v0.8.0 github.com/tetratelabs/wazero v1.9.0 github.com/yl2chen/cidranger v1.0.2 - golang.org/x/crypto v0.33.0 - golang.org/x/net v0.35.0 + golang.org/x/crypto v0.37.0 + golang.org/x/net v0.39.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -25,25 +25,13 @@ require ( github.com/itchyny/timefmt-go v0.1.6 // indirect github.com/kevinpollet/nego v0.0.0-20211010160919-a65cd48cee43 // indirect github.com/stoewer/go-strcase v1.3.0 // indirect - golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac // indirect - golang.org/x/text v0.22.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7 // indirect + golang.org/x/exp v0.0.0 // indirect + golang.org/x/text v0.24.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250409194420-de1ac958c67a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250409194420-de1ac958c67a // indirect google.golang.org/protobuf v1.36.6 // indirect ) // Used by github.com/antlr4-go/antlr v4.13.0 via github.com/google/cel-go // Ensure we have no other exp package usages by only proxying the slices functions in that package -// Newer versions than v0.0.0-20250210185358-939b2ce775ac are not supported by Go 1.22 replace golang.org/x/exp v0.0.0 => ./utils/exp - -// Pin latest versions to support Go 1.22 to prevent a package update from changing them -// TODO: remove this when Go 1.22+ is supported by other higher users -replace ( - github.com/go-jose/go-jose/v4 => github.com/go-jose/go-jose/v4 v4.0.5 - golang.org/x/crypto => golang.org/x/crypto v0.33.0 - golang.org/x/net => golang.org/x/net v0.35.0 - golang.org/x/text => golang.org/x/text v0.22.0 - google.golang.org/genproto/googleapis/api => google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7 - google.golang.org/genproto/googleapis/rpc => google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7 -) diff --git a/go.sum b/go.sum index ea135e9..2cb7f54 100644 --- a/go.sum +++ b/go.sum @@ -9,12 +9,12 @@ github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmO github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= -github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= +github.com/go-jose/go-jose/v4 v4.1.0 h1:cYSYxd3pw5zd2FSXk2vGdn9igQU2PS8MuxrCOCl0FdY= +github.com/go-jose/go-jose/v4 v4.1.0/go.mod h1:GG/vqmYm3Von2nYiB2vGTXzdoNKE5tix5tuc6iAd+sw= github.com/google/cel-go v0.24.1 h1:jsBCtxG8mM5wiUJDSGUqU0K7Mtr3w7Eyv00rw4DiZxI= github.com/google/cel-go v0.24.1/go.mod h1:Hdf9TqOaTNSFQA1ybQaRqATVoK7m/zcf7IMhGXP5zI8= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/itchyny/gojq v0.12.17 h1:8av8eGduDb5+rvEdaOO+zQUjA04MS0m3Ps8HiD+fceg= github.com/itchyny/gojq v0.12.17/go.mod h1:WBrEMkgAfAGO1LUcGOckBl5O726KPp+OlkKug0I/FEY= github.com/itchyny/timefmt-go v0.1.6 h1:ia3s54iciXDdzWzwaVKXZPbiXzxxnv1SPGFfM/myJ5Q= @@ -44,18 +44,16 @@ github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZ github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/yl2chen/cidranger v1.0.2 h1:lbOWZVCG1tCRX4u24kuM1Tb4nHqWkDxwLdoS+SevawU= github.com/yl2chen/cidranger v1.0.2/go.mod h1:9U1yz7WPYDwf0vpNWFaeRh0bjwz5RVgRy/9UEQfHl0g= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= -golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac h1:l5+whBCLH3iH2ZNHYLbAe58bo7yrN4mVcnkHDYz5vvs= -golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac/go.mod h1:hH+7mtFmImwwcMvScyxUhjuVHR3HGaDPMn9rMSUUbxo= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= -google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7 h1:YcyjlL1PRr2Q17/I0dPk2JmYS5CDXfcdb2Z3YRioEbw= -google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7 h1:2035KHhUv+EpyB+hWgJnaWKJOdX1E95w2S8Rr4uWKTs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +google.golang.org/genproto/googleapis/api v0.0.0-20250409194420-de1ac958c67a h1:OQ7sHVzkx6L57dQpzUS4ckfWJ51KDH74XHTDe23xWAs= +google.golang.org/genproto/googleapis/api v0.0.0-20250409194420-de1ac958c67a/go.mod h1:2R6XrVC8Oc08GlNh8ujEpc7HkLiEZ16QeY7FxIs20ac= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250409194420-de1ac958c67a h1:GIqLhp/cYUkuGuiT+vJk8vhOP86L4+SP5j8yXgeVpvI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250409194420-de1ac958c67a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= diff --git a/go.work b/go.work index 92e132d..13af7b1 100644 --- a/go.work +++ b/go.work @@ -1,6 +1,8 @@ -go 1.22.0 +go 1.24.0 + +toolchain go1.24.2 use ( . utils/exp -) \ No newline at end of file +) diff --git a/go.work.sum b/go.work.sum index 8a2248d..b974cb4 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,5 +1,6 @@ github.com/golang/protobuf v1.5.0 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= @@ -7,20 +8,30 @@ github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= +golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= +golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY= golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= diff --git a/utils/exp/go.mod b/utils/exp/go.mod index ffb673b..46a2c31 100644 --- a/utils/exp/go.mod +++ b/utils/exp/go.mod @@ -1,5 +1,5 @@ module git.gammaspectra.live/git/go-away/utils/exp -go 1.22.0 +go 1.24.0 -toolchain go1.22.12 \ No newline at end of file +toolchain go1.24.2 \ No newline at end of file diff --git a/utils/http.go b/utils/http.go index 4a67afd..5b2bb7f 100644 --- a/utils/http.go +++ b/utils/http.go @@ -2,6 +2,7 @@ package utils import ( "context" + "crypto/tls" "errors" "fmt" "net" @@ -11,6 +12,27 @@ import ( "strings" ) +func NewServer(handler http.Handler, tlsConfig *tls.Config) *http.Server { + + if tlsConfig == nil { + proto := new(http.Protocols) + proto.SetHTTP1(true) + proto.SetUnencryptedHTTP2(true) + h1s := &http.Server{ + Handler: handler, + Protocols: proto, + } + + return h1s + } else { + server := &http.Server{ + TLSConfig: tlsConfig, + Handler: handler, + } + return server + } +} + func EnsureNoOpenRedirect(redirect string) (string, error) { uri, err := url.Parse(redirect) if err != nil {