diff options
Diffstat (limited to 'src/nshd')
-rw-r--r-- | src/nshd/main.go | 87 |
1 files changed, 4 insertions, 83 deletions
diff --git a/src/nshd/main.go b/src/nshd/main.go index 45b7b33..986e019 100644 --- a/src/nshd/main.go +++ b/src/nshd/main.go @@ -1,90 +1,11 @@ package main import ( - "os" - "fmt" - "net" - "nslcd_proto" - sd "sd_daemon" - "sd_daemon/logger" - _ "inotify" - "syscall" + _ "golang.org/x/exp/inotify" + _ "gopkg.in/yaml.v2" + "nslcd_systemd" ) -func get_socket() (socket net.Listener, err error) { - socket = nil - err = nil - fds := sd.ListenFds(true); - if (fds == nil) { - err = fmt.Errorf("failed to aquire sockets from systemd") - return - } - if (len(fds) != 1) { - err = fmt.Errorf("wrong number of sockets from systemd: expected %d but got %d", 1, len(fds)) - return - } - socket, err = net.FileListener(fds[0]) - fds[0].Close() - return -} - -func getpeercred(conn *net.UnixConn) (cred *syscall.Ucred, err error) { - cred = nil - file, err := conn.File() - if err != nil { - return - } - defer file.Close() - cred, err = syscall.GetsockoptUcred(int(file.Fd()), syscall.SOL_SOCKET, syscall.SO_PEERCRED) - return -} - -func handler(conn *net.UnixConn, backend nslcd_proto.Backend) { - cred, err := getpeercred(conn) - if err != nil { - logger.Debug("connection from unknown client") - } else { - logger.Debug("connection from pid=%v uid=%v gid=%v", - cred.Pid, cred.Uid, cred.Gid) - } - err = nslcd_proto.HandleRequest(backend, conn, conn, *cred) - if err != nil { - logger.Debug("Error while handling request: %v", err) - } - - -} - func main() { - var err error = nil - var socket net.Listener = nil - defer func() { - if socket != nil { - socket.Close() - } - }() - - socket, err = get_socket() - if err != nil { - logger.Err("%s", err.Error()) - sd.Notify(false, "STOPPING=1") - os.Exit(1) - } - - sd.Notify(false, "READY=1") - - for { - conn, err := socket.Accept() - if err != nil { - logger.Notice("%s", err.Error()) - } - go handler(conn.(*net.UnixConn), nil) - } - - sd.Notify(false, "STOPPING=1") - os.Exit(0) + nslcd_systemd.Main(nil) } - - -// Initialize() error { func -// } |