1
0
mirror of https://github.com/RaidMax/IW4M-Admin.git synced 2025-06-12 08:08:06 -05:00

cleaned up some namespace discrepancies

fixed the coloring for custom groups translation
add reserved slots
add webhook project to show notifications in discord
This commit is contained in:
RaidMax
2018-08-07 13:43:09 -05:00
parent 9d79a8e090
commit a8f29407b8
27 changed files with 301 additions and 63 deletions

View File

@ -5,7 +5,7 @@
<TargetFramework>netcoreapp2.1</TargetFramework>
<MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
<PackageId>RaidMax.IW4MAdmin.Application</PackageId>
<Version>2.1.2</Version>
<Version>2.1.4</Version>
<Authors>RaidMax</Authors>
<Company>Forever None</Company>
<Product>IW4MAdmin</Product>

View File

@ -65,6 +65,12 @@ namespace IW4MAdmin.Application.Core
public IList<Player> GetAuthenticatedClients()
{
if (AuthenticatedClients.Values.Count > 18)
{
Program.ServerManager.GetLogger().WriteWarning($"auth client count is {AuthenticatedClients.Values.Count}, this is bad");
return AuthenticatedClients.Values.Take(18).ToList();
}
return AuthenticatedClients.Values.ToList();
}

View File

@ -10,7 +10,7 @@ namespace IW4MAdmin.Application.EventParsers
{
class IW4EventParser : IEventParser
{
private const string SayRegex = @"(say|sayteam);(.{16,32});([0-9]+)(.*);(.*)";
private const string SayRegex = @"(say|sayteam);(.{1,32});([0-9]+)(.*);(.*)";
public virtual GameEvent GetEvent(Server server, string logLine)
{
@ -121,7 +121,7 @@ namespace IW4MAdmin.Application.EventParsers
// join
if (eventType == "J")
{
var regexMatch = Regex.Match(logLine, @"^(J;)(.{4,32});([0-9]+);(.*)$");
var regexMatch = Regex.Match(logLine, @"^(J;)(.{1,32});([0-9]+);(.*)$");
if (regexMatch.Success)
{
return new GameEvent()
@ -141,7 +141,7 @@ namespace IW4MAdmin.Application.EventParsers
if (eventType == "Q")
{
var regexMatch = Regex.Match(logLine, @"^(Q;)(.{4,32});([0-9]+);(.*)$");
var regexMatch = Regex.Match(logLine, @"^(Q;)(.{1,32});([0-9]+);(.*)$");
if (regexMatch.Success)
{
return new GameEvent()

View File

@ -39,7 +39,7 @@ namespace IW4MAdmin.Application
catch (Exception) { }
string LogLine = $"[{DateTime.Now.ToString("HH:mm:ss")}] - {stringType}: {msg}";
string LogLine = $"[{DateTime.Now.ToString("MM.dd.yyy HH:mm:ss.fff")}] - {stringType}: {msg}";
lock (ThreadLock)
{
#if DEBUG

View File

@ -5,7 +5,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Application.Misc
namespace IW4MAdmin.Application.Misc
{
public class VPNCheck
{

View File

@ -1,14 +1,13 @@
using Application.RconParsers;
using SharedLibraryCore.RCon;
using SharedLibraryCore.RCon;
using System;
using System.Collections.Generic;
using System.Text;
namespace Application.RconParsers
namespace IW4MAdmin.Application.RconParsers
{
class IW3RConParser : IW4RConParser
{
private static CommandPrefix Prefixes = new CommandPrefix()
private static readonly CommandPrefix Prefixes = new CommandPrefix()
{
Tell = "tell {0} {1}",
Say = "say {0}",

View File

@ -10,7 +10,7 @@ using SharedLibraryCore;
using SharedLibraryCore.RCon;
using SharedLibraryCore.Exceptions;
namespace Application.RconParsers
namespace IW4MAdmin.Application.RconParsers
{
class IW4RConParser : IRConParser
{
@ -111,18 +111,12 @@ namespace Application.RconParsers
Name = name,
NetworkId = networkId,
ClientNumber = clientNumber,
IPAddress = ip,
IPAddress = ip == 0 ? int.MinValue : ip,
Ping = ping,
Score = score,
IsBot = ip == 0
};
if (P.IsBot)
{
// set it to 127.0.0.2
P.IPAddress = 33554559;
}
StatusPlayers.Add(P);
}
}

View File

@ -2,17 +2,15 @@
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Text;
using SharedLibraryCore;
using SharedLibraryCore.Interfaces;
using SharedLibraryCore.Objects;
using SharedLibraryCore.RCon;
using SharedLibraryCore.Exceptions;
using System.Text;
using System.Linq;
using System.Net.Http;
namespace Application.RconParsers
namespace IW4MAdmin.WApplication.RconParsers
{
public class IW5MRConParser : IRConParser
{

View File

@ -12,7 +12,7 @@ using System.Text;
using System.Linq;
using System.Net.Http;
namespace Application.RconParsers
namespace IW4MAdmin.Application.RconParsers
{
public class T6MRConParser : IRConParser
{

View File

@ -14,13 +14,14 @@ using SharedLibraryCore.Database.Models;
using SharedLibraryCore.Dtos;
using SharedLibraryCore.Configuration;
using SharedLibraryCore.Exceptions;
using SharedLibraryCore.Localization;
using Application.Misc;
using Application.RconParsers;
using IW4MAdmin.Application.Misc;
using IW4MAdmin.Application.RconParsers;
using IW4MAdmin.Application.EventParsers;
using IW4MAdmin.Application.IO;
using SharedLibraryCore.Localization;
using IW4MAdmin.Application.Core;
using IW4MAdmin.WApplication.RconParsers;
namespace IW4MAdmin
{
@ -56,7 +57,6 @@ namespace IW4MAdmin
public async Task OnPlayerJoined(Player logClient)
{
if (Players[logClient.ClientNumber] == null ||
Players[logClient.ClientNumber].NetworkId != logClient.NetworkId)
{
@ -184,6 +184,16 @@ namespace IW4MAdmin
player = client.AsPlayer();
}
// reserved slots stuff
if ((MaxClients - ClientNum) < ServerConfig.ReservedSlotNumber &&
! player.IsPrivileged())
{
Logger.WriteDebug($"Kicking {polledPlayer} their spot is reserved");
string formattedKick = String.Format(RconParser.GetCommandPrefixes().Kick, polledPlayer.ClientNumber, loc["SERVER_KICK_SLOT_IS_RESERVED"]);
await this.ExecuteCommandAsync(formattedKick);
return false;
}
Logger.WriteInfo($"Client {player} connected...");
// Do the player specific stuff
@ -590,7 +600,6 @@ namespace IW4MAdmin
AuthQueue.AuthenticateClients(CurrentPlayers);
// all polled players should be authenticated
var addPlayerTasks = AuthQueue.GetAuthenticatedClients()
.Select(client => AddPlayer(client));
@ -796,7 +805,7 @@ namespace IW4MAdmin
CustomCallback = await ScriptLoaded();
string mainPath = EventParser.GetGameDir();
#if DEBUG
basepath.Value = @"D:\";
basepath.Value = @"\\192.168.88.253\Call of Duty Black Ops II";
#endif
string logPath;
if (GameName == Game.IW5)