summaryrefslogtreecommitdiff
path: root/src/nshd
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2015-08-26 23:01:23 -0600
committerLuke Shumaker <lukeshu@sbcglobal.net>2015-08-26 23:01:23 -0600
commit4ab446ed2a12e4f8b599f5912b9d4aabf20e2975 (patch)
treeb810043933c5675788edd32ec61414db9d3dc1eb /src/nshd
parent13bb2e14fcdd260d060b7240357d4a8a80002114 (diff)
stuff
Diffstat (limited to 'src/nshd')
-rw-r--r--src/nshd/main.go87
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
-// }