wings/main.go

72 lines
2.2 KiB
Go

package main
import (
"fmt"
"os"
"path/filepath"
"strconv"
"github.com/pterodactyl/wings/api"
"github.com/pterodactyl/wings/config"
"github.com/pterodactyl/wings/constants"
"github.com/pterodactyl/wings/control"
"github.com/pterodactyl/wings/utils"
"github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
var configPath string
var RootCommand = &cobra.Command{
Use: "wings",
Short: "Wings is the next generation server control daemon for Pterodactyl",
Long: "Wings is the next generation server control daemon for Pterodactyl",
Run: run,
}
// Entrypoint of the application. Currently just boots up the cobra command
// and lets that handle everything else.
func main() {
RootCommand.Flags().StringVarP(&configPath, "config", "c", "./config.yml", "Allows to set the path of the configuration file.")
if err := RootCommand.Execute(); err != nil {
fmt.Println(err)
os.Exit(1)
}
}
// Bootstraps the application and beging the process of running the API and
// server instances.
func run(cmd *cobra.Command, args []string) {
utils.InitLogging()
logrus.Info("Booting configuration file...")
if err := config.LoadConfiguration(configPath); err != nil {
logrus.WithError(err).Fatal("Could not locate a suitable config.yml file for this Daemon.")
}
logrus.Info("Configuration successfully loaded, booting application.")
utils.ConfigureLogging()
logrus.Info(` ____`)
logrus.Info(`__ Pterodactyl _____/___/_______ _______ ______`)
logrus.Info(`\_____\ \/\/ / / / __ / ___/`)
logrus.Info(` \___\ / / / / /_/ /___ /`)
logrus.Info(` \___/\___/___/___/___/___ /______/`)
logrus.Info(` /_______/ v` + constants.Version)
logrus.Info()
logrus.Info("Loading configured servers.")
if err := control.LoadServerConfigurations(filepath.Join(viper.GetString(config.DataPath), constants.ServersPath)); err != nil {
logrus.WithError(err).Error("Failed to load configured servers.")
}
if amount := len(control.GetServers()); amount == 1 {
logrus.Info("Found and loaded " + strconv.Itoa(amount) + " server(s).")
}
logrus.Info("Registering API server and booting.")
a := api.NewAPI()
a.Listen()
}