public static void Main(string[] args)
{
var startParams = Helper.ParseArgs(args);
// We need an alias here.
if (!startParams.ContainsKey("alias") || startParams["alias"] == null)
Shutdown();
Alias = startParams["alias"].ToString();
BnetConfig.Initialize("Configs/BnetServer.conf");
Helper.PrintHeader(serverName);
var bnetDbConnectionString = Database.CreateConnectionString(BnetConfig.BnetDatabaseHost, BnetConfig.BnetDatabaseUser, BnetConfig.BnetDatabasePassword,
BnetConfig.BnetDatabaseDataBase, BnetConfig.BnetDatabasePort, BnetConfig.BnetDatabaseMinPoolSize, BnetConfig.BnetDatabaseMaxPoolSize,
BnetConfig.BnetDatabaseType);
if (!Database.Bnet.Initialize(bnetDbConnectionString, BnetConfig.BnetDatabaseType))
{
Log.Message(LogTypes.Error, $"Can't connect to bnet database.");
Shutdown();
}
var dbLogger = new DBLogger();
dbLogger.Initialize(BnetConfig.LogLevel, BnetConfig.LogDatabaseFile != "" ? new LogFile(BnetConfig.LogDirectory, BnetConfig.LogDatabaseFile) : null);
Database.Bnet.SetLogger(dbLogger);
using (ConsoleClient = new ConsolePipeClient(BnetConfig.ConsoleServiceServer, BnetConfig.ConsoleServiceName))
{
IPCPacketManager.DefineMessageHandler();
// Register console to ServerManager and start listening for incoming ipc packets.
ConsoleClient.Send(new RegisterConsole { Alias = Alias }).GetAwaiter().GetResult();
ConsoleClient.Process();
using (var bnetServer = new BnetSocketServer(BnetConfig.BnetBindHost, BnetConfig.BnetBindPort, BnetConfig.BnetMaxConnections, 0x4000))
using (var bnetChallengeServer = new BnetChallengeSocketServer(BnetConfig.BnetChallengeBindHost, BnetConfig.BnetChallengeBindPort, BnetConfig.BnetChallengeMaxConnections, 0x4000))
{
if (bnetServer.Start())
Log.Message(LogTypes.Info, $"Bnet connection listening on '{BnetConfig.BnetBindHost}:{BnetConfig.BnetBindPort}'.");
if (bnetChallengeServer.Start())
Log.Message(LogTypes.Info, $"Bnet challenge connection listening on '{BnetConfig.BnetChallengeBindHost}:{BnetConfig.BnetChallengeBindPort}'.");
if (bnetServer.IsListening && bnetChallengeServer.IsListening)
{
Manager.BnetPacket.Initialize();
Manager.RestPacket.Initialize();
CommandManager.InitializeCommands();
Log.Message(LogTypes.Success, $"{serverName} successfully started.");
CommandManager.StartCommandHandler();
}
}
}
}