summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2018-07-05 00:31:03 +0200
committerKali Kaneko (leap communications) <kali@leap.se>2018-07-07 04:56:29 +0200
commit1cd5eedba79ad555ee486db263b598b195ff2128 (patch)
treebfa9cf61f88dfc48f9eb31dbe1e1e752d562d326
parent7d54e7dfd073c5f8a90a7055fd99d5dccb5277b6 (diff)
[feat] daemonize helper in osx
a daemon is expected
-rw-r--r--.gitignore2
-rw-r--r--helper/helper.go33
2 files changed, 35 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 641884d..38a4274 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,5 +5,7 @@
*.exe
*.pyc
staging/*
+dist/*
__pycache__
helper/helper
+helper/pid
diff --git a/helper/helper.go b/helper/helper.go
index 1e30f8f..04eafc7 100644
--- a/helper/helper.go
+++ b/helper/helper.go
@@ -22,6 +22,9 @@ import (
"net/http"
"os"
"os/exec"
+ "runtime"
+
+ "github.com/sevlyar/go-daemon"
)
const (
@@ -40,6 +43,36 @@ func main() {
defer logger.Close()
}
+ if runtime.GOOS == "darwin" {
+ daemonize()
+ }
+ serveHTTP()
+
+}
+
+func daemonize() {
+ cntxt := &daemon.Context{
+ PidFileName: "pid",
+ PidFilePerm: 0644,
+ LogFileName: "bitmask-helper.log",
+ LogFilePerm: 0640,
+ WorkDir: "./",
+ Umask: 027,
+ Args: []string{"[bitmask-helper]"},
+ }
+
+ d, err := cntxt.Reborn()
+ if err != nil {
+ log.Fatal("Unable to run: ", err)
+ }
+ if d != nil {
+ return
+ }
+ defer cntxt.Release()
+ log.Print("bitmask-helper daemon started")
+}
+
+func serveHTTP() {
openvpn := openvpnT{nil}
firewall := firewallT{}
http.HandleFunc("/openvpn/start", openvpn.start)