5
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2024-09-20 06:02:34 +00:00

rename to 'AllowedBoxPubs' and similar

This commit is contained in:
Arceliar 2018-05-07 17:05:54 -05:00
parent 6ce16d8192
commit 5dac273a3d
7 changed files with 46 additions and 46 deletions

View File

@ -105,18 +105,18 @@ func (a *admin) init(c *Core, listenaddr string) {
*out = []byte(a.printInfos([]admin_nodeInfo{info})) *out = []byte(a.printInfos([]admin_nodeInfo{info}))
} }
}) })
a.addHandler("getAuthBoxPubs", nil, func(out *[]byte, _ ...string) { a.addHandler("getAllowedBoxPubs", nil, func(out *[]byte, _ ...string) {
*out = []byte(a.getAuthBoxPubs()) *out = []byte(a.getAllowedBoxPubs())
}) })
a.addHandler("addAuthBoxPub", []string{"<boxPubKey>"}, func(out *[]byte, saddr ...string) { a.addHandler("addAllowedBoxPub", []string{"<boxPubKey>"}, func(out *[]byte, saddr ...string) {
if a.addAuthBoxPub(saddr[0]) == nil { if a.addAllowedBoxPub(saddr[0]) == nil {
*out = []byte("Adding key: " + saddr[0] + "\n") *out = []byte("Adding key: " + saddr[0] + "\n")
} else { } else {
*out = []byte("Failed to add key: " + saddr[0] + "\n") *out = []byte("Failed to add key: " + saddr[0] + "\n")
} }
}) })
a.addHandler("removeAuthBoxPub", []string{"<boxPubKey>"}, func(out *[]byte, sport ...string) { a.addHandler("removeAllowedBoxPub", []string{"<boxPubKey>"}, func(out *[]byte, sport ...string) {
if a.removeAuthBoxPub(sport[0]) == nil { if a.removeAllowedBoxPub(sport[0]) == nil {
*out = []byte("Removing key: " + sport[0] + "\n") *out = []byte("Removing key: " + sport[0] + "\n")
} else { } else {
*out = []byte("Failed to remove key: " + sport[0] + "\n") *out = []byte("Failed to remove key: " + sport[0] + "\n")
@ -365,8 +365,8 @@ func (a *admin) getData_getSessions() []admin_nodeInfo {
return infos return infos
} }
func (a *admin) getAuthBoxPubs() string { func (a *admin) getAllowedBoxPubs() string {
pubs := a.core.peers.getAuthBoxPubs() pubs := a.core.peers.getAllowedBoxPubs()
var out []string var out []string
for _, pub := range pubs { for _, pub := range pubs {
out = append(out, hex.EncodeToString(pub[:])) out = append(out, hex.EncodeToString(pub[:]))
@ -375,22 +375,22 @@ func (a *admin) getAuthBoxPubs() string {
return strings.Join(out, "\n") return strings.Join(out, "\n")
} }
func (a *admin) addAuthBoxPub(bstr string) (err error) { func (a *admin) addAllowedBoxPub(bstr string) (err error) {
boxBytes, err := hex.DecodeString(bstr) boxBytes, err := hex.DecodeString(bstr)
if err == nil { if err == nil {
var box boxPubKey var box boxPubKey
copy(box[:], boxBytes) copy(box[:], boxBytes)
a.core.peers.addAuthBoxPub(&box) a.core.peers.addAllowedBoxPub(&box)
} }
return return
} }
func (a *admin) removeAuthBoxPub(bstr string) (err error) { func (a *admin) removeAllowedBoxPub(bstr string) (err error) {
boxBytes, err := hex.DecodeString(bstr) boxBytes, err := hex.DecodeString(bstr)
if err == nil { if err == nil {
var box boxPubKey var box boxPubKey
copy(box[:], boxBytes) copy(box[:], boxBytes)
a.core.peers.removeAuthBoxPub(&box) a.core.peers.removeAllowedBoxPub(&box)
} }
return return
} }

View File

@ -5,7 +5,7 @@ type NodeConfig struct {
Listen string Listen string
AdminListen string AdminListen string
Peers []string Peers []string
PeerBoxPubs []string AllowedBoxPubs []string
BoxPub string BoxPub string
BoxPriv string BoxPriv string
SigPub string SigPub string

View File

@ -397,8 +397,8 @@ func (c *Core) DEBUG_setIfceExpr(expr *regexp.Regexp) {
c.ifceExpr = expr c.ifceExpr = expr
} }
func (c *Core) DEBUG_addAuthBoxPub(boxStr string) { func (c *Core) DEBUG_addAllowedBoxPub(boxStr string) {
err := c.admin.addAuthBoxPub(boxStr) err := c.admin.addAllowedBoxPub(boxStr)
if err != nil { if err != nil {
panic(err) panic(err)
} }

View File

@ -35,7 +35,7 @@ type peers struct {
ports atomic.Value //map[Port]*peer, use CoW semantics ports atomic.Value //map[Port]*peer, use CoW semantics
//ports map[Port]*peer //ports map[Port]*peer
authMutex sync.RWMutex authMutex sync.RWMutex
authBoxPubs map[boxPubKey]struct{} allowedBoxPubs map[boxPubKey]struct{}
} }
func (ps *peers) init(c *Core) { func (ps *peers) init(c *Core) {
@ -43,33 +43,33 @@ func (ps *peers) init(c *Core) {
defer ps.mutex.Unlock() defer ps.mutex.Unlock()
ps.putPorts(make(map[switchPort]*peer)) ps.putPorts(make(map[switchPort]*peer))
ps.core = c ps.core = c
ps.authBoxPubs = make(map[boxPubKey]struct{}) ps.allowedBoxPubs = make(map[boxPubKey]struct{})
} }
func (ps *peers) isAuthBoxPub(box *boxPubKey) bool { func (ps *peers) isAllowedBoxPub(box *boxPubKey) bool {
ps.authMutex.RLock() ps.authMutex.RLock()
defer ps.authMutex.RUnlock() defer ps.authMutex.RUnlock()
_, isIn := ps.authBoxPubs[*box] _, isIn := ps.allowedBoxPubs[*box]
return isIn || len(ps.authBoxPubs) == 0 return isIn || len(ps.allowedBoxPubs) == 0
} }
func (ps *peers) addAuthBoxPub(box *boxPubKey) { func (ps *peers) addAllowedBoxPub(box *boxPubKey) {
ps.authMutex.Lock() ps.authMutex.Lock()
defer ps.authMutex.Unlock() defer ps.authMutex.Unlock()
ps.authBoxPubs[*box] = struct{}{} ps.allowedBoxPubs[*box] = struct{}{}
} }
func (ps *peers) removeAuthBoxPub(box *boxPubKey) { func (ps *peers) removeAllowedBoxPub(box *boxPubKey) {
ps.authMutex.Lock() ps.authMutex.Lock()
defer ps.authMutex.Unlock() defer ps.authMutex.Unlock()
delete(ps.authBoxPubs, *box) delete(ps.allowedBoxPubs, *box)
} }
func (ps *peers) getAuthBoxPubs() []boxPubKey { func (ps *peers) getAllowedBoxPubs() []boxPubKey {
ps.authMutex.RLock() ps.authMutex.RLock()
defer ps.authMutex.RUnlock() defer ps.authMutex.RUnlock()
keys := make([]boxPubKey, 0, len(ps.authBoxPubs)) keys := make([]boxPubKey, 0, len(ps.allowedBoxPubs))
for key := range ps.authBoxPubs { for key := range ps.allowedBoxPubs {
keys = append(keys, key) keys = append(keys, key)
} }
return keys return keys

View File

@ -151,7 +151,7 @@ func (iface *tcpInterface) handler(sock net.Conn, incoming bool) {
return return
} }
// Check if we're authorized to connect to this key / IP // Check if we're authorized to connect to this key / IP
if incoming && !iface.core.peers.isAuthBoxPub(&info.box) { if incoming && !iface.core.peers.isAllowedBoxPub(&info.box) {
// Allow unauthorized peers if they're link-local // Allow unauthorized peers if they're link-local
raddrStr, _, _ := net.SplitHostPort(sock.RemoteAddr().String()) raddrStr, _, _ := net.SplitHostPort(sock.RemoteAddr().String())
raddr := net.ParseIP(raddrStr) raddr := net.ParseIP(raddrStr)

View File

@ -206,7 +206,7 @@ func (iface *udpInterface) handleKeys(msg []byte, addr connAddr) {
udpAddr := addr.toUDPAddr() udpAddr := addr.toUDPAddr()
// Check if we're authorized to connect to this key / IP // Check if we're authorized to connect to this key / IP
// TODO monitor and always allow outgoing connections // TODO monitor and always allow outgoing connections
if !iface.core.peers.isAuthBoxPub(&ks.box) { if !iface.core.peers.isAllowedBoxPub(&ks.box) {
// Allow unauthorized peers if they're link-local // Allow unauthorized peers if they're link-local
if !udpAddr.IP.IsLinkLocalUnicast() { if !udpAddr.IP.IsLinkLocalUnicast() {
return return

View File

@ -66,8 +66,8 @@ func (n *node) init(cfg *nodeConfig, logger *log.Logger) {
logger.Println("Starting admin socket...") logger.Println("Starting admin socket...")
n.core.DEBUG_setupAndStartAdminInterface(cfg.AdminListen) n.core.DEBUG_setupAndStartAdminInterface(cfg.AdminListen)
logger.Println("Started admin socket") logger.Println("Started admin socket")
for _, pBoxStr := range cfg.PeerBoxPubs { for _, pBoxStr := range cfg.AllowedBoxPubs {
n.core.DEBUG_addAuthBoxPub(pBoxStr) n.core.DEBUG_addAllowedBoxPub(pBoxStr)
} }
go func() { go func() {
@ -101,7 +101,7 @@ func generateConfig(isAutoconf bool) *nodeConfig {
cfg.SigPub = hex.EncodeToString(spub[:]) cfg.SigPub = hex.EncodeToString(spub[:])
cfg.SigPriv = hex.EncodeToString(spriv[:]) cfg.SigPriv = hex.EncodeToString(spriv[:])
cfg.Peers = []string{} cfg.Peers = []string{}
cfg.PeerBoxPubs = []string{} cfg.AllowedBoxPubs = []string{}
cfg.Multicast = true cfg.Multicast = true
cfg.LinkLocal = "" cfg.LinkLocal = ""
cfg.IfName = core.DEBUG_GetTUNDefaultIfName() cfg.IfName = core.DEBUG_GetTUNDefaultIfName()