From ce1dc46501556778e73fb120b92873750fab5cf3 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 7 Sep 2015 13:01:01 -0600 Subject: manage each users list of groups as a set instead of a list --- src/nshd/hackers_git/hackers.go | 2 +- src/nshd/hackers_git/hackers_parse.go | 9 ++------- src/nshd/hackers_git/hackers_watch.go | 6 +++--- 3 files changed, 6 insertions(+), 11 deletions(-) (limited to 'src/nshd/hackers_git') diff --git a/src/nshd/hackers_git/hackers.go b/src/nshd/hackers_git/hackers.go index c62c476..2bc2fb2 100644 --- a/src/nshd/hackers_git/hackers.go +++ b/src/nshd/hackers_git/hackers.go @@ -12,7 +12,7 @@ import ( type user struct { passwd nslcd_proto.Passwd - groups []string + groups map[string]bool } type Config struct { diff --git a/src/nshd/hackers_git/hackers_parse.go b/src/nshd/hackers_git/hackers_parse.go index f7baa68..77b9a13 100644 --- a/src/nshd/hackers_git/hackers_parse.go +++ b/src/nshd/hackers_git/hackers_parse.go @@ -77,7 +77,7 @@ func parse_user_yaml(filename string) (ret user, err error) { } if iface, isSet := data["groups"]; !isSet { - ret.groups = make([]string, 0) + ret.groups = make(map[string]bool, 0) } else if ary, isTyp := iface.([]interface{}); !isTyp { errs = append(errs, "\"groups\" is not an array") } else { @@ -93,12 +93,7 @@ func parse_user_yaml(filename string) (ret user, err error) { } } if !e { - ret.groups = make([]string, len(groups)) - var i uint = 0 - for group, _ := range groups { - ret.groups[i] = group - i++ - } + ret.groups = groups } } } diff --git a/src/nshd/hackers_git/hackers_watch.go b/src/nshd/hackers_git/hackers_watch.go index 96e0480..2e5eb75 100644 --- a/src/nshd/hackers_git/hackers_watch.go +++ b/src/nshd/hackers_git/hackers_watch.go @@ -106,11 +106,11 @@ func (o *Hackers) load_yaml_file(filename string) { o.lock.Lock() defer o.lock.Unlock() if olduser, found := o.users[uid]; found { - for _, groupname := range olduser.groups { + for groupname, _ := range olduser.groups { o.del_user_from_group(olduser.passwd.Name, groupname) } } - for _, groupname := range user.groups { + for groupname, _ := range user.groups { o.add_user_to_group(user.passwd.Name, groupname) } o.users[uid] = user @@ -124,7 +124,7 @@ func (o *Hackers) load_yaml_file(filename string) { o.unwatchHomedir(wd) } if olduser, found := o.users[uid]; found { - for _, groupname := range olduser.groups { + for groupname, _ := range olduser.groups { o.del_user_from_group(olduser.passwd.Name, groupname) } delete(o.users, uid) -- cgit v1.2.3-54-g00ecf