Creating 'wings service-install' command
This commit is contained in:
		
							parent
							
								
									83861a6dec
								
							
						
					
					
						commit
						c47324b07b
					
				| 
						 | 
				
			
			@ -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
									
								
							
							
						
						
									
										70
									
								
								cmd/service_install.go
									
									
									
									
									
										Normal 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!")
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user