1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
// Copyright (C) 2015 Audrius Butkevicius and Contributors (see the CONTRIBUTORS file).
//go:generate genxdr -o packets_xdr.go packets.go
package protocol
import (
"fmt"
"net"
"github.com/syncthing/syncthing/lib/protocol"
)
const (
messageTypePing int32 = iota
messageTypePong
messageTypeJoinRelayRequest
messageTypeJoinSessionRequest
messageTypeResponse
messageTypeConnectRequest
messageTypeSessionInvitation
messageTypeRelayFull
)
type header struct {
magic uint32
messageType int32
messageLength int32
}
type (
Ping struct{}
Pong struct{}
RelayFull struct{}
)
type JoinRelayRequest struct {
Token string
}
type JoinSessionRequest struct {
Key []byte // max:32
}
type Response struct {
Code int32
Message string
}
type ConnectRequest struct {
ID []byte // max:32
}
type SessionInvitation struct {
From []byte // max:32
Key []byte // max:32
Address []byte // max:32
Port uint16
ServerSocket bool
}
func (i SessionInvitation) String() string {
device := "<invalid>"
if address, err := protocol.DeviceIDFromBytes(i.From); err == nil {
device = address.String()
}
return fmt.Sprintf("%s@%s:%d", device, net.IP(i.Address), i.Port)
}
func (i SessionInvitation) GoString() string {
return i.String()
}
|