mirror of
https://github.com/jsiebens/ionscale.git
synced 2026-03-31 15:07:49 +01:00
fix: display tagged devices in user profile
This commit is contained in:
@@ -61,6 +61,10 @@ func (m *Machine) HasTag(tag string) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *Machine) HasTags() bool {
|
||||
return len(m.Tags) != 0
|
||||
}
|
||||
|
||||
func (m *Machine) IsAllowedIP(i netaddr.IP) bool {
|
||||
if m.HasIP(i) {
|
||||
return true
|
||||
|
||||
@@ -219,7 +219,7 @@ func (h *PollNetMapHandler) createKeepAliveResponse(binder bind.Binder, request
|
||||
func (h *PollNetMapHandler) createMapResponse(m *domain.Machine, binder bind.Binder, request *tailcfg.MapRequest, delta bool, prevSyncedPeerIDs map[uint64]bool) ([]byte, map[uint64]bool, error) {
|
||||
ctx := context.TODO()
|
||||
|
||||
node, err := mapping.ToNode(m, true)
|
||||
node, user, err := mapping.ToNode(m, true)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
@@ -229,11 +229,7 @@ func (h *PollNetMapHandler) createMapResponse(m *domain.Machine, binder bind.Bin
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
users, err := h.repository.ListUsers(ctx, m.TailnetID)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var users = []tailcfg.UserProfile{*user}
|
||||
var changedPeers []*tailcfg.Node
|
||||
var removedPeers []tailcfg.NodeID
|
||||
|
||||
@@ -243,19 +239,25 @@ func (h *PollNetMapHandler) createMapResponse(m *domain.Machine, binder bind.Bin
|
||||
}
|
||||
|
||||
syncedPeerIDs := map[uint64]bool{}
|
||||
syncedUserIDs := map[tailcfg.UserID]bool{}
|
||||
|
||||
for _, peer := range candidatePeers {
|
||||
if peer.IsExpired() {
|
||||
continue
|
||||
}
|
||||
if domain.IsValidPeer(policies, m, &peer) || domain.IsValidPeer(policies, &peer, m) {
|
||||
n, err := mapping.ToNode(&peer, h.brokers(peer.TailnetID).IsConnected(peer.ID))
|
||||
n, u, err := mapping.ToNode(&peer, h.brokers(peer.TailnetID).IsConnected(peer.ID))
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
changedPeers = append(changedPeers, n)
|
||||
syncedPeerIDs[peer.ID] = true
|
||||
delete(prevSyncedPeerIDs, peer.ID)
|
||||
|
||||
if _, ok := syncedUserIDs[u.ID]; !ok {
|
||||
users = append(users, *u)
|
||||
syncedUserIDs[u.ID] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -287,7 +289,7 @@ func (h *PollNetMapHandler) createMapResponse(m *domain.Machine, binder bind.Bin
|
||||
DERPMap: derpMap,
|
||||
Domain: dnsname.SanitizeHostname(m.Tailnet.Name),
|
||||
Peers: changedPeers,
|
||||
UserProfiles: mapping.ToUserProfiles(users),
|
||||
UserProfiles: users,
|
||||
ControlTime: &controlTime,
|
||||
}
|
||||
} else {
|
||||
@@ -297,7 +299,7 @@ func (h *PollNetMapHandler) createMapResponse(m *domain.Machine, binder bind.Bin
|
||||
DERPMap: derpMap,
|
||||
PeersChanged: changedPeers,
|
||||
PeersRemoved: removedPeers,
|
||||
UserProfiles: mapping.ToUserProfiles(users),
|
||||
UserProfiles: users,
|
||||
ControlTime: &controlTime,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,22 +72,22 @@ func ToDNSConfig(tailnet *domain.Tailnet, c *domain.DNSConfig) *tailcfg.DNSConfi
|
||||
return config
|
||||
}
|
||||
|
||||
func ToNode(m *domain.Machine, connected bool) (*tailcfg.Node, error) {
|
||||
func ToNode(m *domain.Machine, connected bool) (*tailcfg.Node, *tailcfg.UserProfile, error) {
|
||||
nKey, err := util.ParseNodePublicKey(m.NodeKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
mKey, err := util.ParseMachinePublicKey(m.MachineKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var discoKey key.DiscoPublic
|
||||
if m.DiscoKey != "" {
|
||||
dKey, err := util.ParseDiscoPublicKey(m.DiscoKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
discoKey = *dKey
|
||||
}
|
||||
@@ -101,7 +101,7 @@ func ToNode(m *domain.Machine, connected bool) (*tailcfg.Node, error) {
|
||||
if !m.IPv4.IsZero() {
|
||||
ipv4, err := m.IPv4.Prefix(32)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
addrs = append(addrs, ipv4)
|
||||
allowedIPs = append(allowedIPs, ipv4)
|
||||
@@ -110,7 +110,7 @@ func ToNode(m *domain.Machine, connected bool) (*tailcfg.Node, error) {
|
||||
if !m.IPv6.IsZero() {
|
||||
ipv6, err := m.IPv6.Prefix(128)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
addrs = append(addrs, ipv6)
|
||||
allowedIPs = append(allowedIPs, ipv6)
|
||||
@@ -169,7 +169,18 @@ func ToNode(m *domain.Machine, connected bool) (*tailcfg.Node, error) {
|
||||
n.LastSeen = &l
|
||||
}
|
||||
|
||||
return &n, nil
|
||||
var user = ToUserProfile(m.User)
|
||||
|
||||
if m.HasTags() {
|
||||
n.User = tailcfg.UserID(m.ID)
|
||||
user = tailcfg.UserProfile{
|
||||
ID: tailcfg.UserID(m.ID),
|
||||
LoginName: "tagged-devices",
|
||||
DisplayName: "Tagged Devices",
|
||||
}
|
||||
}
|
||||
|
||||
return &n, &user, nil
|
||||
}
|
||||
|
||||
func ToUserProfile(u domain.User) tailcfg.UserProfile {
|
||||
|
||||
Reference in New Issue
Block a user