This is an automated email from the git hooks/post-receive script.
shelikhoo pushed a commit to branch main in repository pluggable-transports/snowflake.
commit 2ebdc89c42dfb1331dd172282b4c2192bfbb4acc Author: Shelikhoo xiaokangwang@outlook.com AuthorDate: Wed Apr 13 17:51:17 2022 +0100
Add Allowed Relay Hostname Pattern Indication --- broker/ipc.go | 3 ++- common/messages/messages_test.go | 2 +- common/messages/proxy.go | 16 ++++++++++------ proxy/lib/snowflake.go | 2 +- 4 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/broker/ipc.go b/broker/ipc.go index 780a9a5..fbaed48 100644 --- a/broker/ipc.go +++ b/broker/ipc.go @@ -66,8 +66,9 @@ func (i *IPC) Debug(_ interface{}, response *string) error { }
func (i *IPC) ProxyPolls(arg messages.Arg, response *[]byte) error { - sid, proxyType, natType, clients, relayPattern, err := messages.DecodeProxyPollRequestWithRelayPrefix(arg.Body) + sid, proxyType, natType, clients, relayPattern, relayPatternSupported, err := messages.DecodeProxyPollRequestWithRelayPrefix(arg.Body) _ = relayPattern + _ = relayPatternSupported if err != nil { return messages.ErrBadRequest } diff --git a/common/messages/messages_test.go b/common/messages/messages_test.go index d1a5e96..017e959 100644 --- a/common/messages/messages_test.go +++ b/common/messages/messages_test.go @@ -108,7 +108,7 @@ func TestDecodeProxyPollRequest(t *testing.T) { err: fmt.Errorf(""), }, } { - sid, proxyType, natType, clients, relayPattern, err := DecodeProxyPollRequestWithRelayPrefix([]byte(test.data)) + sid, proxyType, natType, clients, relayPattern, _, err := DecodeProxyPollRequestWithRelayPrefix([]byte(test.data)) So(sid, ShouldResemble, test.sid) So(proxyType, ShouldResemble, test.proxyType) So(natType, ShouldResemble, test.natType) diff --git a/common/messages/proxy.go b/common/messages/proxy.go index d18a7c3..19cf6a3 100644 --- a/common/messages/proxy.go +++ b/common/messages/proxy.go @@ -97,7 +97,7 @@ type ProxyPollRequest struct { NAT string Clients int
- AcceptedRelayPattern string + AcceptedRelayPattern *string }
func EncodeProxyPollRequest(sid string, proxyType string, natType string, clients int) ([]byte, error) { @@ -111,13 +111,13 @@ func EncodeProxyPollRequestWithRelayPrefix(sid string, proxyType string, natType Type: proxyType, NAT: natType, Clients: clients, - AcceptedRelayPattern: relayPattern, + AcceptedRelayPattern: &relayPattern, }) }
func DecodeProxyPollRequest(data []byte) (sid string, proxyType string, natType string, clients int, err error) { var relayPrefix string - sid, proxyType, natType, clients, relayPrefix, err = DecodeProxyPollRequestWithRelayPrefix(data) + sid, proxyType, natType, clients, relayPrefix, _, err = DecodeProxyPollRequestWithRelayPrefix(data) if relayPrefix != "" { return "", "", "", 0, ErrExtraInfo } @@ -128,7 +128,7 @@ func DecodeProxyPollRequest(data []byte) (sid string, proxyType string, natType // sid, proxy type, nat type and clients of the proxy on success // and an error if it failed func DecodeProxyPollRequestWithRelayPrefix(data []byte) ( - sid string, proxyType string, natType string, clients int, relayPrefix string, err error) { + sid string, proxyType string, natType string, clients int, relayPrefix string, relayPrefixAware bool, err error) { var message ProxyPollRequest
err = json.Unmarshal(data, &message) @@ -164,8 +164,12 @@ func DecodeProxyPollRequestWithRelayPrefix(data []byte) ( if !KnownProxyTypes[message.Type] { message.Type = ProxyUnknown } - - return message.Sid, message.Type, message.NAT, message.Clients, message.AcceptedRelayPattern, nil + var acceptedRelayPattern = "" + if message.AcceptedRelayPattern != nil { + acceptedRelayPattern = *message.AcceptedRelayPattern + } + return message.Sid, message.Type, message.NAT, message.Clients, + acceptedRelayPattern, message.AcceptedRelayPattern != nil, nil }
type ProxyPollResponse struct { diff --git a/proxy/lib/snowflake.go b/proxy/lib/snowflake.go index 7dbc976..a60b5ab 100644 --- a/proxy/lib/snowflake.go +++ b/proxy/lib/snowflake.go @@ -210,7 +210,7 @@ func (s *SignalingServer) pollOffer(sid string, proxyType string, acceptedRelayP default: numClients := int((tokens.count() / 8) * 8) // Round down to 8 currentNATTypeLoaded := getCurrentNATType() - body, err := messages.EncodeProxyPollRequest(sid, proxyType, currentNATTypeLoaded, numClients) + body, err := messages.EncodeProxyPollRequestWithRelayPrefix(sid, proxyType, currentNATTypeLoaded, numClients, acceptedRelayPattern) if err != nil { log.Printf("Error encoding poll message: %s", err.Error()) return nil, ""