From 491553fcb350562812d5dd1f5c9cbf0d472c2ba4 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 15 Jun 2016 21:36:06 -0400 Subject: nshd: use meta-cat --- src/nshd/hackers_git/hackers.go | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) (limited to 'src/nshd/hackers_git/hackers.go') diff --git a/src/nshd/hackers_git/hackers.go b/src/nshd/hackers_git/hackers.go index b72698f..19efafd 100644 --- a/src/nshd/hackers_git/hackers.go +++ b/src/nshd/hackers_git/hackers.go @@ -28,7 +28,6 @@ import ( "lukeshu.com/git/go/libnslcd.git/proto/server" "lukeshu.com/git/go/libnslcd.git/systemd" "lukeshu.com/git/go/libsystemd.git/sd_daemon/logger" - "path/filepath" "sync" ) @@ -37,16 +36,18 @@ type user struct { groups []string } -type Config struct { +type config struct { Pam_password_prohibit_message string - Yamldir string } type Hackers struct { nslcd_server.NilBackend - Cfg Config lock sync.RWMutex + CfgFilename string + YamlCat string + + cfg config users map[int32]user groups map[string]map[string]bool } @@ -55,6 +56,8 @@ var _ nslcd_systemd.Backend = &Hackers{} var _ nslcd_server.Backend = &Hackers{} func (o *Hackers) Init() error { + logger.Debug("hackers.git: CfgFilename = %v", o.CfgFilename) + logger.Debug("hackers.git: YamlCat = %v", o.YamlCat) err := o.Reload() if err != nil { logger.Err("hackers.git: Could not initialize: %v", err) @@ -77,28 +80,24 @@ func (o *Hackers) Reload() error { o.lock.Lock() defer o.lock.Unlock() - filenames, err := filepath.Glob(o.Cfg.Yamldir + "/*.yml") + var err error + o.cfg, err = parse_config(o.CfgFilename) if err != nil { return err } - o.users = make(map[int32]user, len(filenames)) - o.groups = make(map[string]map[string]bool) - for _, filename := range filenames { - logger.Debug("hackers.git: Loading YAML file: %s", filename) - user, err := parse_user_yaml(filename) - if err != nil { - logger.Warning("hackers.git: -> File ignored: %v", err) - continue - } + logger.Debug("hackers.git: Parsing user data") + o.users, err = parse_users(o.YamlCat) + if err != nil { + return err + } + + o.groups = make(map[string]map[string]bool) + for _, user := range o.users { for _, groupname := range user.groups { o.add_user_to_group(user.passwd.Name, groupname) } - user.passwd.PwHash = parse_user_password(user.passwd.HomeDir + "/.password") - o.users[user.passwd.UID] = user - logger.Debug("hackers.git: -> User %d(%s) added", user.passwd.UID, user.passwd.Name) } - return nil } -- cgit v1.2.2