* implement authentication via token for relaysrv Make replaysrv check for a token before allowing clients to join. The token can be set via the replay-uri. * fix formatting * key composite literal * do not error out if auth material is provided but not needed * remove unused method receiver * clean up unused parameter in functions * cleaner token handling, disable joining the pool if token is set. * Keep backwards compatibility with older clients. In prior versions of the protocol JoinRelayRequest did not have a token field. Trying to unmarshal such a request will result in an error. Return an empty JoinRelayRequest, that is a request without token, instead. Co-authored-by: entity0xfe <entity0xfe@my.domain>
This commit is contained in:
@@ -17,6 +17,7 @@ var (
|
||||
ResponseSuccess = Response{0, "success"}
|
||||
ResponseNotFound = Response{1, "not found"}
|
||||
ResponseAlreadyConnected = Response{2, "already connected"}
|
||||
ResponseWrongToken = Response{3, "wrong token"}
|
||||
ResponseUnexpectedMessage = Response{100, "unexpected message"}
|
||||
)
|
||||
|
||||
@@ -107,6 +108,14 @@ func ReadMessage(r io.Reader) (interface{}, error) {
|
||||
return msg, err
|
||||
case messageTypeJoinRelayRequest:
|
||||
var msg JoinRelayRequest
|
||||
|
||||
// In prior versions of the protocol JoinRelayRequest did not have a
|
||||
// token field. Trying to unmarshal such a request will result in
|
||||
// an error, return msg with an empty token instead.
|
||||
if header.messageLength == 0 {
|
||||
return msg, nil
|
||||
}
|
||||
|
||||
err := msg.UnmarshalXDR(buf)
|
||||
return msg, err
|
||||
case messageTypeJoinSessionRequest:
|
||||
|
||||
Reference in New Issue
Block a user