diff options
-rw-r--r-- | Dockerfile | 2 | ||||
-rw-r--r-- | client/lib/rendezvous.go | 6 | ||||
-rw-r--r-- | client/lib/rendezvous_sqs.go | 10 | ||||
-rw-r--r-- | client/lib/rendezvous_test.go | 2 | ||||
-rw-r--r-- | client/lib/snowflake.go | 5 | ||||
-rw-r--r-- | client/snowflake.go | 13 | ||||
-rw-r--r-- | common/sqscreds/generate_creds.go | 36 | ||||
-rw-r--r-- | common/sqscreds/lib/sqs_creds.go | 35 | ||||
-rw-r--r-- | doc/rendezvous-with-sqs.md | 5 | ||||
-rw-r--r-- | go.mod | 8 | ||||
-rw-r--r-- | go.sum | 23 | ||||
-rw-r--r-- | probetest/Dockerfile | 2 |
12 files changed, 106 insertions, 41 deletions
@@ -1,4 +1,4 @@ -FROM docker.io/library/golang:1.21 AS build +FROM docker.io/library/golang:1.22 AS build # Set some labels # io.containers.autoupdate label will instruct podman to reach out to the corres diff --git a/client/lib/rendezvous.go b/client/lib/rendezvous.go index 908b2ff..f25212c 100644 --- a/client/lib/rendezvous.go +++ b/client/lib/rendezvous.go @@ -94,11 +94,11 @@ func newBrokerChannelFromConfig(config ClientConfig) (*BrokerChannel, error) { if config.AmpCacheURL != "" || config.BrokerURL != "" { log.Fatalln("Multiple rendezvous methods specified. " + rendezvousErrorMsg) } - if config.SQSAccessKeyID == "" || config.SQSSecretKey == "" { - log.Fatalln("sqsakid and sqsskey must be specified to use SQS rendezvous method.") + if config.SQSCredsStr == "" { + log.Fatalln("sqscreds must be specified to use SQS rendezvous method.") } log.Println("Through SQS queue at:", config.SQSQueueURL) - rendezvous, err = newSQSRendezvous(config.SQSQueueURL, config.SQSAccessKeyID, config.SQSSecretKey, brokerTransport) + rendezvous, err = newSQSRendezvous(config.SQSQueueURL, config.SQSCredsStr, brokerTransport) } else if config.AmpCacheURL != "" && config.BrokerURL != "" { log.Println("Through AMP cache at:", config.AmpCacheURL) rendezvous, err = newAMPCacheRendezvous( diff --git a/client/lib/rendezvous_sqs.go b/client/lib/rendezvous_sqs.go index 423545f..6b1c073 100644 --- a/client/lib/rendezvous_sqs.go +++ b/client/lib/rendezvous_sqs.go @@ -16,6 +16,7 @@ import ( "github.com/aws/aws-sdk-go-v2/service/sqs" "github.com/aws/aws-sdk-go-v2/service/sqs/types" "gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2/common/sqsclient" + sqscreds "gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2/common/sqscreds/lib" ) type sqsRendezvous struct { @@ -26,12 +27,17 @@ type sqsRendezvous struct { numRetries int } -func newSQSRendezvous(sqsQueue string, sqsAccessKeyId string, sqsSecretKey string, transport http.RoundTripper) (*sqsRendezvous, error) { +func newSQSRendezvous(sqsQueue string, sqsCredsStr string, transport http.RoundTripper) (*sqsRendezvous, error) { sqsURL, err := url.Parse(sqsQueue) if err != nil { return nil, err } + sqsCreds, err := sqscreds.AwsCredsFromBase64(sqsCredsStr) + if err != nil { + return nil, err + } + queueURL := sqsURL.String() hostName := sqsURL.Hostname() @@ -43,7 +49,7 @@ func newSQSRendezvous(sqsQueue string, sqsAccessKeyId string, sqsSecretKey strin region := res[1] cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithCredentialsProvider( - credentials.NewStaticCredentialsProvider(sqsAccessKeyId, sqsSecretKey, ""), + credentials.NewStaticCredentialsProvider(sqsCreds.AwsAccessKeyId, sqsCreds.AwsSecretKey, ""), ), config.WithRegion(region), ) diff --git a/client/lib/rendezvous_test.go b/client/lib/rendezvous_test.go index 6589593..d2460d3 100644 --- a/client/lib/rendezvous_test.go +++ b/client/lib/rendezvous_test.go @@ -284,7 +284,7 @@ func TestSQSRendezvous(t *testing.T) { Convey("Construct SQS queue rendezvous", func() { transport := &mockTransport{http.StatusOK, []byte{}} - rend, err := newSQSRendezvous("https://sqs.us-east-1.amazonaws.com", "some-access-key-id", "some-secret-key", transport) + rend, err := newSQSRendezvous("https://sqs.us-east-1.amazonaws.com", "eyJhd3MtYWNjZXNzLWtleS1pZCI6InRlc3QtYWNjZXNzLWtleSIsImF3cy1zZWNyZXQta2V5IjoidGVzdC1zZWNyZXQta2V5In0=", transport) So(err, ShouldBeNil) So(rend.sqsClient, ShouldNotBeNil) diff --git a/client/lib/snowflake.go b/client/lib/snowflake.go index cf9bd6e..7d405cd 100644 --- a/client/lib/snowflake.go +++ b/client/lib/snowflake.go @@ -89,9 +89,8 @@ type ClientConfig struct { // SQSQueueURL is the full URL of an AWS SQS Queue. A nonzero value indicates // that SQS queue will be used as the rendezvous method with the broker. SQSQueueURL string - // Access Key ID and Secret Key of the credentials used to access the AWS SQS Qeueue - SQSAccessKeyID string - SQSSecretKey string + // Base64 encoded string of the credentials containing access Key ID and secret key used to access the AWS SQS Qeueue + SQSCredsStr string // FrontDomain is the full URL of an optional front domain that can be used with either // the AMP cache or HTTP domain fronting rendezvous method. FrontDomain string diff --git a/client/snowflake.go b/client/snowflake.go index 7ff0a35..4ebbaf5 100644 --- a/client/snowflake.go +++ b/client/snowflake.go @@ -84,11 +84,8 @@ func socksAcceptLoop(ln *pt.SocksListener, config sf.ClientConfig, shutdown chan if arg, ok := conn.Req.Args.Get("sqsqueue"); ok { config.SQSQueueURL = arg } - if arg, ok := conn.Req.Args.Get("sqsakid"); ok { - config.SQSAccessKeyID = arg - } - if arg, ok := conn.Req.Args.Get("sqsskey"); ok { - config.SQSSecretKey = arg + if arg, ok := conn.Req.Args.Get("sqscreds"); ok { + config.SQSCredsStr = arg } if arg, ok := conn.Req.Args.Get("fronts"); ok { if arg != "" { @@ -169,8 +166,7 @@ func main() { frontDomainsCommas := flag.String("fronts", "", "comma-separated list of front domains") ampCacheURL := flag.String("ampcache", "", "URL of AMP cache to use as a proxy for signaling") sqsQueueURL := flag.String("sqsqueue", "", "URL of SQS Queue to use as a proxy for signaling") - sqsAccessKeyId := flag.String("sqsakid", "", "Access Key ID for credentials to access SQS Queue ") - sqsSecretKey := flag.String("sqsskey", "", "Secret Key for credentials to access SQS Queue") + sqsCredsStr := flag.String("sqscreds", "", "credentials to access SQS Queue") logFilename := flag.String("log", "", "name of log file") logToStateDir := flag.Bool("log-to-state-dir", false, "resolve the log file relative to tor's pt state dir") keepLocalAddresses := flag.Bool("keep-local-addresses", false, "keep local LAN address ICE candidates") @@ -239,8 +235,7 @@ func main() { BrokerURL: *brokerURL, AmpCacheURL: *ampCacheURL, SQSQueueURL: *sqsQueueURL, - SQSAccessKeyID: *sqsAccessKeyId, - SQSSecretKey: *sqsSecretKey, + SQSCredsStr: *sqsCredsStr, FrontDomains: frontDomains, ICEAddresses: iceAddresses, KeepLocalAddresses: *keepLocalAddresses || *oldKeepLocalAddresses, diff --git a/common/sqscreds/generate_creds.go b/common/sqscreds/generate_creds.go new file mode 100644 index 0000000..0f89225 --- /dev/null +++ b/common/sqscreds/generate_creds.go @@ -0,0 +1,36 @@ +package main + +import ( + "fmt" + + sqscreds "gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2/common/sqscreds/lib" +) + +// This script can be run to generate the encoded SQS credentials to pass as a CLI param or SOCKS option to the client +func main() { + var accessKey, secretKey string + + fmt.Print("Enter Access Key: ") + _, err := fmt.Scanln(&accessKey) + if err != nil { + fmt.Println("Error reading access key:", err) + return + } + + fmt.Print("Enter Secret Key: ") + _, err = fmt.Scanln(&secretKey) + if err != nil { + fmt.Println("Error reading access key:", err) + return + } + + awsCreds := sqscreds.AwsCreds{AwsAccessKeyId: accessKey, AwsSecretKey: secretKey} + println() + println("Encoded Credentials:") + res, err := awsCreds.Base64() + if err != nil { + fmt.Println("Error encoding credentials:", err) + return + } + println(res) +} diff --git a/common/sqscreds/lib/sqs_creds.go b/common/sqscreds/lib/sqs_creds.go new file mode 100644 index 0000000..dba1828 --- /dev/null +++ b/common/sqscreds/lib/sqs_creds.go @@ -0,0 +1,35 @@ +package sqscreds + +import ( + "encoding/base64" + "encoding/json" +) + +type AwsCreds struct { + AwsAccessKeyId string `json:"aws-access-key-id"` + AwsSecretKey string `json:"aws-secret-key"` +} + +func (awsCreds AwsCreds) Base64() (string, error) { + jsonData, err := json.Marshal(awsCreds) + if err != nil { + return "", err + } + return base64.StdEncoding.EncodeToString(jsonData), nil +} + +func AwsCredsFromBase64(base64Str string) (AwsCreds, error) { + var awsCreds AwsCreds + + jsonData, err := base64.StdEncoding.DecodeString(base64Str) + if err != nil { + return awsCreds, err + } + + err = json.Unmarshal(jsonData, &awsCreds) + if err != nil { + return awsCreds, err + } + + return awsCreds, nil +} diff --git a/doc/rendezvous-with-sqs.md b/doc/rendezvous-with-sqs.md index 0b94c61..4da07fb 100644 --- a/doc/rendezvous-with-sqs.md +++ b/doc/rendezvous-with-sqs.md @@ -16,13 +16,12 @@ The machine on which the broker is being run must be equiped with the correct AW ## Client To run the client with this rendezvous method, use the following CLI flags (they are all required): - `sqsqueue` - URL of the SQS queue to use as a proxy for signalling -- `sqsakid` - AWS Access Key ID of credentials for accessing the SQS queue -- `sqsskey` - AWS Secrety Key of credentials for accessing the SQS queue +- `sqscreds` - Encoded credentials for accessing the SQS queue `sqsqueue` should correspond to the URL of the SQS queue that the broker is listening on. For the example above, the following value can be used: -`-sqsqueue https://sqs.us-east-1.amazonaws.com/893902434899/snowflake-broker -sqsakid some-aws-access-key-id -sqsskey some-aws-secret-key` +`-sqsqueue https://sqs.us-east-1.amazonaws.com/893902434899/snowflake-broker -sqscreds some-encoded-sqs-creds` *Public access to SQS queues is not allowed, so there needs to be some form of authentication to be able to access the queue. Limited permission credentials will be provided by the Snowflake team to access the corresponding SQS queue.* @@ -11,15 +11,15 @@ require ( github.com/gorilla/websocket v1.5.1 github.com/miekg/dns v1.1.58 github.com/pion/ice/v2 v2.3.13 - github.com/pion/sdp/v3 v3.0.6 + github.com/pion/sdp/v3 v3.0.8 github.com/pion/stun v0.6.1 github.com/pion/transport/v2 v2.2.4 - github.com/pion/webrtc/v3 v3.2.24 + github.com/pion/webrtc/v3 v3.2.29 github.com/prometheus/client_golang v1.18.0 github.com/prometheus/client_model v0.5.0 github.com/refraction-networking/utls v1.6.3 github.com/smartystreets/goconvey v1.8.1 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/txthinking/socks5 v0.0.0-20230325130024-4230056ae301 github.com/xtaci/kcp-go/v5 v5.6.7 github.com/xtaci/smux v1.5.24 @@ -64,7 +64,7 @@ require ( github.com/pion/randutil v0.1.0 // indirect github.com/pion/rtcp v1.2.12 // indirect github.com/pion/rtp v1.8.3 // indirect - github.com/pion/sctp v1.8.9 // indirect + github.com/pion/sctp v1.8.12 // indirect github.com/pion/srtp/v2 v2.0.18 // indirect github.com/pion/turn/v2 v2.1.4 // indirect github.com/pkg/errors v0.9.1 // indirect @@ -125,14 +125,12 @@ github.com/pion/datachannel v1.5.5 h1:10ef4kwdjije+M9d7Xm9im2Y3O6A6ccQb0zcqZcJew github.com/pion/datachannel v1.5.5/go.mod h1:iMz+lECmfdCMqFRhXhcA/219B0SQlbpoR2V118yimL0= github.com/pion/dtls/v2 v2.2.7 h1:cSUBsETxepsCSFSxC3mc/aDo14qQLMSL+O6IjG28yV8= github.com/pion/dtls/v2 v2.2.7/go.mod h1:8WiMkebSHFD0T+dIU+UeBaoV7kDhOW5oDCzZ7WZ/F9s= -github.com/pion/ice/v2 v2.3.11/go.mod h1:hPcLC3kxMa+JGRzMHqQzjoSj3xtE9F+eoncmXLlCL4E= github.com/pion/ice/v2 v2.3.13 h1:xOxP+4V9nSDlUaGFRf/LvAuGHDXRcjIdsbbXPK/w7c8= github.com/pion/ice/v2 v2.3.13/go.mod h1:KXJJcZK7E8WzrBEYnV4UtqEZsGeWfHxsNqhVcVvgjxw= github.com/pion/interceptor v0.1.25 h1:pwY9r7P6ToQ3+IF0bajN0xmk/fNw/suTgaTdlwTDmhc= github.com/pion/interceptor v0.1.25/go.mod h1:wkbPYAak5zKsfpVDYMtEfWEy8D4zL+rpxCxPImLOg3Y= github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY= github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms= -github.com/pion/mdns v0.0.8/go.mod h1:hYE72WX8WDveIhg7fmXgMKivD3Puklk0Ymzog0lSyaI= github.com/pion/mdns v0.0.12 h1:CiMYlY+O0azojWDmxdNr7ADGrnZ+V6Ilfner+6mSVK8= github.com/pion/mdns v0.0.12/go.mod h1:VExJjv8to/6Wqm1FXK+Ii/Z9tsVk/F5sD/N70cnYFbk= github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA= @@ -144,11 +142,10 @@ github.com/pion/rtp v1.8.2/go.mod h1:pBGHaFt/yW7bf1jjWAoUjpSNoDnw98KTMg+jWWvziqU github.com/pion/rtp v1.8.3 h1:VEHxqzSVQxCkKDSHro5/4IUUG1ea+MFdqR2R3xSpNU8= github.com/pion/rtp v1.8.3/go.mod h1:pBGHaFt/yW7bf1jjWAoUjpSNoDnw98KTMg+jWWvziqU= github.com/pion/sctp v1.8.5/go.mod h1:SUFFfDpViyKejTAdwD1d/HQsCu+V/40cCs2nZIvC3s0= -github.com/pion/sctp v1.8.8/go.mod h1:igF9nZBrjh5AtmKc7U30jXltsFHicFCXSmWA2GWRaWs= -github.com/pion/sctp v1.8.9 h1:TP5ZVxV5J7rz7uZmbyvnUvsn7EJ2x/5q9uhsTtXbI3g= -github.com/pion/sctp v1.8.9/go.mod h1:cMLT45jqw3+jiJCrtHVwfQLnfR0MGZ4rgOJwUOIqLkI= -github.com/pion/sdp/v3 v3.0.6 h1:WuDLhtuFUUVpTfus9ILC4HRyHsW6TdugjEX/QY9OiUw= -github.com/pion/sdp/v3 v3.0.6/go.mod h1:iiFWFpQO8Fy3S5ldclBkpXqmWy02ns78NOKoLLL0YQw= +github.com/pion/sctp v1.8.12 h1:2VX50pedElH+is6FI+OKyRTeN5oy4mrk2HjnGa3UCmY= +github.com/pion/sctp v1.8.12/go.mod h1:cMLT45jqw3+jiJCrtHVwfQLnfR0MGZ4rgOJwUOIqLkI= +github.com/pion/sdp/v3 v3.0.8 h1:yd/wkrS0nzXEAb+uwv1TL3SG/gzsTiXHVOtXtD7EKl0= +github.com/pion/sdp/v3 v3.0.8/go.mod h1:B5xmvENq5IXJimIO4zfp6LAe1fD9N+kFv+V/1lOdz8M= github.com/pion/srtp/v2 v2.0.18 h1:vKpAXfawO9RtTRKZJbG4y0v1b11NZxQnxRl85kGuUlo= github.com/pion/srtp/v2 v2.0.18/go.mod h1:0KJQjA99A6/a0DOVTu1PhDSw0CXF2jTkqOoMg3ODqdA= github.com/pion/stun v0.6.1 h1:8lp6YejULeHBF8NmV8e2787BogQhduZugh5PdhDyyN4= @@ -165,8 +162,8 @@ github.com/pion/transport/v3 v3.0.1/go.mod h1:UY7kiITrlMv7/IKgd5eTUcaahZx5oUN3l9 github.com/pion/turn/v2 v2.1.3/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY= github.com/pion/turn/v2 v2.1.4 h1:2xn8rduI5W6sCZQkEnIUDAkrBQNl2eYIBCHMZ3QMmP8= github.com/pion/turn/v2 v2.1.4/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY= -github.com/pion/webrtc/v3 v3.2.24 h1:MiFL5DMo2bDaaIFWr0DDpwiV/L4EGbLZb+xoRvfEo1Y= -github.com/pion/webrtc/v3 v3.2.24/go.mod h1:1CaT2fcZzZ6VZA+O1i9yK2DU4EOcXVvSbWG9pr5jefs= +github.com/pion/webrtc/v3 v3.2.29 h1:flXjxjlqpp3FjkpSSBKwv7UOfbUvan9+gFY6A5ZaAn4= +github.com/pion/webrtc/v3 v3.2.29/go.mod h1:M+5YSvBDPAkHHRwGXlplIFBQI5mXm6Y4byns1OpiX68= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -198,13 +195,15 @@ github.com/smartystreets/goconvey v1.8.1/go.mod h1:+/u4qLyY6x1jReYOp7GOM2FSt8aP9 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/templexxx/cpu v0.1.0 h1:wVM+WIJP2nYaxVxqgHPD4wGA2aJ9rvrQRV8CvFzNb40= github.com/templexxx/cpu v0.1.0/go.mod h1:w7Tb+7qgcAlIyX4NhLuDKt78AHA5SzPmq0Wj6HiEnnk= github.com/templexxx/xorsimd v0.4.2 h1:ocZZ+Nvu65LGHmCLZ7OoCtg8Fx8jnHKK37SjvngUoVI= @@ -234,7 +233,6 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= -golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= @@ -270,7 +268,6 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= golang.org/x/net v0.13.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= @@ -321,7 +318,6 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= @@ -332,7 +328,6 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 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.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= diff --git a/probetest/Dockerfile b/probetest/Dockerfile index 5ef384d..571f3ca 100644 --- a/probetest/Dockerfile +++ b/probetest/Dockerfile @@ -1,3 +1,3 @@ -FROM golang:1.21 +FROM golang:1.22 COPY probetest /go/bin |