Creating 'wings service-install' command

This commit is contained in:
mundotv789123 2022-09-05 09:19:29 -03:00
parent 83861a6dec
commit c47324b07b
2 changed files with 73 additions and 2 deletions

View File

@ -5,8 +5,6 @@ import (
"crypto/tls"
"errors"
"fmt"
"github.com/pterodactyl/wings/internal/cron"
"github.com/pterodactyl/wings/internal/database"
log2 "log"
"net/http"
_ "net/http/pprof"
@ -30,6 +28,8 @@ import (
"github.com/pterodactyl/wings/config"
"github.com/pterodactyl/wings/environment"
"github.com/pterodactyl/wings/internal/cron"
"github.com/pterodactyl/wings/internal/database"
"github.com/pterodactyl/wings/loggers/cli"
"github.com/pterodactyl/wings/remote"
"github.com/pterodactyl/wings/router"
@ -87,6 +87,7 @@ func init() {
rootCommand.AddCommand(versionCommand)
rootCommand.AddCommand(configureCmd)
rootCommand.AddCommand(serviceCmd)
rootCommand.AddCommand(newDiagnosticsCommand())
}

70
cmd/service_install.go Normal file
View File

@ -0,0 +1,70 @@
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
}
command := exec.Command("systemctl", "enable", "--now", serviceFile)
cmd_err := command.Start()
if cmd_err != nil {
log.WithField("error", wf_err).Fatal("error while enabling service")
return
}
fmt.Println("service created success!")
}