diff --git a/norduser/group_monitor.go b/norduser/group_monitor.go index 29d157a4..1194d9b4 100644 --- a/norduser/group_monitor.go +++ b/norduser/group_monitor.go @@ -108,14 +108,14 @@ func getUID(username string) (userIDs, error) { func (n *NordvpnGroupMonitor) handleGroupUpdate(currentGroupMembers userSet, newGroupMembers userSet) { for member := range currentGroupMembers { // member not modified, do nothing - if ok := newGroupMembers[member]; ok { + if _, ok := newGroupMembers[member]; ok { newGroupMembers[member] = true continue } userIDs, err := getUID(member) if err != nil { - log.Println("failed to look up UID/GID of deleted group member:", err) + log.Println("failed to look up UID/GID of deleted group member: ", err) continue } @@ -144,6 +144,8 @@ func (n *NordvpnGroupMonitor) handleGroupUpdate(currentGroupMembers userSet, new if err := n.norduserd.Enable(userID.uid, userID.gid, userID.home); err != nil { log.Println("enabling norduserd for member:", err) } + + newGroupMembers[member] = true } } @@ -158,6 +160,8 @@ func (n *NordvpnGroupMonitor) startForEveryGroupMember(groupMembers userSet) { if err := n.norduserd.Enable(user.uid, user.gid, user.home); err != nil { log.Println("failed to start norduser for group member:", err) } + + groupMembers[member] = true } } @@ -209,11 +213,7 @@ func (n *NordvpnGroupMonitor) Start() error { newGroupMembers, err := getNordvpnGroupMembers() if err == nil { n.handleGroupUpdate(currentGrupMembers, newGroupMembers) - if err != nil { - log.Println("Failed to read new group members after groupfile has changed:", err) - } else { - currentGrupMembers = newGroupMembers - } + currentGrupMembers = newGroupMembers } else { log.Println("Failed to get new group members:", err) } diff --git a/norduser/group_monitor_test.go b/norduser/group_monitor_test.go index 367804fc..3af5fd00 100644 --- a/norduser/group_monitor_test.go +++ b/norduser/group_monitor_test.go @@ -76,6 +76,16 @@ func Test_getGroupMembers(t *testing.T) { groupEntry: "nordvpn:x:996:", expectedResult: userSet{}, }, + { + name: "group name starts with nordvpn", + groupEntry: "nordvpn_ddd:x:996:", + expectedResult: userSet{}, + }, + { + name: "group name starts with nordvpn", + groupEntry: "nordvpn:", + expectedResult: userSet{}, + }, } for _, test := range tests {