mirror of
https://github.com/octoleo/syncthing.git
synced 2025-01-10 18:24:44 +00:00
discosrv: Remove deprecated v1 support
This commit is contained in:
parent
9349eb77cd
commit
44a194d226
@ -80,12 +80,6 @@ func main() {
|
|||||||
magic := binary.BigEndian.Uint32(buf)
|
magic := binary.BigEndian.Uint32(buf)
|
||||||
|
|
||||||
switch magic {
|
switch magic {
|
||||||
case discover.AnnouncementMagicV1:
|
|
||||||
handleAnnounceV1(addr, buf)
|
|
||||||
|
|
||||||
case discover.QueryMagicV1:
|
|
||||||
handleQueryV1(conn, addr, buf)
|
|
||||||
|
|
||||||
case discover.AnnouncementMagicV2:
|
case discover.AnnouncementMagicV2:
|
||||||
handleAnnounceV2(addr, buf)
|
handleAnnounceV2(addr, buf)
|
||||||
|
|
||||||
@ -123,75 +117,6 @@ func limit(addr *net.UDPAddr) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleAnnounceV1(addr *net.UDPAddr, buf []byte) {
|
|
||||||
var pkt discover.AnnounceV1
|
|
||||||
err := pkt.UnmarshalXDR(buf)
|
|
||||||
if err != nil {
|
|
||||||
log.Println("AnnounceV1 Unmarshal:", err)
|
|
||||||
log.Println(hex.Dump(buf))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if debug {
|
|
||||||
log.Printf("<- %v %#v", addr, pkt)
|
|
||||||
}
|
|
||||||
|
|
||||||
ip := addr.IP.To4()
|
|
||||||
if ip == nil {
|
|
||||||
ip = addr.IP.To16()
|
|
||||||
}
|
|
||||||
node := Node{
|
|
||||||
Addresses: []Address{{
|
|
||||||
IP: ip,
|
|
||||||
Port: pkt.Port,
|
|
||||||
}},
|
|
||||||
Updated: time.Now(),
|
|
||||||
}
|
|
||||||
|
|
||||||
lock.Lock()
|
|
||||||
nodes[pkt.NodeID] = node
|
|
||||||
lock.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
func handleQueryV1(conn *net.UDPConn, addr *net.UDPAddr, buf []byte) {
|
|
||||||
var pkt discover.QueryV1
|
|
||||||
err := pkt.UnmarshalXDR(buf)
|
|
||||||
if err != nil {
|
|
||||||
log.Println("QueryV1 Unmarshal:", err)
|
|
||||||
log.Println(hex.Dump(buf))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if debug {
|
|
||||||
log.Printf("<- %v %#v", addr, pkt)
|
|
||||||
}
|
|
||||||
|
|
||||||
lock.Lock()
|
|
||||||
node, ok := nodes[pkt.NodeID]
|
|
||||||
queries++
|
|
||||||
lock.Unlock()
|
|
||||||
|
|
||||||
if ok && len(node.Addresses) > 0 {
|
|
||||||
pkt := discover.AnnounceV1{
|
|
||||||
Magic: discover.AnnouncementMagicV1,
|
|
||||||
NodeID: pkt.NodeID,
|
|
||||||
Port: node.Addresses[0].Port,
|
|
||||||
IP: node.Addresses[0].IP,
|
|
||||||
}
|
|
||||||
if debug {
|
|
||||||
log.Printf("-> %v %#v", addr, pkt)
|
|
||||||
}
|
|
||||||
|
|
||||||
tb := pkt.MarshalXDR()
|
|
||||||
_, _, err = conn.WriteMsgUDP(tb, nil, addr)
|
|
||||||
if err != nil {
|
|
||||||
log.Println("QueryV1 response write:", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
lock.Lock()
|
|
||||||
answered++
|
|
||||||
lock.Unlock()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func handleAnnounceV2(addr *net.UDPAddr, buf []byte) {
|
func handleAnnounceV2(addr *net.UDPAddr, buf []byte) {
|
||||||
var pkt discover.AnnounceV2
|
var pkt discover.AnnounceV2
|
||||||
err := pkt.UnmarshalXDR(buf)
|
err := pkt.UnmarshalXDR(buf)
|
||||||
|
@ -1,22 +1,5 @@
|
|||||||
package discover
|
package discover
|
||||||
|
|
||||||
const (
|
|
||||||
AnnouncementMagicV1 = 0x20121025
|
|
||||||
QueryMagicV1 = 0x19760309
|
|
||||||
)
|
|
||||||
|
|
||||||
type QueryV1 struct {
|
|
||||||
Magic uint32
|
|
||||||
NodeID string // max:64
|
|
||||||
}
|
|
||||||
|
|
||||||
type AnnounceV1 struct {
|
|
||||||
Magic uint32
|
|
||||||
Port uint16
|
|
||||||
NodeID string // max:64
|
|
||||||
IP []byte // max:16
|
|
||||||
}
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
AnnouncementMagicV2 = 0x029E4C77
|
AnnouncementMagicV2 = 0x029E4C77
|
||||||
QueryMagicV2 = 0x23D63A9A
|
QueryMagicV2 = 0x23D63A9A
|
||||||
|
@ -7,89 +7,6 @@ import (
|
|||||||
"github.com/calmh/syncthing/xdr"
|
"github.com/calmh/syncthing/xdr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (o QueryV1) EncodeXDR(w io.Writer) (int, error) {
|
|
||||||
var xw = xdr.NewWriter(w)
|
|
||||||
return o.encodeXDR(xw)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o QueryV1) MarshalXDR() []byte {
|
|
||||||
var buf bytes.Buffer
|
|
||||||
var xw = xdr.NewWriter(&buf)
|
|
||||||
o.encodeXDR(xw)
|
|
||||||
return buf.Bytes()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o QueryV1) encodeXDR(xw *xdr.Writer) (int, error) {
|
|
||||||
xw.WriteUint32(o.Magic)
|
|
||||||
if len(o.NodeID) > 64 {
|
|
||||||
return xw.Tot(), xdr.ErrElementSizeExceeded
|
|
||||||
}
|
|
||||||
xw.WriteString(o.NodeID)
|
|
||||||
return xw.Tot(), xw.Error()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *QueryV1) DecodeXDR(r io.Reader) error {
|
|
||||||
xr := xdr.NewReader(r)
|
|
||||||
return o.decodeXDR(xr)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *QueryV1) UnmarshalXDR(bs []byte) error {
|
|
||||||
var buf = bytes.NewBuffer(bs)
|
|
||||||
var xr = xdr.NewReader(buf)
|
|
||||||
return o.decodeXDR(xr)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *QueryV1) decodeXDR(xr *xdr.Reader) error {
|
|
||||||
o.Magic = xr.ReadUint32()
|
|
||||||
o.NodeID = xr.ReadStringMax(64)
|
|
||||||
return xr.Error()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o AnnounceV1) EncodeXDR(w io.Writer) (int, error) {
|
|
||||||
var xw = xdr.NewWriter(w)
|
|
||||||
return o.encodeXDR(xw)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o AnnounceV1) MarshalXDR() []byte {
|
|
||||||
var buf bytes.Buffer
|
|
||||||
var xw = xdr.NewWriter(&buf)
|
|
||||||
o.encodeXDR(xw)
|
|
||||||
return buf.Bytes()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o AnnounceV1) encodeXDR(xw *xdr.Writer) (int, error) {
|
|
||||||
xw.WriteUint32(o.Magic)
|
|
||||||
xw.WriteUint16(o.Port)
|
|
||||||
if len(o.NodeID) > 64 {
|
|
||||||
return xw.Tot(), xdr.ErrElementSizeExceeded
|
|
||||||
}
|
|
||||||
xw.WriteString(o.NodeID)
|
|
||||||
if len(o.IP) > 16 {
|
|
||||||
return xw.Tot(), xdr.ErrElementSizeExceeded
|
|
||||||
}
|
|
||||||
xw.WriteBytes(o.IP)
|
|
||||||
return xw.Tot(), xw.Error()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *AnnounceV1) DecodeXDR(r io.Reader) error {
|
|
||||||
xr := xdr.NewReader(r)
|
|
||||||
return o.decodeXDR(xr)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *AnnounceV1) UnmarshalXDR(bs []byte) error {
|
|
||||||
var buf = bytes.NewBuffer(bs)
|
|
||||||
var xr = xdr.NewReader(buf)
|
|
||||||
return o.decodeXDR(xr)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *AnnounceV1) decodeXDR(xr *xdr.Reader) error {
|
|
||||||
o.Magic = xr.ReadUint32()
|
|
||||||
o.Port = xr.ReadUint16()
|
|
||||||
o.NodeID = xr.ReadStringMax(64)
|
|
||||||
o.IP = xr.ReadBytesMax(16)
|
|
||||||
return xr.Error()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o QueryV2) EncodeXDR(w io.Writer) (int, error) {
|
func (o QueryV2) EncodeXDR(w io.Writer) (int, error) {
|
||||||
var xw = xdr.NewWriter(w)
|
var xw = xdr.NewWriter(w)
|
||||||
return o.encodeXDR(xw)
|
return o.encodeXDR(xw)
|
||||||
|
Loading…
Reference in New Issue
Block a user