From 86c311a71d07823c18521890bea7c898c117466b Mon Sep 17 00:00:00 2001 From: Eugene Burkov Date: Mon, 28 Feb 2022 15:03:02 +0300 Subject: [PATCH] home: add bsd syslog --- internal/home/service.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/internal/home/service.go b/internal/home/service.go index e5d0ba391f9..b19a960157c 100644 --- a/internal/home/service.go +++ b/internal/home/service.go @@ -4,6 +4,7 @@ import ( "fmt" "io/fs" "os" + "path/filepath" "runtime" "strconv" "strings" @@ -82,6 +83,16 @@ func svcStatus(s service.Service) (status service.Status, err error) { // On OpenWrt, the service utility may not exist. We use our service script // directly in this case. func svcAction(s service.Service, action string) (err error) { + if runtime.GOOS == "darwin" && action == "start" { + var exe string + if exe, err = os.Executable(); err != nil { + log.Error("starting service: %s", err) + } else if exe, err = filepath.EvalSymlinks(exe); err != nil { + log.Error("starting service: %s", err) + } else if !strings.HasPrefix(exe, "/Applications/") { + log.Info("warning: service must be started from within the /Applications directory") + } + } if runtime.GOOS == "darwin" && action == "start" && !strings.HasPrefix(Context.workDir, "/Applications/") { @@ -587,14 +598,16 @@ const freeBSDScript = `#!/bin/sh # PROVIDE: {{.Name}} # REQUIRE: networking # KEYWORD: shutdown + . /etc/rc.subr + name="{{.Name}}" -{{.Name}}_env="IS_DAEMON=1" -{{.Name}}_user="root" +eval ${name}_env="IS_DAEMON=1" +eval ${name}_user="root" pidfile_child="/var/run/${name}.pid" pidfile="/var/run/${name}_daemon.pid" command="/usr/sbin/daemon" -command_args="-P ${pidfile} -p ${pidfile_child} -f -r {{.WorkingDirectory}}/{{.Name}}" +command_args="-P ${pidfile} -p ${pidfile_child} -T ${name} -r {{.WorkingDirectory}}/{{.Name}}" run_rc_command "$1" ` @@ -604,6 +617,7 @@ const openBSDScript = `#!/bin/sh daemon="{{.Path}}" daemon_flags={{ .Arguments | args }} +daemon_logger="daemon.info" . /etc/rc.d/rc.subr