|
@@ -4,30 +4,31 @@ import (
|
|
|
"fmt"
|
|
|
"log"
|
|
|
"os"
|
|
|
+ "path/filepath"
|
|
|
|
|
|
"github.com/gravitl/netmaker/netclient/ncutils"
|
|
|
)
|
|
|
|
|
|
const MAC_SERVICE_NAME = "com.gravitl.netclient"
|
|
|
|
|
|
-// SetupMacDaemon - Creates a daemon service from the netclient under LaunchAgents for MacOS
|
|
|
func SetupMacDaemon(interval string) error {
|
|
|
|
|
|
- if !ncutils.FileExists("/etc/netclient/netclient") {
|
|
|
- binarypath, err := os.Executable()
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- ncutils.PrintLog("installing binary from "+binarypath, 0)
|
|
|
- err = ncutils.Copy(binarypath, "/etc/netclient/netclient")
|
|
|
+ dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ binarypath := dir + "/netclient"
|
|
|
+
|
|
|
+ if !ncutils.FileExists("/sbin/netclient") {
|
|
|
+ err = ncutils.Copy(binarypath, "/sbin/netclient")
|
|
|
if err != nil {
|
|
|
log.Println(err)
|
|
|
return err
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- _, err := os.Stat("~/Library/LaunchAgents")
|
|
|
- if os.IsNotExist(err) {
|
|
|
+ _, errN := os.Stat("~/Library/LaunchAgents")
|
|
|
+ if os.IsNotExist(errN) {
|
|
|
os.Mkdir("~/Library/LaunchAgents", 0755)
|
|
|
}
|
|
|
err = CreateMacService(MAC_SERVICE_NAME, interval)
|
|
@@ -38,7 +39,6 @@ func SetupMacDaemon(interval string) error {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
-// CleanupMac - Removes the netclient checkin daemon from LaunchDaemons
|
|
|
func CleanupMac() {
|
|
|
_, err := ncutils.RunCmd("launchctl unload /Library/LaunchDaemons/"+MAC_SERVICE_NAME+".plist", true)
|
|
|
if ncutils.FileExists("/Library/LaunchDaemons/" + MAC_SERVICE_NAME + ".plist") {
|
|
@@ -49,9 +49,9 @@ func CleanupMac() {
|
|
|
}
|
|
|
|
|
|
os.RemoveAll(ncutils.GetNetclientPath())
|
|
|
+ os.Remove("/sbin/netclient")
|
|
|
}
|
|
|
|
|
|
-// CreateMacService - Creates the mac service file for LaunchDaemons
|
|
|
func CreateMacService(servicename string, interval string) error {
|
|
|
_, err := os.Stat("/Library/LaunchDaemons")
|
|
|
if os.IsNotExist(err) {
|
|
@@ -69,7 +69,6 @@ func CreateMacService(servicename string, interval string) error {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
-// MacDaemonString - the file contents for the mac netclient daemon service (launchdaemon)
|
|
|
func MacDaemonString(interval string) string {
|
|
|
return fmt.Sprintf(`<?xml version='1.0' encoding='UTF-8'?>
|
|
|
<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\" >
|
|
@@ -78,10 +77,8 @@ func MacDaemonString(interval string) string {
|
|
|
<key>Label</key><string>com.gravitl.netclient</string>
|
|
|
<key>ProgramArguments</key>
|
|
|
<array>
|
|
|
- <string>/etc/netclient/netclient</string>
|
|
|
- <string>checkin</string>
|
|
|
- <string>-n</string>
|
|
|
- <string>all</string>
|
|
|
+ <string>/sbin/netclient</string>
|
|
|
+ <string>daemon</string>
|
|
|
</array>
|
|
|
<key>StandardOutPath</key><string>/etc/netclient/com.gravitl.netclient.log</string>
|
|
|
<key>StandardErrorPath</key><string>/etc/netclient/com.gravitl.netclient.log</string>
|
|
@@ -98,7 +95,6 @@ func MacDaemonString(interval string) string {
|
|
|
`, interval)
|
|
|
}
|
|
|
|
|
|
-// MacTemplateData - struct to represent the mac service
|
|
|
type MacTemplateData struct {
|
|
|
Label string
|
|
|
Interval string
|