package zdaemon import ( "fmt" "git.swzry.com/zry/pathutils" "os" "path" "text/template" ) const tpl_systemd = `[Unit] Description={{.Description}} [Service] ExecStart={{.ExecPath}} start ExecStop={{.ExecPath}} stop [Install] WantedBy=multi-user.target ` func (zd *ZDaemon) install_systemd() { if zd.daemonConfig.InstallMode != "free" { fmt.Println("Failed install: already installed.") return } initsp := path.Join("/usr/lib/systemd/system/", fmt.Sprintf("%d.service", zd.daemonName)) pe, _ := pathutils.PathExists(initsp) if pe { err := os.Remove(initsp) if err != nil { fmt.Println("Failed install, old file exist and error in deleting old file: ", err.Error()) return } } otpl := template.New(zd.daemonName) tpl, err := otpl.Parse(tpl_systemd) if err != nil { fmt.Println("Failed install: ", err.Error()) return } fids, err := os.OpenFile(initsp, os.O_WRONLY|os.O_CREATE, 0777) if err != nil { fmt.Println("Failed install: ", err.Error()) return } tdat := map[string]string{ "Description": zd.description, "ExecPath": zd.executableFileName, } err = tpl.Execute(fids, tdat) if err != nil { fmt.Println("Failed install: ", err.Error()) _ = fids.Close() return } _ = fids.Close() zd.daemonConfig.InstallMode = "systemd" zd.writeStatus() fmt.Println("Installed.") } func (zd *ZDaemon) uninstall_systemd() { initsp := path.Join("/etc/init.d/", zd.daemonName) pe, _ := pathutils.PathExists(initsp) if pe { err := os.Remove(initsp) if err != nil { fmt.Println("Failed uninstall: ", err.Error()) return } } zd.daemonConfig.InstallMode = "free" zd.writeStatus() fmt.Println("Uninstalled.") }