summaryrefslogtreecommitdiff
path: root/src/nshd/hackers_git/hackers.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/nshd/hackers_git/hackers.go')
-rw-r--r--src/nshd/hackers_git/hackers.go35
1 files changed, 17 insertions, 18 deletions
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
}