mirror of
https://github.com/cwinfo/yggdrasil-go.git
synced 2025-02-16 23:59:17 +00:00
![ehmry](/assets/img/avatar_default.png)
* Reimplement AddPeer and RemovePeer for admin socket Fix #950 * Disconnect the peer on `removePeer` Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
42 lines
895 B
Go
42 lines
895 B
Go
package core
|
|
|
|
import (
|
|
"crypto/ed25519"
|
|
)
|
|
|
|
func (c *Core) _applyOption(opt SetupOption) {
|
|
switch v := opt.(type) {
|
|
case Peer:
|
|
c.config._peers[v] = nil
|
|
case ListenAddress:
|
|
c.config._listeners[v] = struct{}{}
|
|
case NodeInfo:
|
|
c.config.nodeinfo = v
|
|
case NodeInfoPrivacy:
|
|
c.config.nodeinfoPrivacy = v
|
|
case AllowedPublicKey:
|
|
pk := [32]byte{}
|
|
copy(pk[:], v)
|
|
c.config._allowedPublicKeys[pk] = struct{}{}
|
|
}
|
|
}
|
|
|
|
type SetupOption interface {
|
|
isSetupOption()
|
|
}
|
|
|
|
type ListenAddress string
|
|
type Peer struct {
|
|
URI string
|
|
SourceInterface string
|
|
}
|
|
type NodeInfo map[string]interface{}
|
|
type NodeInfoPrivacy bool
|
|
type AllowedPublicKey ed25519.PublicKey
|
|
|
|
func (a ListenAddress) isSetupOption() {}
|
|
func (a Peer) isSetupOption() {}
|
|
func (a NodeInfo) isSetupOption() {}
|
|
func (a NodeInfoPrivacy) isSetupOption() {}
|
|
func (a AllowedPublicKey) isSetupOption() {}
|