diff --git a/.gitignore b/.gitignore index 429c991..b4fd78c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ SOURCES/grafana-9.2.10.tar.gz -SOURCES/grafana-vendor-9.2.10-20.tar.xz -SOURCES/grafana-webpack-9.2.10-20.tar.gz +SOURCES/grafana-vendor-9.2.10-21.tar.xz +SOURCES/grafana-webpack-9.2.10-21.tar.gz diff --git a/.grafana.metadata b/.grafana.metadata index a3bc3d0..e8387b7 100644 --- a/.grafana.metadata +++ b/.grafana.metadata @@ -1,3 +1,3 @@ 4c9db312dca444023c37c7af9acd2876a7e164b8 SOURCES/grafana-9.2.10.tar.gz -866e038c745dc28b5fa621ed4bce90e005d76ea2 SOURCES/grafana-vendor-9.2.10-20.tar.xz -ae5e714190ca155d6a6e9d38dab99d5aa0e988e1 SOURCES/grafana-webpack-9.2.10-20.tar.gz +f962d22ea13813f28dbf9d2a057c189b14051ff4 SOURCES/grafana-vendor-9.2.10-21.tar.xz +f66e9f954173212fb43bebd00756cf3c78362ea1 SOURCES/grafana-webpack-9.2.10-21.tar.gz diff --git a/SOURCES/0015-update-go-git-version.patch b/SOURCES/0015-update-go-git-version.patch new file mode 100644 index 0000000..fabde43 --- /dev/null +++ b/SOURCES/0015-update-go-git-version.patch @@ -0,0 +1,741 @@ +From ac22c0d4885eb4aef88089267b0363c7a0c43840 Mon Sep 17 00:00:00 2001 +From: root +Date: Tue, 14 Jan 2025 11:18:02 -0500 +Subject: [PATCH] update go-git version + +--- + .bingo/Variables.mk | 6 +- + .bingo/wire.mod | 4 +- + .bingo/wire.sum | 53 +++++++++++++++ + go.mod | 58 ++++++++-------- + go.sum | 157 ++++++++++++++++++++++++++++---------------- + 5 files changed, 190 insertions(+), 88 deletions(-) + +diff --git a/.bingo/Variables.mk b/.bingo/Variables.mk +index 7181d61fe20..5b8ecb90ab0 100644 +--- a/.bingo/Variables.mk ++++ b/.bingo/Variables.mk +@@ -41,9 +41,9 @@ $(SWAGGER): $(BINGO_DIR)/swagger.mod + @echo "(re)installing $(GOBIN)/swagger-v0.30.2" + @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=swagger.mod -o=$(GOBIN)/swagger-v0.30.2 "github.com/go-swagger/go-swagger/cmd/swagger" + +-WIRE := $(GOBIN)/wire-v0.5.0 ++WIRE := $(GOBIN)/wire-v0.6.0 + $(WIRE): $(BINGO_DIR)/wire.mod + @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. +- @echo "(re)installing $(GOBIN)/wire-v0.5.0" +- @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=wire.mod -o=$(GOBIN)/wire-v0.5.0 "github.com/google/wire/cmd/wire" ++ @echo "(re)installing $(GOBIN)/wire-v0.6.0" ++ @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=wire.mod -o=$(GOBIN)/wire-v0.6.0 "github.com/google/wire/cmd/wire" + +diff --git a/.bingo/wire.mod b/.bingo/wire.mod +index fc39b30da16..947ccebda59 100644 +--- a/.bingo/wire.mod ++++ b/.bingo/wire.mod +@@ -1,5 +1,5 @@ + module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT + +-go 1.16 ++go 1.21 + +-require github.com/google/wire v0.5.0 // cmd/wire ++require github.com/google/wire v0.6.0 // cmd/wire +diff --git a/.bingo/wire.sum b/.bingo/wire.sum +index 6d4b4b38644..be6e646d063 100644 +--- a/.bingo/wire.sum ++++ b/.bingo/wire.sum +@@ -1,13 +1,66 @@ + github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= + github.com/google/subcommands v1.0.1 h1:/eqq+otEXm5vhfBrbREPCSVQbvofip6kIz+mX5TUH7k= + github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= ++github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE= ++github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= + github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8= + github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= ++github.com/google/wire v0.6.0 h1:HBkoIh4BdSxoyo9PveV8giw7ZsaBOvzWKfcg/6MrVwI= ++github.com/google/wire v0.6.0/go.mod h1:F4QhpQ9EDIdJ1Mbop/NZBRB+5yrR6qg3BnctaoUk6NA= + github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= + github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= ++github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= + golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= ++golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= ++golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= ++golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= ++golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= ++golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= ++golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= ++golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= ++golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= + golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= ++golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= ++golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= ++golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= ++golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= ++golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= ++golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= ++golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= ++golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= ++golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= ++golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= ++golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= ++golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= + golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= ++golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= ++golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= ++golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= ++golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= ++golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= ++golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= ++golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= ++golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= ++golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= ++golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= ++golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= ++golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= ++golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= ++golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= + golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= ++golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= ++golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= ++golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= ++golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= ++golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= ++golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= ++golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= + golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b h1:NVD8gBK33xpdqCaZVVtd6OFJp+3dxkXuz7+U7KaVN6s= + golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= ++golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= ++golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= ++golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= ++golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= ++golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= ++golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= ++golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +diff --git a/go.mod b/go.mod +index 03c00985c45..414dff16a61 100644 +--- a/go.mod ++++ b/go.mod +@@ -1,6 +1,8 @@ + module github.com/grafana/grafana + +-go 1.19 ++go 1.21 ++ ++toolchain go1.21.13 + + // Override xorm's outdated go-mssqldb dependency, since we can't upgrade to current xorm (due to breaking changes). + // We need a more current go-mssqldb so we get rid of a version of apache/thrift with vulnerabilities. +@@ -37,7 +39,7 @@ require ( + github.com/fatih/color v1.13.0 + github.com/gchaincl/sqlhooks v1.3.0 + github.com/getsentry/sentry-go v0.13.0 +- github.com/go-git/go-git/v5 v5.4.2 ++ github.com/go-git/go-git/v5 v5.13.0 + github.com/go-kit/kit v0.11.0 + github.com/go-openapi/strfmt v0.21.3 + github.com/go-redis/redis/v8 v8.11.4 +@@ -49,9 +51,9 @@ require ( + github.com/gogo/protobuf v1.3.2 + github.com/golang/mock v1.6.0 + github.com/golang/snappy v0.0.4 +- github.com/google/go-cmp v0.5.8 ++ github.com/google/go-cmp v0.6.0 + github.com/google/uuid v1.3.0 +- github.com/google/wire v0.5.0 ++ github.com/google/wire v0.6.0 + github.com/gorilla/websocket v1.5.0 + github.com/gosimple/slug v1.12.0 + github.com/grafana/cuetsy v0.0.4-0.20220714174355-ebd987fdab27 +@@ -88,7 +90,7 @@ require ( + github.com/prometheus/prometheus v1.8.2-0.20211011171444-354d8d2ecfac + github.com/robfig/cron/v3 v3.0.1 + github.com/russellhaering/goxmldsig v1.1.1 +- github.com/stretchr/testify v1.8.0 ++ github.com/stretchr/testify v1.10.0 + github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf + github.com/ua-parser/uap-go v0.0.0-20211112212520-00c877edfe0f + github.com/uber/jaeger-client-go v2.29.1+incompatible +@@ -104,13 +106,13 @@ require ( + go.opentelemetry.io/otel/exporters/jaeger v1.0.0 + go.opentelemetry.io/otel/sdk v1.6.3 + go.opentelemetry.io/otel/trace v1.6.3 +- golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d +- golang.org/x/exp v0.0.0-20220613132600-b0d781184e0d +- golang.org/x/net v0.0.0-20220909164309-bea034e7d591 // indirect ++ golang.org/x/crypto v0.31.0 ++ golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 ++ golang.org/x/net v0.33.0 // indirect + golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb +- golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 ++ golang.org/x/sync v0.10.0 + golang.org/x/time v0.0.0-20220609170525-579cf78fd858 +- golang.org/x/tools v0.1.12 ++ golang.org/x/tools v0.23.0 + gonum.org/v1/gonum v0.11.0 + google.golang.org/api v0.74.0 + google.golang.org/grpc v1.45.0 +@@ -216,11 +218,11 @@ require ( + github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect + github.com/segmentio/encoding v0.3.5 + github.com/sercand/kuberesolver v2.4.0+incompatible // indirect +- github.com/sergi/go-diff v1.1.0 // indirect ++ github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect + github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect + github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546 // indirect +- github.com/sirupsen/logrus v1.8.1 // indirect +- github.com/stretchr/objx v0.4.0 // indirect ++ github.com/sirupsen/logrus v1.9.0 // indirect ++ github.com/stretchr/objx v0.5.2 // indirect + github.com/uber/jaeger-lib v2.4.1+incompatible // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/weaveworks/promrus v1.2.0 // indirect +@@ -229,8 +231,8 @@ require ( + go.opencensus.io v0.23.0 // indirect + go.uber.org/atomic v1.9.0 + go.uber.org/goleak v1.1.12 // indirect +- golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 // indirect +- golang.org/x/text v0.4.0 ++ golang.org/x/sys v0.28.0 // indirect ++ golang.org/x/text v0.21.0 + golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3 +@@ -263,10 +265,13 @@ require ( + + require ( + cloud.google.com/go v0.100.2 // indirect ++ dario.cat/mergo v1.0.0 // indirect + github.com/armon/go-metrics v0.3.10 // indirect + github.com/bmatcuk/doublestar v1.1.1 // indirect + github.com/buildkite/yaml v2.1.0+incompatible // indirect ++ github.com/cloudflare/circl v1.3.7 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect ++ github.com/cyphar/filepath-securejoin v0.2.5 // indirect + github.com/drone/drone-yaml v0.0.0-20190729072335-70fa398b3560 // indirect + github.com/google/go-querystring v1.1.0 // indirect + github.com/google/gofuzz v1.2.0 // indirect +@@ -275,8 +280,10 @@ require ( + github.com/hashicorp/memberlist v0.4.0 // indirect + github.com/mattn/go-colorable v0.1.12 // indirect + github.com/mitchellh/mapstructure v1.4.3 // indirect ++ github.com/pjbgf/sha1cd v0.3.0 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/segmentio/asm v1.1.4 // indirect ++ github.com/skeema/knownhosts v1.3.0 // indirect + go.starlark.net v0.0.0-20201118183435-e55f603d8c79 // indirect + ) + +@@ -286,10 +293,9 @@ require ( + github.com/Azure/azure-sdk-for-go/sdk/azcore v0.22.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.2.1 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0 // indirect +- github.com/Microsoft/go-winio v0.5.2 // indirect +- github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect ++ github.com/Microsoft/go-winio v0.6.1 // indirect ++ github.com/ProtonMail/go-crypto v1.1.3 // indirect + github.com/RoaringBitmap/roaring v0.9.4 // indirect +- github.com/acomagu/bufpipe v1.0.3 // indirect + github.com/axiomhq/hyperloglog v0.0.0-20191112132149-a4c4c47bc57f // indirect + github.com/bits-and-blooms/bitset v1.2.0 // indirect + github.com/blevesearch/go-porterstemmer v1.0.3 // indirect +@@ -303,36 +309,34 @@ require ( + github.com/containerd/containerd v1.6.6 // indirect + github.com/coreos/go-semver v0.3.0 // indirect + github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc // indirect +- github.com/elazarl/goproxy v0.0.0-20220115173737-adb46da277ac // indirect +- github.com/emirpasic/gods v1.12.0 // indirect ++ github.com/elazarl/goproxy v1.2.1 // indirect ++ github.com/emirpasic/gods v1.18.1 // indirect + github.com/fsnotify/fsnotify v1.5.4 // indirect + github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect +- github.com/go-git/gcfg v1.5.0 // indirect +- github.com/go-git/go-billy/v5 v5.3.1 // indirect ++ github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect ++ github.com/go-git/go-billy/v5 v5.6.0 // indirect + github.com/go-logr/logr v1.2.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/golang-jwt/jwt v3.2.2+incompatible // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect +- github.com/imdario/mergo v0.3.12 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect +- github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect ++ github.com/kevinburke/ssh_config v1.2.0 // indirect + github.com/klauspost/compress v1.15.2 // indirect + github.com/kylelemons/godebug v1.1.0 // indirect + github.com/labstack/echo/v4 v4.9.0 // indirect + github.com/labstack/gommon v0.3.1 // indirect +- github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-wordwrap v1.0.1 // indirect + github.com/mschoch/smat v0.2.0 // indirect + github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect + github.com/pierrec/lz4/v4 v4.1.8 // indirect + github.com/valyala/fasttemplate v1.2.1 // indirect + github.com/wk8/go-ordered-map v1.0.0 +- github.com/xanzy/ssh-agent v0.3.0 // indirect ++ github.com/xanzy/ssh-agent v0.3.3 // indirect + github.com/xlab/treeprint v1.1.0 // indirect + github.com/yudai/pp v2.0.1+incompatible // indirect + go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.3 // indirect + go.opentelemetry.io/proto/otlp v0.15.0 // indirect +- golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect ++ golang.org/x/mod v0.19.0 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect + k8s.io/api v0.22.5 // indirect + k8s.io/apimachinery v0.22.5 // indirect +diff --git a/go.sum b/go.sum +index e3b45a9f35e..2fb3ef8a1bc 100644 +--- a/go.sum ++++ b/go.sum +@@ -86,6 +86,8 @@ contrib.go.opencensus.io/exporter/stackdriver v0.13.10/go.mod h1:I5htMbyta491eUx + contrib.go.opencensus.io/integrations/ocsql v0.1.7/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= + cuelang.org/go v0.4.3 h1:W3oBBjDTm7+IZfCKZAmC8uDG0eYfJL4Pp/xbbCMKaVo= + cuelang.org/go v0.4.3/go.mod h1:7805vR9H+VoBNdWFdI7jyDR3QLUPp4+naHfbcgp55HI= ++dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= ++dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= + dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= + dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= + docker.io/go-docker v1.0.0/go.mod h1:7tiAn5a0LFmjbPDbyTPOaTTOuG1ZRNXdPA6RvKY+fpY= +@@ -236,8 +238,9 @@ github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugX + github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= + github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= + github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +-github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= + github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= ++github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= ++github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= + github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= + github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= + github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= +@@ -255,8 +258,8 @@ github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8 + github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= + github.com/OneOfOne/xxhash v1.2.5/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= + github.com/OneOfOne/xxhash v1.2.6/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= +-github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= +-github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= ++github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= ++github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= + github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= + github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= + github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +@@ -276,8 +279,6 @@ github.com/StackExchange/wmi v0.0.0-20210224194228-fe8f1750fd46/go.mod h1:3eOhrU + github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= + github.com/VividCortex/mysqlerr v0.0.0-20170204212430-6c6b55f8796f h1:HR5nRmUQgXrwqZOwZ2DAc/aCi3Bu3xENpspW935vxu0= + github.com/VividCortex/mysqlerr v0.0.0-20170204212430-6c6b55f8796f/go.mod h1:f3HiCrHjHBdcm6E83vGaXh1KomZMA2P6aeo3hKx/wg0= +-github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= +-github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= + github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= + github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= + github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +@@ -298,8 +299,8 @@ github.com/aliyun/aliyun-oss-go-sdk v2.0.4+incompatible/go.mod h1:T/Aws4fEfogEE9 + github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= + github.com/andybalholm/brotli v1.0.3 h1:fpcw+r1N1h0Poc1F/pHbW40cUm/lMEQslZtCkBQ0UnM= + github.com/andybalholm/brotli v1.0.3/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +-github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= +-github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= ++github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= ++github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= + github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= + github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= + github.com/antonmedv/expr v1.8.9/go.mod h1:5qsM3oLGDND7sDmQGDXHkYfkjYMUX14qsgqmHhwGEk8= +@@ -512,6 +513,8 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D + github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= + github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= + github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= ++github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= ++github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= + github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= + github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= + github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +@@ -670,6 +673,8 @@ github.com/crossdock/crossdock-go v0.0.0-20160816171116-049aabb0122b/go.mod h1:v + github.com/cucumber/godog v0.8.1/go.mod h1:vSh3r/lM+psC1BPXvdkSEuNjmXfpVqrMGYAElF6hxnA= + github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= + github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= ++github.com/cyphar/filepath-securejoin v0.2.5 h1:6iR5tXJ/e6tJZzzdMc1km3Sa7RRIVBKAK32O2s7AYfo= ++github.com/cyphar/filepath-securejoin v0.2.5/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= + github.com/cznic/b v0.0.0-20180115125044-35e9bbe41f07/go.mod h1:URriBxXwVq5ijiJ12C7iIZqlA69nTlI+LgI6/pwftG8= + github.com/cznic/fileutil v0.0.0-20180108211300-6a051e75936f/go.mod h1:8S58EK26zhXSxzv7NQFpnliaOQsmDUxvoQO3rt154Vg= + github.com/cznic/golex v0.0.0-20170803123110-4ab7c5e190e4/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc= +@@ -798,18 +803,16 @@ github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6 + github.com/elastic/go-windows v1.0.1/go.mod h1:FoVvqWSun28vaDQPbj2Elfc0JahhPB7WQEGa3c814Ss= + github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= + github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +-github.com/elazarl/goproxy v0.0.0-20220115173737-adb46da277ac h1:XDAn206aIqKPdF5YczuuJXSQPx+WOen0Pxbxp5Fq8Pg= +-github.com/elazarl/goproxy v0.0.0-20220115173737-adb46da277ac/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +-github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= +-github.com/elazarl/goproxy/ext v0.0.0-20220115173737-adb46da277ac h1:9yrT5tmn9Zc0ytWPASlaPwQfQMQYnRf0RSDe1XvHw0Q= ++github.com/elazarl/goproxy v1.2.1 h1:njjgvO6cRG9rIqN2ebkqy6cQz2Njkx7Fsfv/zIZqgug= ++github.com/elazarl/goproxy v1.2.1/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= + github.com/ema/qdisc v0.0.0-20190904071900-b82c76788043/go.mod h1:ix4kG2zvdUd8kEKSW0ZTr1XLks0epFpI4j745DXxlNE= + github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= + github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= + github.com/emicklei/proto v1.6.15/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= + github.com/emicklei/proto v1.10.0 h1:pDGyFRVV5RvV+nkBK9iy3q67FBy9Xa7vwrOTE+g5aGw= + github.com/emicklei/proto v1.10.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= +-github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= +-github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= ++github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= ++github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= + github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= + github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= + github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +@@ -842,7 +845,6 @@ github.com/felixge/fgprof v0.9.1/go.mod h1:7/HK6JFtFaARhIljgP2IV8rJLIoHDoOYoUphs + github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= + github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= + github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +-github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= + github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= + github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= + github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +@@ -877,8 +879,8 @@ github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 h1:Mn26/9ZMNWSw9C9ER + github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= + github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= + github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= +-github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= +-github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= ++github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= ++github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= + github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= + github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= + github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= +@@ -887,19 +889,19 @@ github.com/go-chi/chi v4.1.0+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxm + github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= + github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= + github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= ++github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= + github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= + github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= + github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= + github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= +-github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= +-github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= +-github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +-github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34= +-github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +-github.com/go-git/go-git-fixtures/v4 v4.2.1 h1:n9gGL1Ct/yIw+nfsfr8s4+sbhT+Ncu2SubfXjIWgci8= +-github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= +-github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= +-github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= ++github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= ++github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= ++github.com/go-git/go-billy/v5 v5.6.0 h1:w2hPNtoehvJIxR00Vb4xX94qHQi/ApZfX+nBE2Cjio8= ++github.com/go-git/go-billy/v5 v5.6.0/go.mod h1:sFDq7xD3fn3E0GOwUSZqHo9lrkmx8xJhA0ZrfvjBRGM= ++github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= ++github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= ++github.com/go-git/go-git/v5 v5.13.0 h1:vLn5wlGIh/X78El6r3Jr+30W16Blk0CTcxTYcYPWi5E= ++github.com/go-git/go-git/v5 v5.13.0/go.mod h1:Wjo7/JyVKtQgUNdXYXIepzWfJQkUEIGvkvVkiXRR/zw= + github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= + github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= + github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +@@ -1243,8 +1245,9 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ + github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= + github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= + github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +-github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= + github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= ++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-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= + github.com/google/go-github/v45 v45.2.0 h1:5oRLszbrkvxDDqBCNj2hjDZMKmvexaZ1xw/FCD+K3FI= + github.com/google/go-github/v45 v45.2.0/go.mod h1:FObaZJEDSTa/WGCzZ2Z3eoCDXWJKMenWWTrd8jrta28= +@@ -1296,14 +1299,16 @@ github.com/google/pprof v0.0.0-20210827144239-02619b876842/go.mod h1:kpwsk12EmLe + github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= + github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= + github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= ++github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= + github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= + github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= + github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= + github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= + github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= + github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +-github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8= + github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= ++github.com/google/wire v0.6.0 h1:HBkoIh4BdSxoyo9PveV8giw7ZsaBOvzWKfcg/6MrVwI= ++github.com/google/wire v0.6.0/go.mod h1:F4QhpQ9EDIdJ1Mbop/NZBRB+5yrR6qg3BnctaoUk6NA= + github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= + github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= + github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +@@ -1670,8 +1675,8 @@ github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F + github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= + github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= + github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= +-github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= +-github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= ++github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= ++github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= + github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= + github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= + github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +@@ -1703,8 +1708,9 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB + github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= + github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= + github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +-github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= + github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= ++github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= ++github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= + github.com/kr/pty v1.0.0/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= + github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= + github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= +@@ -1782,7 +1788,6 @@ github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ + github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= + github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= + github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= +-github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= + github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= + github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= + github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= +@@ -1997,8 +2002,9 @@ github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoT + github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= + github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= + github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= +-github.com/onsi/gomega v1.16.0 h1:6gjqkI8iiRHMvdccRJM8rVKjCWk6ZIm6FTm3ddIe4/c= + github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= ++github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= ++github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= + github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= + github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= + github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +@@ -2074,6 +2080,9 @@ github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi + github.com/pierrec/lz4/v4 v4.1.8 h1:ieHkV+i2BRzngO4Wd/3HGowuZStgq6QkPsD1eolNAO4= + github.com/pierrec/lz4/v4 v4.1.8/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= + github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= ++github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= ++github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= ++github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= + github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= + github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= + github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= +@@ -2217,14 +2226,14 @@ github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= + github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= + github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= + github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +-github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= + github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= + github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= + github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= + github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= + github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +-github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= + github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= ++github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= ++github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= + github.com/rs/cors v1.8.0/go.mod h1:EBwu+T5AvHOcXwvZIkQFjUN6s8Czyqw12GL/Y0tUyRM= + github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= + github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +@@ -2268,8 +2277,9 @@ github.com/sercand/kuberesolver v2.1.0+incompatible/go.mod h1:lWF3GL0xptCB/vCiJP + github.com/sercand/kuberesolver v2.4.0+incompatible h1:WE2OlRf6wjLxHwNkkFLQGaZcVLEXjMjBPjjEU5vksH8= + github.com/sercand/kuberesolver v2.4.0+incompatible/go.mod h1:lWF3GL0xptCB/vCiJPl/ZshwPsX/n4Y7u0CW9E7aQIQ= + github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +-github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= + github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= ++github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= ++github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= + github.com/shirou/gopsutil v3.21.6+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= + github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= + github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +@@ -2291,8 +2301,11 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd + github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo= + github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= + github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +-github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= + github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= ++github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= ++github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= ++github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= ++github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= + github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= + github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= + github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +@@ -2343,8 +2356,9 @@ github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+ + github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= + github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= + github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +-github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= + github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= ++github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= ++github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= + github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= + github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= + github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +@@ -2356,8 +2370,9 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 + github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= + github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= + github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +-github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= + github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= ++github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= ++github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= + github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= + github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= + github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +@@ -2459,8 +2474,8 @@ github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr + github.com/wk8/go-ordered-map v1.0.0 h1:BV7z+2PaK8LTSd/mWgY12HyMAo5CEgkHqbkVq2thqr8= + github.com/wk8/go-ordered-map v1.0.0/go.mod h1:9ZIbRunKbuvfPKyBP1SIKLcXNlv74YCOZ3t3VTS6gRk= + github.com/xanzy/go-gitlab v0.15.0/go.mod h1:8zdQa/ri1dfn8eS3Ir1SyfvOKlw7WBJ8DVThkpGiXrs= +-github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= +-github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= ++github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= ++github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= + github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= + github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= + github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= +@@ -2651,7 +2666,6 @@ golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnf + golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= + golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= + golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +-golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= + golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= + golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= + golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +@@ -2688,7 +2702,6 @@ golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWP + golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= + golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= + golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +-golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= + golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= + golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= + golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +@@ -2700,8 +2713,11 @@ golang.org/x/crypto v0.0.0-20220128200615-198e4374d7ed/go.mod h1:IxCIyHEi3zRg3s0 + golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= + golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= + golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +-golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY= + golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= ++golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= ++golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= ++golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= ++golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= + golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= + golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= + golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +@@ -2721,8 +2737,8 @@ golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMk + golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= + golang.org/x/exp v0.0.0-20200821190819-94841d0725da/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= + golang.org/x/exp v0.0.0-20210126221216-84987778548c/go.mod h1:I6l2HNBLBZEcrOoCpyKLdY2lHoRZ8lI4x60KMCQDft4= +-golang.org/x/exp v0.0.0-20220613132600-b0d781184e0d h1:vtUKgx8dahOomfFzLREU8nSv25YHnTgLBn4rDnWZdU0= +-golang.org/x/exp v0.0.0-20220613132600-b0d781184e0d/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= ++golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= ++golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= + golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= + golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= + golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +@@ -2761,8 +2777,12 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= + golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= + golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= + golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= + golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= ++golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= ++golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= ++golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= ++golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= ++golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= + golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= + golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= + golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +@@ -2831,7 +2851,6 @@ golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v + golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= + golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= + golang.org/x/net v0.0.0-20210324051636-2c4c8ecb7826/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +-golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= + golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= + golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= + golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +@@ -2853,8 +2872,12 @@ golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su + golang.org/x/net v0.0.0-20220401154927-543a649e0bdd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= + golang.org/x/net v0.0.0-20220418201149-a630d4f3e7a2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= + golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +-golang.org/x/net v0.0.0-20220909164309-bea034e7d591 h1:D0B/7al0LLrVC8aWF4+oxpv/m8bc7ViFfVS8/gXGdqI= +-golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= ++golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= ++golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= ++golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= ++golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= ++golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= ++golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= + golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= + golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= + golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +@@ -2897,8 +2920,12 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ + golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= + golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= + golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= ++golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= ++golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= ++golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= ++golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= ++golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= + golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= + golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= + golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +@@ -3033,7 +3060,6 @@ golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7w + golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +-golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= + golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +@@ -3070,14 +3096,25 @@ golang.org/x/sys v0.0.0-20220330033206-e17cdc41300f/go.mod h1:oPkhp1MJrh7nUepCBc + golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= + golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= + golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= ++golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= + golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +-golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 h1:WIoqL4EROvwiPdUtaip4VcDdpZ4kha7wBWZrbVKCIZg= + golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= ++golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= ++golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= ++golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= ++golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= ++golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= ++golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= + golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= + golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= + golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= + golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= ++golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= ++golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= ++golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= ++golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= ++golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= ++golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= + golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= + golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= + golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +@@ -3089,8 +3126,12 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= + golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= + golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= + golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +-golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= +-golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= ++golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= ++golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= ++golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= ++golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= ++golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= ++golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= + golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= + golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= + golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +@@ -3210,8 +3251,12 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= + golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= + golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= + golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +-golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= + golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= ++golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= ++golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= ++golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= ++golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= ++golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= + golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= + golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= + golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +-- +2.43.5 + diff --git a/SOURCES/0016-fix-macaron-version-error.patch b/SOURCES/0016-fix-macaron-version-error.patch new file mode 100644 index 0000000..e255eab --- /dev/null +++ b/SOURCES/0016-fix-macaron-version-error.patch @@ -0,0 +1,23 @@ +From 30d5b7ddf398799652420d636ed4ae2027447107 Mon Sep 17 00:00:00 2001 +From: root +Date: Tue, 14 Jan 2025 16:12:21 -0500 +Subject: [PATCH] fix macaron version error + +--- + pkg/web/macaron.go | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/pkg/web/macaron.go b/pkg/web/macaron.go +index 774f4d2d499..46ccd84f5eb 100644 +--- a/pkg/web/macaron.go ++++ b/pkg/web/macaron.go +@@ -1,6 +1,3 @@ +-//go:build go1.3 +-// +build go1.3 +- + // Copyright 2014 The Macaron Authors + // + // Licensed under the Apache License, Version 2.0 (the "License"): you may +-- +2.43.5 + diff --git a/SOURCES/1001-vendor-patch-removed-backend-crypto.patch b/SOURCES/1001-vendor-patch-removed-backend-crypto.patch index c8786da..5c4bd3f 100644 --- a/SOURCES/1001-vendor-patch-removed-backend-crypto.patch +++ b/SOURCES/1001-vendor-patch-removed-backend-crypto.patch @@ -435,197 +435,283 @@ diff --git a/vendor/github.com/prometheus/exporter-toolkit/web/tls_config.go b/v -func Listen(server *http.Server, tlsConfigPath string, logger log.Logger) error { - return ListenAndServe(server, tlsConfigPath, logger) -} -diff a/vendor/github.com/go-git/go-git/v5/options.go b/vendor/github.com/go-git/go-git/v5/options.go ---- a/vendor/github.com/go-git/go-git/v5/options.go 2022-10-30 20:00:00.000000000 -0400 -+++ b/vendor/github.com/go-git/go-git/v5/options.go 2022-12-20 10:24:35.162653691 -0500 -@@ -7,7 +7,7 @@ +diff --git a/vendor/github.com/go-git/go-git/v5/options.go b/vendor/github.com/go-git/go-git/v5/options.go +index 3cd0f952..65e5df68 100644 +--- a/vendor/github.com/go-git/go-git/v5/options.go ++++ b/vendor/github.com/go-git/go-git/v5/options.go +@@ -7,7 +7,7 @@ import ( "strings" "time" - "github.com/ProtonMail/go-crypto/openpgp" -+ // "github.com/ProtonMail/go-crypto/openpgp" ++ //"github.com/ProtonMail/go-crypto/openpgp" "github.com/go-git/go-git/v5/config" "github.com/go-git/go-git/v5/plumbing" - "github.com/go-git/go-git/v5/plumbing/object" -@@ -434,7 +434,7 @@ + formatcfg "github.com/go-git/go-git/v5/plumbing/format/config" +@@ -541,7 +541,7 @@ type CommitOptions struct { // SignKey denotes a key to sign the commit with. A nil value here means the // commit will not be signed. The private key must be present and already // decrypted. - SignKey *openpgp.Entity -+ // SignKey *openpgp.Entity - } - - // Validate validates the fields and sets the default values. -@@ -517,7 +517,7 @@ ++ // SignKey *openpgp.Entity + // Signer denotes a cryptographic signer to sign the commit with. + // A nil value here means the commit will not be signed. + // Takes precedence over SignKey. +@@ -639,7 +639,7 @@ type CreateTagOptions struct { Message string // SignKey denotes a key to sign the tag with. A nil value here means the tag // will not be signed. The private key must be present and already decrypted. - SignKey *openpgp.Entity -+ // SignKey *openpgp.Entity ++ // SignKey *openpgp.Entity } // Validate validates the fields and sets the default values. -diff a/vendor/github.com/go-git/go-git/v5/plumbing/object/commit.go b/vendor/github.com/go-git/go-git/v5/plumbing/object/commit.go ---- a/vendor/github.com/go-git/go-git/v5/plumbing/object/commit.go 2022-10-30 20:00:00.000000000 -0400 -+++ b/vendor/github.com/go-git/go-git/v5/plumbing/object/commit.go 2022-12-20 10:33:26.630073026 -0500 -@@ -9,7 +9,7 @@ +diff --git a/vendor/github.com/go-git/go-git/v5/plumbing/object/commit.go b/vendor/github.com/go-git/go-git/v5/plumbing/object/commit.go +index 3d096e18..f7720dc5 100644 +--- a/vendor/github.com/go-git/go-git/v5/plumbing/object/commit.go ++++ b/vendor/github.com/go-git/go-git/v5/plumbing/object/commit.go +@@ -8,7 +8,7 @@ import ( "io" "strings" - "github.com/ProtonMail/go-crypto/openpgp" -+ // "github.com/ProtonMail/go-crypto/openpgp" ++ // "github.com/ProtonMail/go-crypto/openpgp" "github.com/go-git/go-git/v5/plumbing" "github.com/go-git/go-git/v5/plumbing/storer" -@@ -354,7 +354,8 @@ +@@ -408,27 +408,30 @@ func (c *Commit) String() string { // Verify performs PGP verification of the commit with a provided armored // keyring and returns openpgp.Entity associated with verifying key on success. -func (c *Commit) Verify(armoredKeyRing string) (*openpgp.Entity, error) { +- keyRingReader := strings.NewReader(armoredKeyRing) +- keyring, err := openpgp.ReadArmoredKeyRing(keyRingReader) +- if err != nil { +- return nil, err +- } +func (c *Commit) Verify(armoredKeyRing string) (*int, error) { + /* - keyRingReader := strings.NewReader(armoredKeyRing) - keyring, err := openpgp.ReadArmoredKeyRing(keyRingReader) - if err != nil { -@@ -375,6 +376,8 @@ - } ++ keyRingReader := strings.NewReader(armoredKeyRing) ++ keyring, err := openpgp.ReadArmoredKeyRing(keyRingReader) ++ if err != nil { ++ return nil, err ++ } - return openpgp.CheckArmoredDetachedSignature(keyring, er, signature, nil) +- // Extract signature. +- signature := strings.NewReader(c.PGPSignature) ++ // Extract signature. ++ signature := strings.NewReader(c.PGPSignature) + +- encoded := &plumbing.MemoryObject{} +- // Encode commit components, excluding signature and get a reader object. +- if err := c.EncodeWithoutSignature(encoded); err != nil { +- return nil, err +- } +- er, err := encoded.Reader() +- if err != nil { +- return nil, err +- } ++ encoded := &plumbing.MemoryObject{} ++ // Encode commit components, excluding signature and get a reader object. ++ if err := c.EncodeWithoutSignature(encoded); err != nil { ++ return nil, err ++ } ++ er, err := encoded.Reader() ++ if err != nil { ++ return nil, err ++ } + +- return openpgp.CheckArmoredDetachedSignature(keyring, er, signature, nil) ++ return openpgp.CheckArmoredDetachedSignature(keyring, er, signature, nil) + */ -+ return nil, nil ++ return nil, nil } - func indent(t string) string { -diff a/vendor/github.com/go-git/go-git/v5/plumbing/object/tag.go b/vendor/github.com/go-git/go-git/v5/plumbing/object/tag.go ---- a/vendor/github.com/go-git/go-git/v5/plumbing/object/tag.go 2022-10-30 20:00:00.000000000 -0400 -+++ b/vendor/github.com/go-git/go-git/v5/plumbing/object/tag.go 2022-12-20 10:37:05.542949113 -0500 -@@ -6,9 +6,9 @@ + // Less defines a compare function to determine which commit is 'earlier' by: +diff --git a/vendor/github.com/go-git/go-git/v5/plumbing/object/tag.go b/vendor/github.com/go-git/go-git/v5/plumbing/object/tag.go +index cf46c08e..4579308e 100644 +--- a/vendor/github.com/go-git/go-git/v5/plumbing/object/tag.go ++++ b/vendor/github.com/go-git/go-git/v5/plumbing/object/tag.go +@@ -4,9 +4,10 @@ import ( + "bytes" "fmt" "io" - stdioutil "io/ioutil" - "strings" -+ // "strings" - "github.com/ProtonMail/go-crypto/openpgp" -+ // "github.com/ProtonMail/go-crypto/openpgp" - ++ // "strings" ++ ++ // "github.com/ProtonMail/go-crypto/openpgp" "github.com/go-git/go-git/v5/plumbing" "github.com/go-git/go-git/v5/plumbing/storer" -@@ -284,7 +284,8 @@ + "github.com/go-git/go-git/v5/utils/ioutil" +@@ -257,27 +258,30 @@ func (t *Tag) String() string { // Verify performs PGP verification of the tag with a provided armored // keyring and returns openpgp.Entity associated with verifying key on success. -func (t *Tag) Verify(armoredKeyRing string) (*openpgp.Entity, error) { +- keyRingReader := strings.NewReader(armoredKeyRing) +- keyring, err := openpgp.ReadArmoredKeyRing(keyRingReader) +- if err != nil { +- return nil, err +- } +func (t *Tag) Verify(armoredKeyRing string) (*int, error) { + /* - keyRingReader := strings.NewReader(armoredKeyRing) - keyring, err := openpgp.ReadArmoredKeyRing(keyRingReader) - if err != nil { -@@ -305,6 +306,8 @@ - } ++ keyRingReader := strings.NewReader(armoredKeyRing) ++ keyring, err := openpgp.ReadArmoredKeyRing(keyRingReader) ++ if err != nil { ++ return nil, err ++ } - return openpgp.CheckArmoredDetachedSignature(keyring, er, signature, nil) +- // Extract signature. +- signature := strings.NewReader(t.PGPSignature) ++ // Extract signature. ++ signature := strings.NewReader(t.PGPSignature) + +- encoded := &plumbing.MemoryObject{} +- // Encode tag components, excluding signature and get a reader object. +- if err := t.EncodeWithoutSignature(encoded); err != nil { +- return nil, err +- } +- er, err := encoded.Reader() +- if err != nil { +- return nil, err +- } ++ encoded := &plumbing.MemoryObject{} ++ // Encode tag components, excluding signature and get a reader object. ++ if err := t.EncodeWithoutSignature(encoded); err != nil { ++ return nil, err ++ } ++ er, err := encoded.Reader() ++ if err != nil { ++ return nil, err ++ } + +- return openpgp.CheckArmoredDetachedSignature(keyring, er, signature, nil) ++ return openpgp.CheckArmoredDetachedSignature(keyring, er, signature, nil) + */ + return nil, nil } // TagIter provides an iterator for a set of tags. -diff a/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/auth_method.go b/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/auth_method.go ---- a/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/auth_method.go 2022-10-30 20:00:00.000000000 -0400 -+++ b/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/auth_method.go 2022-12-20 13:42:13.659296361 -0500 -@@ -1,6 +1,7 @@ +diff --git a/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/auth_method.go b/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/auth_method.go +index f9c598e6..927ad49a 100644 +--- a/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/auth_method.go ++++ b/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/auth_method.go +@@ -1,6 +1,6 @@ package ssh - import ( -+ /* +-import ( ++/* "errors" "fmt" - "io/ioutil" -@@ -14,6 +15,7 @@ + "os" +@@ -12,7 +12,7 @@ import ( + "github.com/skeema/knownhosts" sshagent "github.com/xanzy/ssh-agent" "golang.org/x/crypto/ssh" - "golang.org/x/crypto/ssh/knownhosts" -+ */ - ) +-) ++*/ const DefaultUsername = "git" -@@ -22,10 +24,12 @@ + +@@ -20,10 +20,12 @@ const DefaultUsername = "git" // must implement. The clientConfig method returns the ssh client // configuration needed to establish an ssh connection. type AuthMethod interface { +- transport.AuthMethod +- // ClientConfig should return a valid ssh.ClientConfig to be used to create +- // a connection to the SSH server. +- ClientConfig() (*ssh.ClientConfig, error) + /* - transport.AuthMethod - // ClientConfig should return a valid ssh.ClientConfig to be used to create - // a connection to the SSH server. - ClientConfig() (*ssh.ClientConfig, error) ++ transport.AuthMethod ++ // ClientConfig should return a valid ssh.ClientConfig to be used to create ++ // a connection to the SSH server. ++ ClientConfig() (*ssh.ClientConfig, error) + */ } // The names of the AuthMethod implementations. To be returned by the -@@ -42,78 +46,101 @@ +@@ -40,78 +42,102 @@ const ( // KeyboardInteractive implements AuthMethod by using a // prompt/response sequence controlled by the server. type KeyboardInteractive struct { +- User string +- Challenge ssh.KeyboardInteractiveChallenge +- HostKeyCallbackHelper + /* - User string - Challenge ssh.KeyboardInteractiveChallenge - HostKeyCallbackHelper ++ User string ++ Challenge ssh.KeyboardInteractiveChallenge ++ HostKeyCallbackHelper + */ } func (a *KeyboardInteractive) Name() string { - return KeyboardInteractiveName -+ // return KeyboardInteractiveName ++ // return KeyboardInteractiveName + return "" } func (a *KeyboardInteractive) String() string { - return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) -+ // return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) -+ return "" ++ // return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) ++ return "" } -func (a *KeyboardInteractive) ClientConfig() (*ssh.ClientConfig, error) { +- return a.SetHostKeyCallback(&ssh.ClientConfig{ +- User: a.User, +- Auth: []ssh.AuthMethod{ +- a.Challenge, +- }, +- }) +func (a *KeyboardInteractive) ClientConfig() (*int, error) { + /* - return a.SetHostKeyCallback(&ssh.ClientConfig{ - User: a.User, - Auth: []ssh.AuthMethod{ - a.Challenge, - }, - }) ++ return a.SetHostKeyCallback(&ssh.ClientConfig{ ++ User: a.User, ++ Auth: []ssh.AuthMethod{ ++ a.Challenge, ++ }, ++ }) + */ + return nil, nil } // Password implements AuthMethod by using the given password. type Password struct { +- User string +- Password string +- HostKeyCallbackHelper + /* - User string - Password string - HostKeyCallbackHelper ++ User string ++ Password string ++ HostKeyCallbackHelper + */ } func (a *Password) Name() string { - return PasswordName -+ // return PasswordName ++ // return PasswordName + return "" } func (a *Password) String() string { - return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) -+ // return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) ++ // return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) + return "" } -func (a *Password) ClientConfig() (*ssh.ClientConfig, error) { +- return a.SetHostKeyCallback(&ssh.ClientConfig{ +- User: a.User, +- Auth: []ssh.AuthMethod{ssh.Password(a.Password)}, +- }) +func (a *Password) ClientConfig() (*int, error) { + /* - return a.SetHostKeyCallback(&ssh.ClientConfig{ - User: a.User, - Auth: []ssh.AuthMethod{ssh.Password(a.Password)}, - }) ++ return a.SetHostKeyCallback(&ssh.ClientConfig{ ++ User: a.User, ++ Auth: []ssh.AuthMethod{ssh.Password(a.Password)}, ++ }) + */ + return nil, nil } @@ -633,58 +719,78 @@ diff a/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/auth_method.go // PasswordCallback implements AuthMethod by using a callback // to fetch the password. type PasswordCallback struct { +- User string +- Callback func() (pass string, err error) +- HostKeyCallbackHelper + /* - User string - Callback func() (pass string, err error) - HostKeyCallbackHelper ++ User string ++ Callback func() (pass string, err error) ++ HostKeyCallbackHelper + */ } func (a *PasswordCallback) Name() string { - return PasswordCallbackName -+ // return PasswordCallbackName ++ // return PasswordCallbackName + return "" ++ } func (a *PasswordCallback) String() string { - return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) -+ // return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) ++ //return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) + return "" } -func (a *PasswordCallback) ClientConfig() (*ssh.ClientConfig, error) { +- return a.SetHostKeyCallback(&ssh.ClientConfig{ +- User: a.User, +- Auth: []ssh.AuthMethod{ssh.PasswordCallback(a.Callback)}, +- }) +func (a *PasswordCallback) ClientConfig() (*int, error) { + /* - return a.SetHostKeyCallback(&ssh.ClientConfig{ - User: a.User, - Auth: []ssh.AuthMethod{ssh.PasswordCallback(a.Callback)}, - }) ++ return a.SetHostKeyCallback(&ssh.ClientConfig{ ++ User: a.User, ++ Auth: []ssh.AuthMethod{ssh.PasswordCallback(a.Callback)}, ++ }) + */ + return nil, nil } // PublicKeys implements AuthMethod by using the given key pairs. type PublicKeys struct { +- User string +- Signer ssh.Signer +- HostKeyCallbackHelper + /* - User string - Signer ssh.Signer - HostKeyCallbackHelper ++ User string ++ Signer ssh.Signer ++ HostKeyCallbackHelper + */ } // NewPublicKeys returns a PublicKeys from a PEM encoded private key. An -@@ -121,6 +148,7 @@ +@@ -119,102 +145,126 @@ type PublicKeys struct { // encrypted PEM block otherwise password should be empty. It supports RSA // (PKCS#1), PKCS#8, DSA (OpenSSL), and ECDSA private keys. func NewPublicKeys(user string, pemBytes []byte, password string) (*PublicKeys, error) { +- signer, err := ssh.ParsePrivateKey(pemBytes) +- if _, ok := err.(*ssh.PassphraseMissingError); ok { +- signer, err = ssh.ParsePrivateKeyWithPassphrase(pemBytes, []byte(password)) +- } +- if err != nil { +- return nil, err +- } +- return &PublicKeys{User: user, Signer: signer}, nil + /* - signer, err := ssh.ParsePrivateKey(pemBytes) - if _, ok := err.(*ssh.PassphraseMissingError); ok { - signer, err = ssh.ParsePrivateKeyWithPassphrase(pemBytes, []byte(password)) -@@ -129,36 +157,47 @@ - return nil, err - } - return &PublicKeys{User: user, Signer: signer}, nil ++ signer, err := ssh.ParsePrivateKey(pemBytes) ++ if _, ok := err.(*ssh.PassphraseMissingError); ok { ++ signer, err = ssh.ParsePrivateKeyWithPassphrase(pemBytes, []byte(password)) ++ } ++ if err != nil { ++ return nil, err ++ } ++ return &PublicKeys{User: user, Signer: signer}, nil + */ + return nil, nil } @@ -693,60 +799,89 @@ diff a/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/auth_method.go // encoded private key. An encryption password should be given if the pemBytes // contains a password encrypted PEM block otherwise password should be empty. func NewPublicKeysFromFile(user, pemFile, password string) (*PublicKeys, error) { +- bytes, err := os.ReadFile(pemFile) +- if err != nil { +- return nil, err +- } + /* - bytes, err := ioutil.ReadFile(pemFile) - if err != nil { - return nil, err - } ++ bytes, err := os.ReadFile(pemFile) ++ if err != nil { ++ return nil, err ++ } - return NewPublicKeys(user, bytes, password) +- return NewPublicKeys(user, bytes, password) ++ return NewPublicKeys(user, bytes, password) + */ + return nil, nil } func (a *PublicKeys) Name() string { - return PublicKeysName -+ // return PublicKeysName ++ // return PublicKeysName + return "" } func (a *PublicKeys) String() string { - return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) -+ // return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) ++ // return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) + return "" } -func (a *PublicKeys) ClientConfig() (*ssh.ClientConfig, error) { +- return a.SetHostKeyCallback(&ssh.ClientConfig{ +- User: a.User, +- Auth: []ssh.AuthMethod{ssh.PublicKeys(a.Signer)}, +- }) +func (a *PublicKeys) ClientConfig() (*int, error) { + /* - return a.SetHostKeyCallback(&ssh.ClientConfig{ - User: a.User, - Auth: []ssh.AuthMethod{ssh.PublicKeys(a.Signer)}, - }) ++ return a.SetHostKeyCallback(&ssh.ClientConfig{ ++ User: a.User, ++ Auth: []ssh.AuthMethod{ssh.PublicKeys(a.Signer)}, ++ }) + */ + return nil, nil } func username() (string, error) { +- var username string +- if user, err := user.Current(); err == nil { +- username = user.Username +- } else { +- username = os.Getenv("USER") +- } +- +- if username == "" { +- return "", errors.New("failed to get username") +- } +- +- return username, nil + /* - var username string - if user, err := user.Current(); err == nil { - username = user.Username -@@ -171,20 +210,25 @@ - } - - return username, nil ++ var username string ++ if user, err := user.Current(); err == nil { ++ username = user.Username ++ } else { ++ username = os.Getenv("USER") ++ } ++ ++ if username == "" { ++ return "", errors.New("failed to get username") ++ } ++ ++ return username, nil + */ -+ return "", nil ++ return "", nil } // PublicKeysCallback implements AuthMethod by asking a // ssh.agent.Agent to act as a signer. type PublicKeysCallback struct { +- User string +- Callback func() (signers []ssh.Signer, err error) +- HostKeyCallbackHelper + /* - User string - Callback func() (signers []ssh.Signer, err error) - HostKeyCallbackHelper ++ User string ++ Callback func() (signers []ssh.Signer, err error) ++ HostKeyCallbackHelper + */ } @@ -754,148 +889,268 @@ diff a/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/auth_method.go // a pipe with the SSH agent and uses the pipe as the implementer of the public // key callback function. func NewSSHAgentAuth(u string) (*PublicKeysCallback, error) { +- var err error +- if u == "" { +- u, err = username() +- if err != nil { +- return nil, err + /* - var err error - if u == "" { - u, err = username() -@@ -202,21 +246,28 @@ - User: u, - Callback: a.Signers, - }, nil ++ var err error ++ if u == "" { ++ u, err = username() ++ if err != nil { ++ return nil, err ++ } + } +- } + +- a, _, err := sshagent.New() +- if err != nil { +- return nil, fmt.Errorf("error creating SSH agent: %q", err) +- } ++ a, _, err := sshagent.New() ++ if err != nil { ++ return nil, fmt.Errorf("error creating SSH agent: %q", err) ++ } + +- return &PublicKeysCallback{ +- User: u, +- Callback: a.Signers, +- }, nil ++ return &PublicKeysCallback{ ++ User: u, ++ Callback: a.Signers, ++ }, nil + */ + return nil, nil } func (a *PublicKeysCallback) Name() string { - return PublicKeysCallbackName -+ // return PublicKeysCallbackName -+ return "" ++ // return PublicKeysCallbackName ++ return "" } func (a *PublicKeysCallback) String() string { - return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) -+ // return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) ++ // return fmt.Sprintf("user: %s, name: %s", a.User, a.Name()) + return "" } -func (a *PublicKeysCallback) ClientConfig() (*ssh.ClientConfig, error) { +- return a.SetHostKeyCallback(&ssh.ClientConfig{ +- User: a.User, +- Auth: []ssh.AuthMethod{ssh.PublicKeysCallback(a.Callback)}, +- }) +func (a *PublicKeysCallback) ClientConfig() (*int, error) { -+ /* - return a.SetHostKeyCallback(&ssh.ClientConfig{ - User: a.User, - Auth: []ssh.AuthMethod{ssh.PublicKeysCallback(a.Callback)}, - }) ++ /* ++ return a.SetHostKeyCallback(&ssh.ClientConfig{ ++ User: a.User, ++ Auth: []ssh.AuthMethod{ssh.PublicKeysCallback(a.Callback)}, ++ }) + */ + return nil, nil } // NewKnownHostsCallback returns ssh.HostKeyCallback based on a file based on a -@@ -229,7 +280,8 @@ - // If SSH_KNOWN_HOSTS is not set the following file locations will be used: - // ~/.ssh/known_hosts - // /etc/ssh/ssh_known_hosts +@@ -229,63 +279,75 @@ func (a *PublicKeysCallback) ClientConfig() (*ssh.ClientConfig, error) { + // + // ~/.ssh/known_hosts + // /etc/ssh/ssh_known_hosts -func NewKnownHostsCallback(files ...string) (ssh.HostKeyCallback, error) { +- db, err := newKnownHostsDb(files...) +- return db.HostKeyCallback(), err +func NewKnownHostsCallback(files ...string) (*int, error) { + /* - var err error - - if len(files) == 0 { -@@ -243,9 +295,12 @@ - } - - return knownhosts.New(files...) ++ db, err := newKnownHostsDb(files...) ++ return db.HostKeyCallback(), err + */ + return nil, nil } --func getDefaultKnownHostsFiles() ([]string, error) { -+func getDefaultKnownHostsFiles() (*int, error) { +-func newKnownHostsDb(files ...string) (*knownhosts.HostKeyDB, error) { +- var err error ++func newKnownHostsDb(files ...string) (*int, error) { + /* - files := filepath.SplitList(os.Getenv("SSH_KNOWN_HOSTS")) - if len(files) != 0 { - return files, nil -@@ -260,9 +315,12 @@ - filepath.Join(homeDirPath, "/.ssh/known_hosts"), - "/etc/ssh/ssh_known_hosts", - }, nil ++ var err error + +- if len(files) == 0 { +- if files, err = getDefaultKnownHostsFiles(); err != nil { +- return nil, err ++ if len(files) == 0 { ++ if files, err = getDefaultKnownHostsFiles(); err != nil { ++ return nil, err ++ } + } +- } +- +- if files, err = filterKnownHostsFiles(files...); err != nil { +- return nil, err +- } + +- return knownhosts.NewDB(files...) +-} ++ if files, err = filterKnownHostsFiles(files...); err != nil { ++ return nil, err ++ } + +-func getDefaultKnownHostsFiles() ([]string, error) { +- files := filepath.SplitList(os.Getenv("SSH_KNOWN_HOSTS")) +- if len(files) != 0 { +- return files, nil +- } +- +- homeDirPath, err := os.UserHomeDir() +- if err != nil { +- return nil, err +- } +- +- return []string{ +- filepath.Join(homeDirPath, "/.ssh/known_hosts"), +- "/etc/ssh/ssh_known_hosts", +- }, nil ++ return knownhosts.NewDB(files...) + */ + return nil, nil } -func filterKnownHostsFiles(files ...string) ([]string, error) { +- var out []string +- for _, file := range files { +- _, err := os.Stat(file) +- if err == nil { +- out = append(out, file) +- continue ++func getDefaultKnownHostsFiles() (*int, error) { ++ /* ++ files := filepath.SplitList(os.Getenv("SSH_KNOWN_HOSTS")) ++ if len(files) != 0 { ++ return files, nil + } + +- if !os.IsNotExist(err) { ++ homeDirPath, err := os.UserHomeDir() ++ if err != nil { + return nil, err + } +- } + +- if len(out) == 0 { +- return nil, fmt.Errorf("unable to find any valid known_hosts file, set SSH_KNOWN_HOSTS env variable") +- } ++ return []string{ ++ filepath.Join(homeDirPath, "/.ssh/known_hosts"), ++ "/etc/ssh/ssh_known_hosts", ++ }, nil ++ */ ++ return nil, nil ++} ++ +func filterKnownHostsFiles(files ...string) (*int, error) { + /* - var out []string - for _, file := range files { - _, err := os.Stat(file) -@@ -281,6 +339,8 @@ - } ++ var out []string ++ for _, file := range files { ++ _, err := os.Stat(file) ++ if err == nil { ++ out = append(out, file) ++ continue ++ } ++ ++ if !os.IsNotExist(err) { ++ return nil, err ++ } ++ } - return out, nil +- return out, nil ++ if len(out) == 0 { ++ return nil, fmt.Errorf("unable to find any valid known_hosts file, set SSH_KNOWN_HOSTS env variable") ++ } ++ ++ return out, nil + */ + return nil, nil } // HostKeyCallbackHelper is a helper that provides common functionality to -@@ -289,13 +349,14 @@ +@@ -294,21 +356,24 @@ type HostKeyCallbackHelper struct { // HostKeyCallback is the function type used for verifying server keys. // If nil default callback will be create using NewKnownHostsCallback // without argument. - HostKeyCallback ssh.HostKeyCallback -+ // HostKeyCallback ssh.HostKeyCallback ++ // HostKeyCallback ssh.HostKeyCallback } // SetHostKeyCallback sets the field HostKeyCallback in the given cfg. If // HostKeyCallback is empty a default callback is created using // NewKnownHostsCallback. -func (m *HostKeyCallbackHelper) SetHostKeyCallback(cfg *ssh.ClientConfig) (*ssh.ClientConfig, error) { +- if m.HostKeyCallback == nil { +- db, err := newKnownHostsDb() +- if err != nil { +- return cfg, err +func (m *HostKeyCallbackHelper) SetHostKeyCallback(*int) (*int, error) { + /* - var err error - if m.HostKeyCallback == nil { - if m.HostKeyCallback, err = NewKnownHostsCallback(); err != nil { -@@ -305,4 +366,6 @@ ++ if m.HostKeyCallback == nil { ++ db, err := newKnownHostsDb() ++ if err != nil { ++ return cfg, err ++ } ++ m.HostKeyCallback = db.HostKeyCallback() + } +- m.HostKeyCallback = db.HostKeyCallback() +- } - cfg.HostKeyCallback = m.HostKeyCallback - return cfg, nil +- cfg.HostKeyCallback = m.HostKeyCallback +- return cfg, nil ++ cfg.HostKeyCallback = m.HostKeyCallback ++ return cfg, nil + */ + return nil, nil } -diff a/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/common.go b/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/common.go ---- a/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/common.go 2022-10-30 20:00:00.000000000 -0400 -+++ b/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/common.go 2022-12-20 14:01:25.825788050 -0500 -@@ -2,18 +2,22 @@ +diff --git a/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/common.go b/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/common.go +index a37024f0..2a8e1f44 100644 +--- a/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/common.go ++++ b/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/common.go +@@ -2,20 +2,23 @@ package ssh import ( - "context" -+ // "context" ++ // "context" "fmt" +- "net" +- "reflect" +- "strconv" +- "strings" + /* - "reflect" - "strconv" - "strings" ++ "net" ++ "reflect" ++ "strconv" ++ "strings" + */ "github.com/go-git/go-git/v5/plumbing/transport" "github.com/go-git/go-git/v5/plumbing/transport/internal/common" "github.com/kevinburke/ssh_config" +- "golang.org/x/crypto/ssh" +- "golang.org/x/net/proxy" +-) + /* - "golang.org/x/crypto/ssh" - "golang.org/x/net/proxy" -+ */ - ) ++ "golang.org/x/crypto/ssh" ++ "golang.org/x/net/proxy" ++ */) // DefaultClient is the default SSH client. -@@ -28,23 +32,26 @@ + var DefaultClient = NewClient(nil) +@@ -29,79 +32,92 @@ type sshConfig interface { } // NewClient creates a new SSH client with an optional *ssh.ClientConfig. -func NewClient(config *ssh.ClientConfig) transport.Transport { - return common.NewClient(&runner{config: config}) +func NewClient(*int) transport.Transport { -+ // return common.NewClient(&runner{config: config}) ++ // return common.NewClient(&runner{config: config}) + return nil } @@ -903,7 +1158,7 @@ diff a/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/common.go b/ven // the user doesn't provide any. var DefaultAuthBuilder = func(user string) (AuthMethod, error) { - return NewSSHAgentAuth(user) -+ // return NewSSHAgentAuth(user) ++ // return NewSSHAgentAuth(user) + return nil, nil } @@ -911,119 +1166,382 @@ diff a/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/common.go b/ven type runner struct { - config *ssh.ClientConfig -+ // config *ssh.ClientConfig ++ // config *ssh.ClientConfig } func (r *runner) Command(cmd string, ep *transport.Endpoint, auth transport.AuthMethod) (common.Command, error) { +- c := &command{command: cmd, endpoint: ep, config: r.config} +- if auth != nil { +- if err := c.setAuth(auth); err != nil { +- return nil, err + /* - c := &command{command: cmd, endpoint: ep, config: r.config} - if auth != nil { - c.setAuth(auth) -@@ -54,9 +61,12 @@ - return nil, err - } - return c, nil ++ c := &command{command: cmd, endpoint: ep, config: r.config} ++ if auth != nil { ++ if err := c.setAuth(auth); err != nil { ++ return nil, err ++ } + } +- } + +- if err := c.connect(); err != nil { +- return nil, err +- } +- return c, nil ++ if err := c.connect(); err != nil { ++ return nil, err ++ } ++ return c, nil + */ + return nil, nil } type command struct { +- *ssh.Session +- connected bool +- command string +- endpoint *transport.Endpoint +- client *ssh.Client +- auth AuthMethod +- config *ssh.ClientConfig + /* - *ssh.Session - connected bool - command string -@@ -64,24 +74,29 @@ - client *ssh.Client - auth AuthMethod - config *ssh.ClientConfig ++ *ssh.Session ++ connected bool ++ command string ++ endpoint *transport.Endpoint ++ client *ssh.Client ++ auth AuthMethod ++ config *ssh.ClientConfig + */ } func (c *command) setAuth(auth transport.AuthMethod) error { +- a, ok := auth.(AuthMethod) +- if !ok { +- return transport.ErrInvalidAuthMethod +- } + /* - a, ok := auth.(AuthMethod) - if !ok { - return transport.ErrInvalidAuthMethod - } ++ a, ok := auth.(AuthMethod) ++ if !ok { ++ return transport.ErrInvalidAuthMethod ++ } - c.auth = a +- c.auth = a ++ c.auth = a + */ return nil } func (c *command) Start() error { - return c.Session.Start(endpointToCommand(c.command, c.endpoint)) -+ // return c.Session.Start(endpointToCommand(c.command, c.endpoint)) ++ // return c.Session.Start(endpointToCommand(c.command, c.endpoint)) + return nil } // Close closes the SSH session and connection. func (c *command) Close() error { +- if !c.connected { +- return nil +- } + /* - if !c.connected { - return nil - } -@@ -99,6 +114,8 @@ - } ++ if !c.connected { ++ return nil ++ } - return err +- c.connected = false ++ c.connected = false + +- //XXX: If did read the full packfile, then the session might be already +- // closed. +- _ = c.Session.Close() +- err := c.client.Close() ++ //XXX: If did read the full packfile, then the session might be already ++ // closed. ++ _ = c.Session.Close() ++ err := c.client.Close() + +- //XXX: in go1.16+ we can use errors.Is(err, net.ErrClosed) +- if err != nil && strings.HasSuffix(err.Error(), "use of closed network connection") { +- return nil +- } ++ //XXX: in go1.16+ we can use errors.Is(err, net.ErrClosed) ++ if err != nil && strings.HasSuffix(err.Error(), "use of closed network connection") { ++ return nil ++ } + +- return err ++ return err + */ + return nil } // connect connects to the SSH server, unless a AuthMethod was set with -@@ -106,6 +123,7 @@ +@@ -109,153 +125,164 @@ func (c *command) Close() error { // it connects to a SSH agent, using the address stored in the SSH_AUTH_SOCK // environment var. func (c *command) connect() error { +- if c.connected { +- return transport.ErrAlreadyConnected +- } + /* - if c.connected { - return transport.ErrAlreadyConnected - } -@@ -136,10 +154,12 @@ - } ++ if c.connected { ++ return transport.ErrAlreadyConnected ++ } - c.connected = true +- if c.auth == nil { +- if err := c.setAuthFromEndpoint(); err != nil { +- return err ++ if c.auth == nil { ++ if err := c.setAuthFromEndpoint(); err != nil { ++ return err ++ } + } +- } + +- var err error +- config, err := c.auth.ClientConfig() +- if err != nil { +- return err +- } +- hostWithPort := c.getHostWithPort() +- if config.HostKeyCallback == nil { +- db, err := newKnownHostsDb() ++ var err error ++ config, err := c.auth.ClientConfig() + if err != nil { + return err + } ++ hostWithPort := c.getHostWithPort() ++ if config.HostKeyCallback == nil { ++ db, err := newKnownHostsDb() ++ if err != nil { ++ return err ++ } ++ ++ config.HostKeyCallback = db.HostKeyCallback() ++ config.HostKeyAlgorithms = db.HostKeyAlgorithms(hostWithPort) ++ } else if len(config.HostKeyAlgorithms) == 0 { ++ // Set the HostKeyAlgorithms based on HostKeyCallback. ++ // For background see https://github.com/go-git/go-git/issues/411 as well as ++ // https://github.com/golang/go/issues/29286 for root cause. ++ db, err := newKnownHostsDb() ++ if err != nil { ++ return err ++ } ++ ++ // Note that the knownhost database is used, as it provides additional functionality ++ // to handle ssh cert-authorities. ++ config.HostKeyAlgorithms = db.HostKeyAlgorithms(hostWithPort) ++ } ++ ++ overrideConfig(c.config, config) + +- config.HostKeyCallback = db.HostKeyCallback() +- config.HostKeyAlgorithms = db.HostKeyAlgorithms(hostWithPort) +- } else if len(config.HostKeyAlgorithms) == 0 { +- // Set the HostKeyAlgorithms based on HostKeyCallback. +- // For background see https://github.com/go-git/go-git/issues/411 as well as +- // https://github.com/golang/go/issues/29286 for root cause. +- db, err := newKnownHostsDb() ++ c.client, err = dial("tcp", hostWithPort, c.endpoint.Proxy, config) + if err != nil { + return err + } + +- // Note that the knownhost database is used, as it provides additional functionality +- // to handle ssh cert-authorities. +- config.HostKeyAlgorithms = db.HostKeyAlgorithms(hostWithPort) +- } +- +- overrideConfig(c.config, config) +- +- c.client, err = dial("tcp", hostWithPort, c.endpoint.Proxy, config) +- if err != nil { +- return err +- } +- +- c.Session, err = c.client.NewSession() +- if err != nil { +- _ = c.client.Close() +- return err +- } ++ c.Session, err = c.client.NewSession() ++ if err != nil { ++ _ = c.client.Close() ++ return err ++ } + +- c.connected = true ++ c.connected = true ++ return nil + */ return nil } --func dial(network, addr string, config *ssh.ClientConfig) (*ssh.Client, error) { -+func dial(network, addr string, config *int) (*int, error) { +-func dial(network, addr string, proxyOpts transport.ProxyOptions, config *ssh.ClientConfig) (*ssh.Client, error) { +- var ( +- ctx = context.Background() +- cancel context.CancelFunc +- ) +- if config.Timeout > 0 { +- ctx, cancel = context.WithTimeout(ctx, config.Timeout) +- } else { +- ctx, cancel = context.WithCancel(ctx) +- } +- defer cancel() +- +- var conn net.Conn +- var dialErr error +- +- if proxyOpts.URL != "" { +- proxyUrl, err := proxyOpts.FullURL() +- if err != nil { +- return nil, err ++func dial(network, addr string, proxyOpts transport.ProxyOptions, config *int) (*int, error) { + /* - var ( - ctx = context.Background() - cancel context.CancelFunc -@@ -160,9 +180,12 @@ - return nil, err - } - return ssh.NewClient(c, chans, reqs), nil ++ var ( ++ ctx = context.Background() ++ cancel context.CancelFunc ++ ) ++ if config.Timeout > 0 { ++ ctx, cancel = context.WithTimeout(ctx, config.Timeout) ++ } else { ++ ctx, cancel = context.WithCancel(ctx) + } +- dialer, err := proxy.FromURL(proxyUrl, proxy.Direct) +- if err != nil { +- return nil, err ++ defer cancel() ++ ++ var conn net.Conn ++ var dialErr error ++ ++ if proxyOpts.URL != "" { ++ proxyUrl, err := proxyOpts.FullURL() ++ if err != nil { ++ return nil, err ++ } ++ dialer, err := proxy.FromURL(proxyUrl, proxy.Direct) ++ if err != nil { ++ return nil, err ++ } ++ ++ // Try to use a ContextDialer, but fall back to a Dialer if that goes south. ++ ctxDialer, ok := dialer.(proxy.ContextDialer) ++ if !ok { ++ return nil, fmt.Errorf("expected ssh proxy dialer to be of type %s; got %s", ++ reflect.TypeOf(ctxDialer), reflect.TypeOf(dialer)) ++ } ++ conn, dialErr = ctxDialer.DialContext(ctx, "tcp", addr) ++ } else { ++ conn, dialErr = proxy.Dial(ctx, network, addr) ++ } ++ if dialErr != nil { ++ return nil, dialErr + } + +- // Try to use a ContextDialer, but fall back to a Dialer if that goes south. +- ctxDialer, ok := dialer.(proxy.ContextDialer) +- if !ok { +- return nil, fmt.Errorf("expected ssh proxy dialer to be of type %s; got %s", +- reflect.TypeOf(ctxDialer), reflect.TypeOf(dialer)) ++ c, chans, reqs, err := ssh.NewClientConn(conn, addr, config) ++ if err != nil { ++ return nil, err + } +- conn, dialErr = ctxDialer.DialContext(ctx, "tcp", addr) +- } else { +- conn, dialErr = proxy.Dial(ctx, network, addr) +- } +- if dialErr != nil { +- return nil, dialErr +- } +- +- c, chans, reqs, err := ssh.NewClientConn(conn, addr, config) +- if err != nil { +- return nil, err +- } +- return ssh.NewClient(c, chans, reqs), nil ++ return ssh.NewClient(c, chans, reqs), nil + */ + return nil, nil } func (c *command) getHostWithPort() string { +- if addr, found := c.doGetHostWithPortFromSSHConfig(); found { +- return addr +- } + /* - if addr, found := c.doGetHostWithPortFromSSHConfig(); found { - return addr - } -@@ -174,9 +197,12 @@ - } ++ if addr, found := c.doGetHostWithPortFromSSHConfig(); found { ++ return addr ++ } - return fmt.Sprintf("%s:%d", host, port) +- host := c.endpoint.Host +- port := c.endpoint.Port +- if port <= 0 { +- port = DefaultPort +- } ++ host := c.endpoint.Host ++ port := c.endpoint.Port ++ if port <= 0 { ++ port = DefaultPort ++ } + +- return net.JoinHostPort(host, strconv.Itoa(port)) ++ return net.JoinHostPort(host, strconv.Itoa(port)) + */ + return "" } func (c *command) doGetHostWithPortFromSSHConfig() (addr string, found bool) { +- if DefaultSSHConfig == nil { +- return +- } +- +- host := c.endpoint.Host +- port := c.endpoint.Port +- +- configHost := DefaultSSHConfig.Get(c.endpoint.Host, "Hostname") +- if configHost != "" { +- host = configHost +- found = true +- } +- +- if !found { +- return +- } +- +- configPort := DefaultSSHConfig.Get(c.endpoint.Host, "Port") +- if configPort != "" { +- if i, err := strconv.Atoi(configPort); err == nil { +- port = i + /* - if DefaultSSHConfig == nil { - return - } -@@ -202,12 +228,13 @@ - } ++ if DefaultSSHConfig == nil { ++ return ++ } ++ ++ host := c.endpoint.Host ++ port := c.endpoint.Port ++ ++ configHost := DefaultSSHConfig.Get(c.endpoint.Host, "Hostname") ++ if configHost != "" { ++ host = configHost ++ found = true + } +- } - addr = fmt.Sprintf("%s:%d", host, port) +- addr = net.JoinHostPort(host, strconv.Itoa(port)) ++ if !found { ++ return ++ } ++ ++ configPort := DefaultSSHConfig.Get(c.endpoint.Host, "Port") ++ if configPort != "" { ++ if i, err := strconv.Atoi(configPort); err == nil { ++ port = i ++ } ++ } ++ ++ addr = net.JoinHostPort(host, strconv.Itoa(port)) + */ return } @@ -1031,126 +1549,206 @@ diff a/vendor/github.com/go-git/go-git/v5/plumbing/transport/ssh/common.go b/ven func (c *command) setAuthFromEndpoint() error { var err error - c.auth, err = DefaultAuthBuilder(c.endpoint.User) -+ // c.auth, err = DefaultAuthBuilder(c.endpoint.User) ++ // c.auth, err = DefaultAuthBuilder(c.endpoint.User) return err } -@@ -215,7 +242,8 @@ +@@ -263,21 +290,23 @@ func endpointToCommand(cmd string, ep *transport.Endpoint) string { return fmt.Sprintf("%s '%s'", cmd, ep.Path) } -func overrideConfig(overrides *ssh.ClientConfig, c *ssh.ClientConfig) { +- if overrides == nil { +- return +- } +func overrideConfig(overrides *int, c *int) { + /* - if overrides == nil { - return - } -@@ -232,4 +260,5 @@ - } ++ if overrides == nil { ++ return ++ } - *c = vc.Interface().(ssh.ClientConfig) +- t := reflect.TypeOf(*c) +- vc := reflect.ValueOf(c).Elem() +- vo := reflect.ValueOf(overrides).Elem() ++ t := reflect.TypeOf(*c) ++ vc := reflect.ValueOf(c).Elem() ++ vo := reflect.ValueOf(overrides).Elem() + +- for i := 0; i < t.NumField(); i++ { +- f := t.Field(i) +- vcf := vc.FieldByName(f.Name) +- vof := vo.FieldByName(f.Name) +- vcf.Set(vof) +- } ++ for i := 0; i < t.NumField(); i++ { ++ f := t.Field(i) ++ vcf := vc.FieldByName(f.Name) ++ vof := vo.FieldByName(f.Name) ++ vcf.Set(vof) ++ } + +- *c = vc.Interface().(ssh.ClientConfig) ++ *c = vc.Interface().(ssh.ClientConfig) + */ } -diff a/vendor/github.com/go-git/go-git/v5/repository.go b/vendor/github.com/go-git/go-git/v5/repository.go ---- a/vendor/github.com/go-git/go-git/v5/repository.go 2022-10-30 20:00:00.000000000 -0400 -+++ b/vendor/github.com/go-git/go-git/v5/repository.go 2022-12-20 13:46:57.584666477 -0500 -@@ -13,7 +13,7 @@ - "strings" +diff --git a/vendor/github.com/go-git/go-git/v5/repository.go b/vendor/github.com/go-git/go-git/v5/repository.go +index 200098e7..82059ca4 100644 +--- a/vendor/github.com/go-git/go-git/v5/repository.go ++++ b/vendor/github.com/go-git/go-git/v5/repository.go +@@ -15,7 +15,7 @@ import ( "time" + "dario.cat/mergo" - "github.com/ProtonMail/go-crypto/openpgp" -+ // "github.com/ProtonMail/go-crypto/openpgp" ++ // "github.com/ProtonMail/go-crypto/openpgp" "github.com/go-git/go-billy/v5" "github.com/go-git/go-billy/v5/osfs" "github.com/go-git/go-billy/v5/util" -@@ -706,6 +706,7 @@ +@@ -783,14 +783,16 @@ func (r *Repository) createTagObject(name string, hash plumbing.Hash, opts *Crea Target: hash, } +- if opts.SignKey != nil { +- sig, err := r.buildTagSignature(tag, opts.SignKey) +- if err != nil { +- return plumbing.ZeroHash, err +- } + /* - if opts.SignKey != nil { - sig, err := r.buildTagSignature(tag, opts.SignKey) - if err != nil { -@@ -714,6 +715,7 @@ ++ if opts.SignKey != nil { ++ sig, err := r.buildTagSignature(tag, opts.SignKey) ++ if err != nil { ++ return plumbing.ZeroHash, err ++ } - tag.PGPSignature = sig - } +- tag.PGPSignature = sig +- } ++ tag.PGPSignature = sig ++ } + */ obj := r.Storer.NewEncodedObject() if err := tag.Encode(obj); err != nil { -@@ -723,7 +725,8 @@ +@@ -800,23 +802,26 @@ func (r *Repository) createTagObject(name string, hash plumbing.Hash, opts *Crea return r.Storer.SetEncodedObject(obj) } -func (r *Repository) buildTagSignature(tag *object.Tag, signKey *openpgp.Entity) (string, error) { +- encoded := &plumbing.MemoryObject{} +- if err := tag.Encode(encoded); err != nil { +- return "", err +- } +func (r *Repository) buildTagSignature(tag *object.Tag, signKey *int) (string, error) { + /* - encoded := &plumbing.MemoryObject{} - if err := tag.Encode(encoded); err != nil { - return "", err -@@ -740,6 +743,8 @@ - } ++ encoded := &plumbing.MemoryObject{} ++ if err := tag.Encode(encoded); err != nil { ++ return "", err ++ } - return b.String(), nil +- rdr, err := encoded.Reader() +- if err != nil { +- return "", err +- } ++ rdr, err := encoded.Reader() ++ if err != nil { ++ return "", err ++ } + +- var b bytes.Buffer +- if err := openpgp.ArmoredDetachSign(&b, signKey, rdr, nil); err != nil { +- return "", err +- } ++ var b bytes.Buffer ++ if err := openpgp.ArmoredDetachSign(&b, signKey, rdr, nil); err != nil { ++ return "", err ++ } + +- return b.String(), nil ++ return b.String(), nil + */ + return "", nil } // Tag returns a tag from the repository. -diff a/vendor/github.com/go-git/go-git/v5/worktree_commit.go b/vendor/github.com/go-git/go-git/v5/worktree_commit.go ---- a/vendor/github.com/go-git/go-git/v5/worktree_commit.go 2022-10-30 20:00:00.000000000 -0400 -+++ b/vendor/github.com/go-git/go-git/v5/worktree_commit.go 2022-12-20 13:47:27.671919357 -0500 +diff --git a/vendor/github.com/go-git/go-git/v5/worktree_commit.go b/vendor/github.com/go-git/go-git/v5/worktree_commit.go +index 9b1988ae..53e50576 100644 +--- a/vendor/github.com/go-git/go-git/v5/worktree_commit.go ++++ b/vendor/github.com/go-git/go-git/v5/worktree_commit.go @@ -1,7 +1,7 @@ package git import ( - "bytes" -+ // "bytes" ++ // "bytes" + "errors" + "io" "path" - "sort" - "strings" -@@ -12,7 +12,7 @@ +@@ -15,8 +15,8 @@ import ( "github.com/go-git/go-git/v5/plumbing/object" "github.com/go-git/go-git/v5/storage" - "github.com/ProtonMail/go-crypto/openpgp" -+ // "github.com/ProtonMail/go-crypto/openpgp" +- "github.com/ProtonMail/go-crypto/openpgp/packet" ++ // "github.com/ProtonMail/go-crypto/openpgp" ++ // "github.com/ProtonMail/go-crypto/openpgp/packet" "github.com/go-git/go-billy/v5" ) -@@ -101,6 +101,7 @@ - ParentHashes: opts.Parents, +@@ -150,17 +150,19 @@ func (w *Worktree) buildCommitObject(msg string, opts *CommitOptions, tree plumb } + // Convert SignKey into a Signer if set. Existing Signer should take priority. +- signer := opts.Signer +- if signer == nil && opts.SignKey != nil { +- signer = &gpgSigner{key: opts.SignKey} +- } +- if signer != nil { +- sig, err := signObject(signer, commit) +- if err != nil { +- return plumbing.ZeroHash, err + /* - if opts.SignKey != nil { - sig, err := w.buildCommitSignature(commit, opts.SignKey) - if err != nil { -@@ -108,6 +109,7 @@ ++ signer := opts.Signer ++ if signer == nil && opts.SignKey != nil { ++ signer = &gpgSigner{key: opts.SignKey} } - commit.PGPSignature = sig - } +- commit.PGPSignature = string(sig) +- } ++ if signer != nil { ++ sig, err := signObject(signer, commit) ++ if err != nil { ++ return plumbing.ZeroHash, err ++ } ++ commit.PGPSignature = string(sig) ++ } + */ obj := w.r.Storer.NewEncodedObject() if err := commit.Encode(obj); err != nil { -@@ -116,7 +118,8 @@ - return w.r.Storer.SetEncodedObject(obj) +@@ -178,16 +180,21 @@ func (w *Worktree) sanitize(signature object.Signature) object.Signature { } --func (w *Worktree) buildCommitSignature(commit *object.Commit, signKey *openpgp.Entity) (string, error) { -+func (w *Worktree) buildCommitSignature(commit *object.Commit, signKey *int) (string, error) { + type gpgSigner struct { +- key *openpgp.Entity +- cfg *packet.Config + /* - encoded := &plumbing.MemoryObject{} - if err := commit.Encode(encoded); err != nil { - return "", err -@@ -130,6 +133,8 @@ - return "", err - } - return b.String(), nil ++ key *openpgp.Entity ++ cfg *packet.Config + */ -+ return "", nil + } + + func (s *gpgSigner) Sign(message io.Reader) ([]byte, error) { +- var b bytes.Buffer +- if err := openpgp.ArmoredDetachSign(&b, s.key, message, s.cfg); err != nil { +- return nil, err +- } +- return b.Bytes(), nil ++ /* ++ var b bytes.Buffer ++ if err := openpgp.ArmoredDetachSign(&b, s.key, message, s.cfg); err != nil { ++ return nil, err ++ } ++ return b.Bytes(), nil ++ */ ++ return nil, nil } // buildTreeHelper converts a given index.Index file into multiple git objects diff --git a/SOURCES/1002-vendor-use-pbkdf2-from-OpenSSL.patch b/SOURCES/1002-vendor-use-pbkdf2-from-OpenSSL.patch index aa4b421..69960d2 100644 --- a/SOURCES/1002-vendor-use-pbkdf2-from-OpenSSL.patch +++ b/SOURCES/1002-vendor-use-pbkdf2-from-OpenSSL.patch @@ -23,7 +23,7 @@ index 0000000000..5a06918832 + +package boring + -+// #include "openssl_pbkdf2.h" ++// #include "/usr/lib/golang/src/vendor/github.com/golang-fips/openssl/v2/goopenssl.h" +// #cgo LDFLAGS: -ldl +import "C" +import ( @@ -39,14 +39,14 @@ index 0000000000..5a06918832 + emptySha256 = sha256.Sum256([]byte{}) +) + -+func hashToMD(h hash.Hash) *C.GO_EVP_MD { ++func hashToMD(h hash.Hash) C.GO_EVP_MD_PTR { + emptyHash := h.Sum([]byte{}) + + switch { + case bytes.Equal(emptyHash, emptySha1[:]): -+ return C._goboringcrypto_EVP_sha1() ++ return C.go_openssl_EVP_sha1() + case bytes.Equal(emptyHash, emptySha256[:]): -+ return C._goboringcrypto_EVP_sha256() ++ return C.go_openssl_EVP_sha256() + } + return nil +} @@ -78,7 +78,7 @@ index 0000000000..5a06918832 + } + + out := make([]byte, keyLen) -+ ok := C._goboringcrypto_PKCS5_PBKDF2_HMAC(charptr(password), C.int(len(password)), ucharptr(salt), C.int(len(salt)), C.int(iter), md, C.int(keyLen), ucharptr(out)) ++ ok := C.go_openssl_PKCS5_PBKDF2_HMAC(charptr(password), C.int(len(password)), ucharptr(salt), C.int(len(salt)), C.int(iter), md, C.int(keyLen), ucharptr(out)) + if ok != 1 { + panic("boringcrypto: PKCS5_PBKDF2_HMAC failed") + } @@ -106,23 +106,12 @@ index 0000000000..e244fb5663 +func Pbkdf2Key(password, salt []byte, iter, keyLen int, h func() hash.Hash) []byte { + panic("boringcrypto: not available") +} -diff --git a/vendor/golang.org/x/crypto/internal/boring/openssl_pbkdf2.h b/vendor/golang.org/x/crypto/internal/boring/openssl_pbkdf2.h -new file mode 100644 -index 0000000000..6dfdf10424 ---- /dev/null -+++ b/vendor/golang.org/x/crypto/internal/boring/openssl_pbkdf2.h -@@ -0,0 +1,5 @@ -+#include "/usr/lib/golang/src/vendor/github.com/golang-fips/openssl/openssl/goopenssl.h" -+ -+DEFINEFUNC(int, PKCS5_PBKDF2_HMAC, -+ (const char *pass, int passlen, const unsigned char *salt, int saltlen, int iter, EVP_MD *digest, int keylen, unsigned char *out), -+ (pass, passlen, salt, saltlen, iter, digest, keylen, out)) diff --git a/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go -index 593f653008..799a611f94 100644 +index 28cd99c..00c53a7 100644 --- a/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go +++ b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go @@ -19,8 +19,11 @@ pbkdf2.Key. - package pbkdf2 // import "golang.org/x/crypto/pbkdf2" + package pbkdf2 import ( + "crypto/boring" diff --git a/SOURCES/create_bundles.sh b/SOURCES/create_vendor_bundle.sh similarity index 80% rename from SOURCES/create_bundles.sh rename to SOURCES/create_vendor_bundle.sh index 94171aa..51aff13 100755 --- a/SOURCES/create_bundles.sh +++ b/SOURCES/create_vendor_bundle.sh @@ -7,7 +7,6 @@ SOURCE_DATE_EPOCH=$((CHANGELOGTIME - CHANGELOGTIME % 86400)) SOURCE_DIR=grafana-$VERSION SOURCE_TAR=grafana-$VERSION.tar.gz VENDOR_TAR=grafana-vendor-$VERSION-$RELEASE.tar.xz -WEBPACK_TAR=grafana-webpack-$VERSION-$RELEASE.tar.gz ## Download and extract source tarball @@ -21,6 +20,7 @@ pushd "${SOURCE_DIR}" # Vendor Go dependencies patch -p1 --fuzz=0 < ../0004-remove-unused-backend-dependencies.patch +patch -p1 --fuzz=0 < ../0015-update-go-git-version.patch go mod vendor # Generate Go files @@ -65,22 +65,3 @@ XZ_OPT=-9 tar \ "${SOURCE_DIR}/.pnp.cjs" \ "${SOURCE_DIR}/.yarn/cache" \ "${SOURCE_DIR}/.yarn/unplugged" - - -## Create webpack -pushd "${SOURCE_DIR}" -../build_frontend.sh -popd - -# Create tarball -tar \ - --sort=name \ - --mtime="@${SOURCE_DATE_EPOCH}" --clamp-mtime \ - --owner=0 --group=0 --numeric-owner \ - -czf "${WEBPACK_TAR}" \ - "${SOURCE_DIR}/plugins-bundled" \ - "${SOURCE_DIR}/public/build" \ - "${SOURCE_DIR}/public/img" \ - "${SOURCE_DIR}/public/lib" \ - "${SOURCE_DIR}/public/locales" \ - "${SOURCE_DIR}/public/views" diff --git a/SOURCES/create_vendor_bundle_in_container.sh b/SOURCES/create_vendor_bundle_in_container.sh new file mode 100755 index 0000000..ab8c007 --- /dev/null +++ b/SOURCES/create_vendor_bundle_in_container.sh @@ -0,0 +1,24 @@ +#!/bin/bash -eu +# +# create vendor and webpack bundles inside a container (for reproducibility) +# using a Go cache: +# ./create_bundles_in_container.sh --security-opt label=disable -v $(pwd)/.gocache:/root/go +# + +cat < 9.2.10-21 +- Resolves RHEL-72881: CVE-2025-21614 +- Resolves RHEL-72869: CVE-2025-21613 + * Thu Oct 17 2024 Sam Feifer 9.2.10-20 - Resolves RHEL-62307: CVE-2024-47875