12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 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.")
- }
|