mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 20:11:19 -04:00
Implement SQS rendezvous in client and broker
This features adds an additional rendezvous method to send client offers and receive proxy answers through the use of Amazon SQS queues. https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/26151
This commit is contained in:
parent
d0529141ac
commit
8fb17de152
9 changed files with 472 additions and 4 deletions
|
@ -8,9 +8,9 @@ package main
|
|||
import (
|
||||
"bytes"
|
||||
"container/heap"
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"flag"
|
||||
"gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2/common/bridgefingerprint"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
|
@ -21,6 +21,8 @@ import (
|
|||
"syscall"
|
||||
"time"
|
||||
|
||||
"gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2/common/bridgefingerprint"
|
||||
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
"gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2/common/namematcher"
|
||||
|
@ -190,6 +192,7 @@ func main() {
|
|||
var geoipDatabase string
|
||||
var geoip6Database string
|
||||
var bridgeListFilePath, allowedRelayPattern, presumedPatternForLegacyClient string
|
||||
var brokerSQSQueueName, brokerSQSQueueRegion string
|
||||
var disableTLS bool
|
||||
var certFilename, keyFilename string
|
||||
var disableGeoip bool
|
||||
|
@ -207,6 +210,8 @@ func main() {
|
|||
flag.StringVar(&bridgeListFilePath, "bridge-list-path", "", "file path for bridgeListFile")
|
||||
flag.StringVar(&allowedRelayPattern, "allowed-relay-pattern", "", "allowed pattern for relay host name")
|
||||
flag.StringVar(&presumedPatternForLegacyClient, "default-relay-pattern", "", "presumed pattern for legacy client")
|
||||
flag.StringVar(&brokerSQSQueueName, "broker-sqs-name", "", "name of broker SQS queue to listen for incoming messages on")
|
||||
flag.StringVar(&brokerSQSQueueRegion, "broker-sqs-region", "", "name of AWS region of broker SQS queue")
|
||||
flag.BoolVar(&disableTLS, "disable-tls", false, "don't use HTTPS")
|
||||
flag.BoolVar(&disableGeoip, "disable-geoip", false, "don't use geoip for stats collection")
|
||||
flag.StringVar(&metricsFilename, "metrics-log", "", "path to metrics logging output")
|
||||
|
@ -276,6 +281,16 @@ func main() {
|
|||
Addr: addr,
|
||||
}
|
||||
|
||||
// Run SQS Handler to continuously poll and process messages from SQS
|
||||
if brokerSQSQueueName != "" && brokerSQSQueueRegion != "" {
|
||||
sqsHandlerContext := context.Background()
|
||||
sqsHandler, err := newSQSHandler(sqsHandlerContext, brokerSQSQueueName, brokerSQSQueueRegion, i)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
go sqsHandler.PollAndHandleMessages(sqsHandlerContext)
|
||||
}
|
||||
|
||||
sigChan := make(chan os.Signal, 1)
|
||||
signal.Notify(sigChan, syscall.SIGHUP)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue