Switch to syslog when running in the background

This commit is contained in:
Jakob Unterwurzacher 2016-01-20 22:31:15 +01:00
parent 17f0eb1339
commit 9bab220a1b
2 changed files with 25 additions and 3 deletions

View File

@ -2,10 +2,14 @@ package main
import (
"fmt"
"log"
"log/syslog"
"os"
"os/exec"
"os/signal"
"syscall"
"github.com/rfjakob/gocryptfs/cryptfs"
)
// The child sends us USR1 if the mount was successful
@ -22,8 +26,7 @@ func exitOnUsr1() {
func forkChild() {
go exitOnUsr1()
name := os.Args[0]
notifyArg := fmt.Sprintf("-notifypid=%d", os.Getpid())
newArgs := []string{"-f", notifyArg}
newArgs := []string{"-f", fmt.Sprintf("-notifypid=%d", os.Getpid())}
newArgs = append(newArgs, os.Args[1:]...)
c := exec.Command(name, newArgs...)
c.Stdout = os.Stdout
@ -47,3 +50,13 @@ func forkChild() {
// The child exited with 0 - let's do the same.
os.Exit(0)
}
// Switch one Logger to syslog
func switchToSyslog(l *log.Logger, p syslog.Priority) {
w, err := syslog.New(p, PROGRAM_NAME)
if err != nil {
cryptfs.Warn.Printf("Cannot switch 0x%02x to syslog: %v", p, err)
} else {
l.SetOutput(w)
}
}

11
main.go
View File

@ -5,6 +5,7 @@ import (
"flag"
"fmt"
"io/ioutil"
"log/syslog"
"os"
"os/exec"
"os/signal"
@ -276,9 +277,17 @@ func main() {
cryptfs.Debug.Printf("cli args: %v", args)
srv := pathfsFrontend(masterkey, args, confFile)
cryptfs.Info.Println(colorGreen + "Filesystem mounted and ready." + colorReset)
// We are ready - send USR1 signal to our parent
// We are ready - send USR1 signal to our parent and switch to syslog
if args.notifypid > 0 {
sendUsr1(args.notifypid)
if !args.quiet {
switchToSyslog(cryptfs.Info, syslog.LOG_USER|syslog.LOG_INFO)
}
if args.debug {
switchToSyslog(cryptfs.Debug, syslog.LOG_USER|syslog.LOG_DEBUG)
}
switchToSyslog(cryptfs.Warn, syslog.LOG_USER|syslog.LOG_WARNING)
}
// Wait for SIGINT in the background and unmount ourselves if we get it.
// This prevents a dangling "Transport endpoint is not connected" mountpoint.