fix bug with wrong locale when master is down
fix issue with reapplying penalties show subset of penalties that are linked on client profile
This commit is contained in:
parent
3d468e32b9
commit
042327840f
@ -58,7 +58,7 @@ namespace IW4MAdmin.Application
|
|||||||
{
|
{
|
||||||
ServerManager = ApplicationManager.GetInstance();
|
ServerManager = ApplicationManager.GetInstance();
|
||||||
var configuration = ServerManager.GetApplicationSettings().Configuration();
|
var configuration = ServerManager.GetApplicationSettings().Configuration();
|
||||||
Localization.Configure.Initialize(configuration?.EnableCustomLocale ?? false ? (configuration.CustomLocale ?? "windows-1252") : "windows-1252");
|
Localization.Configure.Initialize(configuration?.EnableCustomLocale ?? false ? (configuration.CustomLocale ?? "en-US") : "en-US");
|
||||||
|
|
||||||
// do any needed housekeeping file/folder migrations
|
// do any needed housekeeping file/folder migrations
|
||||||
ConfigurationMigration.MoveConfigFolder10518(null);
|
ConfigurationMigration.MoveConfigFolder10518(null);
|
||||||
|
@ -162,6 +162,14 @@ namespace IW4MAdmin.Application.RconParsers
|
|||||||
State = EFClient.ClientState.Connecting
|
State = EFClient.ClientState.Connecting
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
if (client.NetworkId < 1000)
|
||||||
|
{
|
||||||
|
client.IPAddress = 2147483646;
|
||||||
|
client.Ping = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
StatusPlayers.Add(client);
|
StatusPlayers.Add(client);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -552,7 +552,7 @@ namespace SharedLibraryCore.Database.Models
|
|||||||
// we want to get any penalties that are tied to their IP or AliasLink (but not necessarily their GUID)
|
// we want to get any penalties that are tied to their IP or AliasLink (but not necessarily their GUID)
|
||||||
var activePenalties = await CurrentServer.Manager.GetPenaltyService().GetActivePenaltiesAsync(AliasLinkId, ipAddress);
|
var activePenalties = await CurrentServer.Manager.GetPenaltyService().GetActivePenaltiesAsync(AliasLinkId, ipAddress);
|
||||||
|
|
||||||
var banPenalty = ReceivedPenalties.FirstOrDefault(_penalty => _penalty.Type == EFPenalty.PenaltyType.Ban);
|
var banPenalty = activePenalties.FirstOrDefault(_penalty => _penalty.Type == EFPenalty.PenaltyType.Ban);
|
||||||
var tempbanPenalty = activePenalties.FirstOrDefault(_penalty => _penalty.Type == EFPenalty.PenaltyType.TempBan);
|
var tempbanPenalty = activePenalties.FirstOrDefault(_penalty => _penalty.Type == EFPenalty.PenaltyType.TempBan);
|
||||||
var flagPenalty = activePenalties.FirstOrDefault(_penalty => _penalty.Type == EFPenalty.PenaltyType.Flag);
|
var flagPenalty = activePenalties.FirstOrDefault(_penalty => _penalty.Type == EFPenalty.PenaltyType.Flag);
|
||||||
|
|
||||||
@ -568,8 +568,9 @@ namespace SharedLibraryCore.Database.Models
|
|||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CurrentServer.Logger.WriteWarning($"Client {this} is GUID banned, but no previous penalty exists for their ban");
|
CurrentServer.Logger.WriteDebug($"Client {this} is banned, but using a new GUID, we we're updating their level and kicking them");
|
||||||
Ban(loc["SERVER_BAN_UNKNOWN"], autoKickClient, false);
|
await SetLevel(Permission.Banned, autoKickClient).WaitAsync(Utilities.DefaultCommandTimeout, CurrentServer.Manager.CancellationToken);
|
||||||
|
Kick(loc["SERVER_BAN_PREV"].FormatExt(banPenalty?.Offense), autoKickClient);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -585,7 +586,8 @@ namespace SharedLibraryCore.Database.Models
|
|||||||
// if we found a flag, we need to make sure all the accounts are flagged
|
// if we found a flag, we need to make sure all the accounts are flagged
|
||||||
if (flagPenalty != null && Level != Permission.Flagged)
|
if (flagPenalty != null && Level != Permission.Flagged)
|
||||||
{
|
{
|
||||||
SetLevel(Permission.Flagged, autoKickClient);
|
CurrentServer.Logger.WriteDebug($"Flagged client {this} joining with new GUID, so we are changing their level to flagged");
|
||||||
|
await SetLevel(Permission.Flagged, autoKickClient).WaitAsync(Utilities.DefaultCommandTimeout, CurrentServer.Manager.CancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove their auto flag
|
// remove their auto flag
|
||||||
|
@ -104,6 +104,8 @@ namespace SharedLibraryCore.Services
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<IList<PenaltyInfo>> GetClientPenaltyForMetaAsync(int clientId, int count, int offset, DateTime? startAt)
|
public async Task<IList<PenaltyInfo>> GetClientPenaltyForMetaAsync(int clientId, int count, int offset, DateTime? startAt)
|
||||||
{
|
{
|
||||||
|
var linkedPenaltyType = Utilities.LinkedPenaltyTypes();
|
||||||
|
|
||||||
using (var ctx = new DatabaseContext(true))
|
using (var ctx = new DatabaseContext(true))
|
||||||
{
|
{
|
||||||
var linkId = await ctx.Clients.AsNoTracking()
|
var linkId = await ctx.Clients.AsNoTracking()
|
||||||
@ -112,7 +114,7 @@ namespace SharedLibraryCore.Services
|
|||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
|
|
||||||
var iqPenalties = ctx.Penalties.AsNoTracking()
|
var iqPenalties = ctx.Penalties.AsNoTracking()
|
||||||
.Where(_penalty => _penalty.OffenderId == clientId || _penalty.PunisherId == clientId || _penalty.LinkId == linkId)
|
.Where(_penalty => _penalty.OffenderId == clientId || _penalty.PunisherId == clientId || (linkedPenaltyType.Contains(_penalty.Type) && _penalty.LinkId == linkId))
|
||||||
.Where(_penalty => _penalty.When <= startAt)
|
.Where(_penalty => _penalty.When <= startAt)
|
||||||
.OrderByDescending(_penalty => _penalty.When)
|
.OrderByDescending(_penalty => _penalty.When)
|
||||||
.Skip(offset)
|
.Skip(offset)
|
||||||
@ -136,8 +138,7 @@ namespace SharedLibraryCore.Services
|
|||||||
#if DEBUG == true
|
#if DEBUG == true
|
||||||
var querySql = iqPenalties.ToSql();
|
var querySql = iqPenalties.ToSql();
|
||||||
#endif
|
#endif
|
||||||
|
return await iqPenalties.Distinct().ToListAsync();
|
||||||
return await iqPenalties.ToListAsync();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +31,6 @@ namespace SharedLibraryCore
|
|||||||
public static Encoding EncodingType;
|
public static Encoding EncodingType;
|
||||||
public static Localization.Layout CurrentLocalization = new Localization.Layout(new Dictionary<string, string>());
|
public static Localization.Layout CurrentLocalization = new Localization.Layout(new Dictionary<string, string>());
|
||||||
public static TimeSpan DefaultCommandTimeout = new TimeSpan(0, 0, 10);
|
public static TimeSpan DefaultCommandTimeout = new TimeSpan(0, 0, 10);
|
||||||
public static CultureInfo BestCulture = CultureInfo.CreateSpecificCulture("en-US");
|
|
||||||
|
|
||||||
public static EFClient IW4MAdminClient(Server server = null)
|
public static EFClient IW4MAdminClient(Server server = null)
|
||||||
{
|
{
|
||||||
@ -295,6 +294,9 @@ namespace SharedLibraryCore
|
|||||||
else if (!string.IsNullOrEmpty(bot))
|
else if (!string.IsNullOrEmpty(bot))
|
||||||
{
|
{
|
||||||
id = -1;
|
id = -1;
|
||||||
|
#if DEBUG
|
||||||
|
id = str.Sum(_c => _c);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id == 0)
|
if (id == 0)
|
||||||
@ -492,13 +494,20 @@ namespace SharedLibraryCore
|
|||||||
return "unknown";
|
return "unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool ShouldPenaltyApplyToAllProfiles(this PenaltyType penaltyType)
|
/// <summary>
|
||||||
|
/// returns a list of penalty types that should be shown across all profiles
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static PenaltyType[] LinkedPenaltyTypes()
|
||||||
{
|
{
|
||||||
return penaltyType == PenaltyType.Ban ||
|
return new PenaltyType[]
|
||||||
penaltyType == PenaltyType.Unban ||
|
{
|
||||||
penaltyType == PenaltyType.Flag ||
|
PenaltyType.Ban,
|
||||||
penaltyType == PenaltyType.Unflag ||
|
PenaltyType.Unban,
|
||||||
penaltyType == PenaltyType.TempBan;
|
PenaltyType.TempBan,
|
||||||
|
PenaltyType.Flag,
|
||||||
|
PenaltyType.Unflag,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
Loading…
Reference in New Issue
Block a user