clean up the profanity determent plugin by using the Get/Set Additional properties
cleaned up the base event parser to not need the server object to generate the event Hopefully prevent anticheat from freaking out when database connection is lost
This commit is contained in:
@ -4,6 +4,7 @@ using SharedLibraryCore;
|
||||
using SharedLibraryCore.Interfaces;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using static SharedLibraryCore.Utilities;
|
||||
@ -18,6 +19,7 @@ namespace IW4MAdmin.Application.IO
|
||||
readonly IEventParser Parser;
|
||||
readonly IGameLogServer Api;
|
||||
readonly string logPath;
|
||||
private bool? ignoreBots;
|
||||
|
||||
public GameLogReaderHttp(Uri gameLogServerUri, string logPath, IEventParser parser)
|
||||
{
|
||||
@ -35,6 +37,12 @@ namespace IW4MAdmin.Application.IO
|
||||
#if DEBUG == true
|
||||
server.Logger.WriteDebug($"Begin reading from http log");
|
||||
#endif
|
||||
|
||||
if (!ignoreBots.HasValue)
|
||||
{
|
||||
ignoreBots = server.Manager.GetApplicationSettings().Configuration().IgnoreBots;
|
||||
}
|
||||
|
||||
var events = new List<GameEvent>();
|
||||
string b64Path = logPath;
|
||||
var response = await Api.Log(b64Path);
|
||||
@ -52,16 +60,33 @@ namespace IW4MAdmin.Application.IO
|
||||
{
|
||||
try
|
||||
{
|
||||
var e = Parser.GetEvent(server, eventLine);
|
||||
var gameEvent = Parser.GenerateGameEvent(eventLine);
|
||||
// we don't want to add the even if ignoreBots is on and the event comes froma bot
|
||||
if (!ignoreBots.Value || (ignoreBots.Value && (gameEvent.Origin.NetworkId != -1 || gameEvent.Target.NetworkId != -1)))
|
||||
{
|
||||
gameEvent.Owner = server;
|
||||
// we need to pull the "live" versions of the client (only if the client id isn't IW4MAdmin
|
||||
gameEvent.Origin = gameEvent.Origin.ClientId == 1 ? gameEvent.Origin : server.GetClientsAsList().First(_client => _client.NetworkId == gameEvent.Origin.NetworkId);
|
||||
gameEvent.Target = gameEvent.Target.ClientId == 1 ? gameEvent.Target : server.GetClientsAsList().First(_client => _client.NetworkId == gameEvent.Target.NetworkId);
|
||||
|
||||
events.Add(gameEvent);
|
||||
}
|
||||
#if DEBUG == true
|
||||
server.Logger.WriteDebug($"Parsed event with id {e.Id} from http");
|
||||
server.Logger.WriteDebug($"Parsed event with id {gameEvent.Id} from http");
|
||||
#endif
|
||||
events.Add(e);
|
||||
}
|
||||
|
||||
catch (InvalidOperationException)
|
||||
{
|
||||
if (!ignoreBots.Value)
|
||||
{
|
||||
server.Logger.WriteWarning("Could not find client in client list when parsing event line");
|
||||
}
|
||||
}
|
||||
|
||||
catch (Exception e)
|
||||
{
|
||||
server.Logger.WriteWarning("Could not properly parse event line");
|
||||
server.Logger.WriteWarning("Could not properly parse remote event line");
|
||||
server.Logger.WriteDebug(e.Message);
|
||||
server.Logger.WriteDebug(eventLine);
|
||||
}
|
||||
|
Reference in New Issue
Block a user