mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 20:11:19 -04:00
Move SQS client ID generation to Exchange
This commit is contained in:
parent
c4c22fa2a0
commit
9cd362f42d
1 changed files with 21 additions and 23 deletions
|
@ -19,12 +19,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type sqsRendezvous struct {
|
type sqsRendezvous struct {
|
||||||
transport http.RoundTripper
|
transport http.RoundTripper
|
||||||
sqsClientID string
|
sqsClient sqsclient.SQSClient
|
||||||
sqsClient sqsclient.SQSClient
|
sqsURL *url.URL
|
||||||
sqsURL *url.URL
|
timeout time.Duration
|
||||||
timeout time.Duration
|
numRetries int
|
||||||
numRetries int
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func newSQSRendezvous(sqsQueue string, sqsAccessKeyId string, sqsSecretKey string, transport http.RoundTripper) (*sqsRendezvous, error) {
|
func newSQSRendezvous(sqsQueue string, sqsAccessKeyId string, sqsSecretKey string, transport http.RoundTripper) (*sqsRendezvous, error) {
|
||||||
|
@ -33,13 +32,6 @@ func newSQSRendezvous(sqsQueue string, sqsAccessKeyId string, sqsSecretKey strin
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var id [8]byte
|
|
||||||
_, err = rand.Read(id[:])
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
clientID := hex.EncodeToString(id[:])
|
|
||||||
|
|
||||||
queueURL := sqsURL.String()
|
queueURL := sqsURL.String()
|
||||||
hostName := sqsURL.Hostname()
|
hostName := sqsURL.Hostname()
|
||||||
|
|
||||||
|
@ -61,26 +53,32 @@ func newSQSRendezvous(sqsQueue string, sqsAccessKeyId string, sqsSecretKey strin
|
||||||
client := sqs.NewFromConfig(cfg)
|
client := sqs.NewFromConfig(cfg)
|
||||||
|
|
||||||
log.Println("Queue URL: ", queueURL)
|
log.Println("Queue URL: ", queueURL)
|
||||||
log.Println("SQS Client ID: ", clientID)
|
|
||||||
|
|
||||||
return &sqsRendezvous{
|
return &sqsRendezvous{
|
||||||
transport: transport,
|
transport: transport,
|
||||||
sqsClientID: clientID,
|
sqsClient: client,
|
||||||
sqsClient: client,
|
sqsURL: sqsURL,
|
||||||
sqsURL: sqsURL,
|
timeout: time.Second,
|
||||||
timeout: time.Second,
|
numRetries: 5,
|
||||||
numRetries: 5,
|
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *sqsRendezvous) Exchange(encPollReq []byte) ([]byte, error) {
|
func (r *sqsRendezvous) Exchange(encPollReq []byte) ([]byte, error) {
|
||||||
log.Println("Negotiating via SQS Queue rendezvous...")
|
log.Println("Negotiating via SQS Queue rendezvous...")
|
||||||
|
|
||||||
_, err := r.sqsClient.SendMessage(context.TODO(), &sqs.SendMessageInput{
|
var id [8]byte
|
||||||
|
_, err := rand.Read(id[:])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
sqsClientID := hex.EncodeToString(id[:])
|
||||||
|
log.Println("SQS Client ID for rendezvous: " + sqsClientID)
|
||||||
|
|
||||||
|
_, err = r.sqsClient.SendMessage(context.TODO(), &sqs.SendMessageInput{
|
||||||
MessageAttributes: map[string]types.MessageAttributeValue{
|
MessageAttributes: map[string]types.MessageAttributeValue{
|
||||||
"ClientID": {
|
"ClientID": {
|
||||||
DataType: aws.String("String"),
|
DataType: aws.String("String"),
|
||||||
StringValue: aws.String(r.sqsClientID),
|
StringValue: aws.String(sqsClientID),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
MessageBody: aws.String(string(encPollReq)),
|
MessageBody: aws.String(string(encPollReq)),
|
||||||
|
@ -98,7 +96,7 @@ func (r *sqsRendezvous) Exchange(encPollReq []byte) ([]byte, error) {
|
||||||
// may not be created yet. We will retry up to 5 times before we error out.
|
// may not be created yet. We will retry up to 5 times before we error out.
|
||||||
var res *sqs.GetQueueUrlOutput
|
var res *sqs.GetQueueUrlOutput
|
||||||
res, err = r.sqsClient.GetQueueUrl(context.TODO(), &sqs.GetQueueUrlInput{
|
res, err = r.sqsClient.GetQueueUrl(context.TODO(), &sqs.GetQueueUrlInput{
|
||||||
QueueName: aws.String("snowflake-client-" + r.sqsClientID),
|
QueueName: aws.String("snowflake-client-" + sqsClientID),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue