This commit is contained in:
Michael Fernandes 2024-07-26 08:15:31 +03:00 committed by GitHub
commit b905c2fbb2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 80 additions and 0 deletions

View File

@ -86,6 +86,7 @@ func init() {
rootCommand.AddCommand(versionCommand)
rootCommand.AddCommand(configureCmd)
rootCommand.AddCommand(serviceCmd)
rootCommand.AddCommand(newDiagnosticsCommand())
}

79
cmd/service_install.go Normal file
View File

@ -0,0 +1,79 @@
package cmd
import (
"fmt"
"os"
"os/exec"
"github.com/apex/log"
"github.com/spf13/cobra"
)
var (
serviceFile = "/etc/systemd/system/wings.service"
serviceContent = `[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service
Requires=docker.service
PartOf=docker.service
[Service]
User=root
WorkingDirectory=/etc/pterodactyl
LimitNOFILE=4096
PIDFile=/var/run/wings/daemon.pid
ExecStart=/usr/local/bin/wings
Restart=on-failure
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s
[Install]
WantedBy=multi-user.target`
serviceCmd = &cobra.Command{
Use: "service-install",
Short: "Use to install wings.service automatically",
Run: installService,
}
)
func installService(cmd *cobra.Command, args []string) {
if _, err := os.Stat(serviceFile); err == nil {
log.WithField("error", "service file exists").Fatal("service aready installed")
return
}
f, cf_err := os.Create(serviceFile)
if cf_err != nil {
log.WithField("error", cf_err).Fatal("error while creating service file")
return
}
content := []byte(serviceContent)
_, wf_err := f.Write(content)
if wf_err != nil {
log.WithField("error", wf_err).Fatal("error while write service file")
return
}
enable_command := exec.Command("systemctl", "enable", "--now", serviceFile)
cmd_enable_err := enable_command.Start()
if cmd_enable_err != nil {
log.WithField("error", cmd_enable_err).Fatal("error while enabling service")
return
}
daemon_reload_command := exec.Command("systemctl", "daemon-reload")
cmd_reload_err := daemon_reload_command.Start()
if cmd_reload_err != nil {
log.WithField("error", cmd_reload_err).Fatal("error while reloading daemon")
return
}
fmt.Println("service created success!")
}