Implemented the ability to enable and disable commands in configuration as well as increased scope of the config to the entire project.

This commit is contained in:
Eclipse
2022-09-18 14:15:11 -04:00
parent e0176ca774
commit 44a42a3365
6 changed files with 309 additions and 165 deletions

54
main.go
View File

@@ -20,8 +20,6 @@ import (
"go.uber.org/zap"
)
var erupeConfig *config.Config
// Temporary DB auto clean on startup for quick development & testing.
func cleanDB(db *sqlx.DB) {
_ = db.MustExec("DELETE FROM guild_characters")
@@ -39,25 +37,19 @@ func main() {
logger.Info("Starting Erupe")
// Load the configuration.
erupeConfig, err = config.LoadConfig()
if err != nil {
preventClose(fmt.Sprintf("Failed to load config: %s", err.Error()))
}
if erupeConfig.Database.Password == "" {
if config.ErupeConfig.Database.Password == "" {
preventClose("Database password is blank")
}
if net.ParseIP(erupeConfig.Host) == nil {
ips, _ := net.LookupIP(erupeConfig.Host)
if net.ParseIP(config.ErupeConfig.Host) == nil {
ips, _ := net.LookupIP(config.ErupeConfig.Host)
for _, ip := range ips {
if ip != nil {
erupeConfig.Host = ip.String()
config.ErupeConfig.Host = ip.String()
break
}
}
if net.ParseIP(erupeConfig.Host) == nil {
if net.ParseIP(config.ErupeConfig.Host) == nil {
preventClose("Invalid host address")
}
}
@@ -65,10 +57,10 @@ func main() {
// Discord bot
var discordBot *discordbot.DiscordBot = nil
if erupeConfig.Discord.Enabled {
if config.ErupeConfig.Discord.Enabled {
bot, err := discordbot.NewDiscordBot(discordbot.Options{
Logger: logger,
Config: erupeConfig,
Config: config.ErupeConfig,
})
if err != nil {
@@ -91,11 +83,11 @@ func main() {
// Create the postgres DB pool.
connectString := fmt.Sprintf(
"host=%s port=%d user=%s password=%s dbname= %s sslmode=disable",
erupeConfig.Database.Host,
erupeConfig.Database.Port,
erupeConfig.Database.User,
erupeConfig.Database.Password,
erupeConfig.Database.Database,
config.ErupeConfig.Database.Host,
config.ErupeConfig.Database.Port,
config.ErupeConfig.Database.User,
config.ErupeConfig.Database.Password,
config.ErupeConfig.Database.Database,
)
db, err := sqlx.Open("postgres", connectString)
@@ -117,7 +109,7 @@ func main() {
_ = db.MustExec("UPDATE characters SET cafe_time=0")
// Clean the DB if the option is on.
if erupeConfig.DevMode && erupeConfig.DevModeOptions.CleanDB {
if config.ErupeConfig.DevMode && config.ErupeConfig.DevModeOptions.CleanDB {
logger.Info("Cleaning DB")
cleanDB(db)
logger.Info("Done cleaning DB")
@@ -127,13 +119,13 @@ func main() {
// Launcher HTTP server.
var launcherServer *launcherserver.Server
if erupeConfig.DevMode && erupeConfig.DevModeOptions.EnableLauncherServer {
if config.ErupeConfig.DevMode && config.ErupeConfig.DevModeOptions.EnableLauncherServer {
launcherServer = launcherserver.NewServer(
&launcherserver.Config{
Logger: logger.Named("launcher"),
ErupeConfig: erupeConfig,
ErupeConfig: config.ErupeConfig,
DB: db,
UseOriginalLauncherFiles: erupeConfig.Launcher.UseOriginalLauncherFiles,
UseOriginalLauncherFiles: config.ErupeConfig.Launcher.UseOriginalLauncherFiles,
})
err = launcherServer.Start()
if err != nil {
@@ -146,7 +138,7 @@ func main() {
entranceServer := entranceserver.NewServer(
&entranceserver.Config{
Logger: logger.Named("entrance"),
ErupeConfig: erupeConfig,
ErupeConfig: config.ErupeConfig,
DB: db,
})
err = entranceServer.Start()
@@ -159,7 +151,7 @@ func main() {
signServer := signserver.NewServer(
&signserver.Config{
Logger: logger.Named("sign"),
ErupeConfig: erupeConfig,
ErupeConfig: config.ErupeConfig,
DB: db,
})
err = signServer.Start()
@@ -173,18 +165,18 @@ func main() {
si := 0
ci := 0
count := 1
for _, ee := range erupeConfig.Entrance.Entries {
for _, ee := range config.ErupeConfig.Entrance.Entries {
for i, ce := range ee.Channels {
sid := (4096 + si*256) + (16 + ci)
c := *channelserver.NewServer(&channelserver.Config{
ID: uint16(sid),
Logger: logger.Named("channel-" + fmt.Sprint(count)),
ErupeConfig: erupeConfig,
ErupeConfig: config.ErupeConfig,
DB: db,
DiscordBot: discordBot,
})
if ee.IP == "" {
c.IP = erupeConfig.Host
c.IP = config.ErupeConfig.Host
} else {
c.IP = ee.IP
}
@@ -223,7 +215,7 @@ func main() {
}
signServer.Shutdown()
entranceServer.Shutdown()
if erupeConfig.DevModeOptions.EnableLauncherServer {
if config.ErupeConfig.DevModeOptions.EnableLauncherServer {
launcherServer.Shutdown()
}
@@ -237,7 +229,7 @@ func wait() {
}
func preventClose(text string) {
if erupeConfig.DisableSoftCrash {
if config.ErupeConfig.DisableSoftCrash {
os.Exit(0)
}
fmt.Println("\nFailed to start Erupe:\n" + text)