Set online status in lite requests (#1555)

This commit is contained in:
Kristoffer Dalby 2023-09-25 14:27:14 -07:00 committed by GitHub
parent 84fbca97f7
commit 64c0a6523f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 15 deletions

View file

@ -635,16 +635,6 @@ func (hsdb *HSDatabase) IsRoutesEnabled(node *types.Node, routeStr string) bool
return false return false
} }
func OnlineNodeMap(peers types.Nodes) map[tailcfg.NodeID]bool {
ret := make(map[tailcfg.NodeID]bool)
for _, peer := range peers {
ret[tailcfg.NodeID(peer.ID)] = peer.IsOnline()
}
return ret
}
func (hsdb *HSDatabase) ListOnlineNodes( func (hsdb *HSDatabase) ListOnlineNodes(
node *types.Node, node *types.Node,
) (map[tailcfg.NodeID]bool, error) { ) (map[tailcfg.NodeID]bool, error) {
@ -656,7 +646,7 @@ func (hsdb *HSDatabase) ListOnlineNodes(
return nil, err return nil, err
} }
return OnlineNodeMap(peers), nil return peers.OnlineNodeMap(), nil
} }
// enableRoutes enables new routes based on a list of new routes. // enableRoutes enables new routes based on a list of new routes.

View file

@ -15,7 +15,6 @@ import (
"time" "time"
mapset "github.com/deckarep/golang-set/v2" mapset "github.com/deckarep/golang-set/v2"
"github.com/juanfont/headscale/hscontrol/db"
"github.com/juanfont/headscale/hscontrol/policy" "github.com/juanfont/headscale/hscontrol/policy"
"github.com/juanfont/headscale/hscontrol/types" "github.com/juanfont/headscale/hscontrol/types"
"github.com/juanfont/headscale/hscontrol/util" "github.com/juanfont/headscale/hscontrol/util"
@ -218,9 +217,6 @@ func (m *Mapper) fullMapResponse(
return nil, err return nil, err
} }
// TODO(kradalby): Move this into appendPeerChanges?
resp.OnlineChange = db.OnlineNodeMap(peers)
err = appendPeerChanges( err = appendPeerChanges(
resp, resp,
pol, pol,
@ -618,5 +614,8 @@ func appendPeerChanges(
resp.UserProfiles = profiles resp.UserProfiles = profiles
resp.SSHPolicy = sshPolicy resp.SSHPolicy = sshPolicy
// TODO(kradalby): This currently does not take last seen in keepalives into account
resp.OnlineChange = peers.OnlineNodeMap()
return nil return nil
} }

View file

@ -70,6 +70,16 @@ type (
Nodes []*Node Nodes []*Node
) )
func (nodes Nodes) OnlineNodeMap() map[tailcfg.NodeID]bool {
ret := make(map[tailcfg.NodeID]bool)
for _, node := range nodes {
ret[tailcfg.NodeID(node.ID)] = node.IsOnline()
}
return ret
}
type NodeAddresses []netip.Addr type NodeAddresses []netip.Addr
func (na NodeAddresses) Sort() { func (na NodeAddresses) Sort() {