Random spontaneous cleanup PR (#25131)
* Use new Subs.CVar helper Removes manual config OnValueChanged calls, removes need to remember to manually unsubscribe. This both reduces boilerplate and fixes many issues where subscriptions weren't removed on entity system shutdown. * Fix a bunch of warnings * More warning fixes * Use new DateTime serializer to get rid of ISerializationHooks in changelog code. * Get rid of some more ISerializationHooks for enums * And a little more * Apply suggestions from code review Co-authored-by: 0x6273 <0x40@keemail.me> --------- Co-authored-by: 0x6273 <0x40@keemail.me>
This commit is contained in:
committed by
GitHub
parent
d0c174388c
commit
68ce53ae17
@@ -18,6 +18,7 @@ public sealed class BanCommand : LocalizedCommands
|
||||
[Dependency] private readonly IBanManager _bans = default!;
|
||||
[Dependency] private readonly IConfigurationManager _cfg = default!;
|
||||
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
||||
[Dependency] private readonly ILogManager _logManager = default!;
|
||||
|
||||
public override string Command => "ban";
|
||||
|
||||
@@ -28,7 +29,8 @@ public sealed class BanCommand : LocalizedCommands
|
||||
uint minutes;
|
||||
if (!Enum.TryParse(_cfg.GetCVar(CCVars.ServerBanDefaultSeverity), out NoteSeverity severity))
|
||||
{
|
||||
Logger.WarningS("admin.server_ban", "Server ban severity could not be parsed from config! Defaulting to high.");
|
||||
_logManager.GetSawmill("admin.server_ban")
|
||||
.Warning("Server ban severity could not be parsed from config! Defaulting to high.");
|
||||
severity = NoteSeverity.High;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ using Content.Server.Chat.Managers;
|
||||
using Content.Server.EUI;
|
||||
using Content.Shared.Database;
|
||||
using Content.Shared.Verbs;
|
||||
using Robust.Server.GameObjects;
|
||||
using Robust.Server.Player;
|
||||
using Robust.Shared.Console;
|
||||
using Robust.Shared.Enums;
|
||||
@@ -12,18 +11,14 @@ using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Server.Administration.Notes;
|
||||
|
||||
public sealed class AdminNotesSystem : EntitySystem, IPostInjectInit
|
||||
public sealed class AdminNotesSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IConsoleHost _console = default!;
|
||||
[Dependency] private readonly IAdminNotesManager _notes = default!;
|
||||
[Dependency] private readonly ILogManager _logManager = default!;
|
||||
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
||||
[Dependency] private readonly IChatManager _chat = default!;
|
||||
[Dependency] private readonly EuiManager _euis = default!;
|
||||
|
||||
public const string SawmillId = "admin.notes_system";
|
||||
private ISawmill _sawmill = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
SubscribeLocalEvent<GetVerbsEvent<Verb>>(AddVerbs);
|
||||
@@ -65,7 +60,7 @@ public sealed class AdminNotesSystem : EntitySystem, IPostInjectInit
|
||||
|
||||
if (!_playerManager.TryGetPlayerData(e.Session.UserId, out var playerData))
|
||||
{
|
||||
_sawmill.Error($"Could not get player data for ID {e.Session.UserId}");
|
||||
Log.Error($"Could not get player data for ID {e.Session.UserId}");
|
||||
}
|
||||
|
||||
var username = playerData?.UserName ?? e.Session.UserId.ToString();
|
||||
@@ -83,15 +78,10 @@ public sealed class AdminNotesSystem : EntitySystem, IPostInjectInit
|
||||
var ui = new AdminMessageEui();
|
||||
_euis.OpenEui(ui, e.Session);
|
||||
ui.SetMessage(message);
|
||||
|
||||
|
||||
// Only send the message if they haven't seen it yet
|
||||
_chat.DispatchServerMessage(e.Session, messageString);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void PostInject()
|
||||
{
|
||||
_sawmill = _logManager.GetSawmill(SawmillId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,13 +44,15 @@ namespace Content.Server.Administration
|
||||
Task<LocatedPlayerData?> LookupIdAsync(NetUserId userId, CancellationToken cancel = default);
|
||||
}
|
||||
|
||||
internal sealed class PlayerLocator : IPlayerLocator, IDisposable
|
||||
internal sealed class PlayerLocator : IPlayerLocator, IDisposable, IPostInjectInit
|
||||
{
|
||||
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
||||
[Dependency] private readonly IConfigurationManager _configurationManager = default!;
|
||||
[Dependency] private readonly IServerDbManager _db = default!;
|
||||
[Dependency] private readonly ILogManager _logManager = default!;
|
||||
|
||||
private readonly HttpClient _httpClient = new();
|
||||
private ISawmill _sawmill = default!;
|
||||
|
||||
public PlayerLocator()
|
||||
{
|
||||
@@ -87,7 +89,7 @@ namespace Content.Server.Administration
|
||||
|
||||
if (!resp.IsSuccessStatusCode)
|
||||
{
|
||||
Logger.ErrorS("PlayerLocate", "Auth server returned bad response {StatusCode}!", resp.StatusCode);
|
||||
_sawmill.Error("Auth server returned bad response {StatusCode}!", resp.StatusCode);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -95,7 +97,7 @@ namespace Content.Server.Administration
|
||||
|
||||
if (responseData == null)
|
||||
{
|
||||
Logger.ErrorS("PlayerLocate", "Auth server returned null response!");
|
||||
_sawmill.Error("Auth server returned null response!");
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -127,7 +129,7 @@ namespace Content.Server.Administration
|
||||
|
||||
if (!resp.IsSuccessStatusCode)
|
||||
{
|
||||
Logger.ErrorS("PlayerLocate", "Auth server returned bad response {StatusCode}!", resp.StatusCode);
|
||||
_sawmill.Error("Auth server returned bad response {StatusCode}!", resp.StatusCode);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -135,7 +137,7 @@ namespace Content.Server.Administration
|
||||
|
||||
if (responseData == null)
|
||||
{
|
||||
Logger.ErrorS("PlayerLocate", "Auth server returned null response!");
|
||||
_sawmill.Error("Auth server returned null response!");
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -163,5 +165,10 @@ namespace Content.Server.Administration
|
||||
{
|
||||
_httpClient.Dispose();
|
||||
}
|
||||
|
||||
void IPostInjectInit.PostInject()
|
||||
{
|
||||
_sawmill = _logManager.GetSawmill("PlayerLocate");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,13 +70,13 @@ namespace Content.Server.Administration.Systems
|
||||
_playerManager.PlayerStatusChanged += OnPlayerStatusChanged;
|
||||
_adminManager.OnPermsChanged += OnAdminPermsChanged;
|
||||
|
||||
_config.OnValueChanged(CCVars.PanicBunkerEnabled, OnPanicBunkerChanged, true);
|
||||
_config.OnValueChanged(CCVars.PanicBunkerDisableWithAdmins, OnPanicBunkerDisableWithAdminsChanged, true);
|
||||
_config.OnValueChanged(CCVars.PanicBunkerEnableWithoutAdmins, OnPanicBunkerEnableWithoutAdminsChanged, true);
|
||||
_config.OnValueChanged(CCVars.PanicBunkerCountDeadminnedAdmins, OnPanicBunkerCountDeadminnedAdminsChanged, true);
|
||||
_config.OnValueChanged(CCVars.PanicBunkerShowReason, OnShowReasonChanged, true);
|
||||
_config.OnValueChanged(CCVars.PanicBunkerMinAccountAge, OnPanicBunkerMinAccountAgeChanged, true);
|
||||
_config.OnValueChanged(CCVars.PanicBunkerMinOverallHours, OnPanicBunkerMinOverallHoursChanged, true);
|
||||
Subs.CVar(_config, CCVars.PanicBunkerEnabled, OnPanicBunkerChanged, true);
|
||||
Subs.CVar(_config, CCVars.PanicBunkerDisableWithAdmins, OnPanicBunkerDisableWithAdminsChanged, true);
|
||||
Subs.CVar(_config, CCVars.PanicBunkerEnableWithoutAdmins, OnPanicBunkerEnableWithoutAdminsChanged, true);
|
||||
Subs.CVar(_config, CCVars.PanicBunkerCountDeadminnedAdmins, OnPanicBunkerCountDeadminnedAdminsChanged, true);
|
||||
Subs.CVar(_config, CCVars.PanicBunkerShowReason, OnShowReasonChanged, true);
|
||||
Subs.CVar(_config, CCVars.PanicBunkerMinAccountAge, OnPanicBunkerMinAccountAgeChanged, true);
|
||||
Subs.CVar(_config, CCVars.PanicBunkerMinOverallHours, OnPanicBunkerMinOverallHoursChanged, true);
|
||||
|
||||
SubscribeLocalEvent<IdentityChangedEvent>(OnIdentityChanged);
|
||||
SubscribeLocalEvent<PlayerAttachedEvent>(OnPlayerAttached);
|
||||
@@ -188,14 +188,6 @@ namespace Content.Server.Administration.Systems
|
||||
base.Shutdown();
|
||||
_playerManager.PlayerStatusChanged -= OnPlayerStatusChanged;
|
||||
_adminManager.OnPermsChanged -= OnAdminPermsChanged;
|
||||
|
||||
_config.UnsubValueChanged(CCVars.PanicBunkerEnabled, OnPanicBunkerChanged);
|
||||
_config.UnsubValueChanged(CCVars.PanicBunkerDisableWithAdmins, OnPanicBunkerDisableWithAdminsChanged);
|
||||
_config.UnsubValueChanged(CCVars.PanicBunkerEnableWithoutAdmins, OnPanicBunkerEnableWithoutAdminsChanged);
|
||||
_config.UnsubValueChanged(CCVars.PanicBunkerCountDeadminnedAdmins, OnPanicBunkerCountDeadminnedAdminsChanged);
|
||||
_config.UnsubValueChanged(CCVars.PanicBunkerShowReason, OnShowReasonChanged);
|
||||
_config.UnsubValueChanged(CCVars.PanicBunkerMinAccountAge, OnPanicBunkerMinAccountAgeChanged);
|
||||
_config.UnsubValueChanged(CCVars.PanicBunkerMinOverallHours, OnPanicBunkerMinOverallHoursChanged);
|
||||
}
|
||||
|
||||
private void OnPlayerStatusChanged(object? sender, SessionStatusEventArgs e)
|
||||
|
||||
@@ -66,11 +66,11 @@ namespace Content.Server.Administration.Systems
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
_config.OnValueChanged(CCVars.DiscordAHelpWebhook, OnWebhookChanged, true);
|
||||
_config.OnValueChanged(CCVars.DiscordAHelpFooterIcon, OnFooterIconChanged, true);
|
||||
_config.OnValueChanged(CCVars.DiscordAHelpAvatar, OnAvatarChanged, true);
|
||||
_config.OnValueChanged(CVars.GameHostName, OnServerNameChanged, true);
|
||||
_config.OnValueChanged(CCVars.AdminAhelpOverrideClientName, OnOverrideChanged, true);
|
||||
Subs.CVar(_config, CCVars.DiscordAHelpWebhook, OnWebhookChanged, true);
|
||||
Subs.CVar(_config, CCVars.DiscordAHelpFooterIcon, OnFooterIconChanged, true);
|
||||
Subs.CVar(_config, CCVars.DiscordAHelpAvatar, OnAvatarChanged, true);
|
||||
Subs.CVar(_config, CVars.GameHostName, OnServerNameChanged, true);
|
||||
Subs.CVar(_config, CCVars.AdminAhelpOverrideClientName, OnOverrideChanged, true);
|
||||
_sawmill = IoCManager.Resolve<ILogManager>().GetSawmill("AHELP");
|
||||
_maxAdditionalChars = GenerateAHelpMessage("", "", true, _gameTicker.RoundDuration().ToString("hh\\:mm\\:ss"), _gameTicker.RunLevel).Length;
|
||||
_playerManager.PlayerStatusChanged += OnPlayerStatusChanged;
|
||||
@@ -147,15 +147,6 @@ namespace Content.Server.Administration.Systems
|
||||
_serverName = obj;
|
||||
}
|
||||
|
||||
public override void Shutdown()
|
||||
{
|
||||
base.Shutdown();
|
||||
_config.UnsubValueChanged(CCVars.DiscordAHelpWebhook, OnWebhookChanged);
|
||||
_config.UnsubValueChanged(CCVars.DiscordAHelpFooterIcon, OnFooterIconChanged);
|
||||
_config.UnsubValueChanged(CVars.GameHostName, OnServerNameChanged);
|
||||
_config.UnsubValueChanged(CCVars.AdminAhelpOverrideClientName, OnOverrideChanged);
|
||||
}
|
||||
|
||||
private async void OnWebhookChanged(string url)
|
||||
{
|
||||
_webhookUrl = url;
|
||||
|
||||
@@ -18,7 +18,9 @@ namespace Content.Server.Administration.UI
|
||||
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
||||
[Dependency] private readonly IServerDbManager _db = default!;
|
||||
[Dependency] private readonly IAdminManager _adminManager = default!;
|
||||
[Dependency] private readonly ILogManager _logManager = default!;
|
||||
|
||||
private readonly ISawmill _sawmill;
|
||||
private bool _isLoading;
|
||||
|
||||
private readonly List<(Admin a, string? lastUserName)> _admins = new List<(Admin, string? lastUserName)>();
|
||||
@@ -27,6 +29,7 @@ namespace Content.Server.Administration.UI
|
||||
public PermissionsEui()
|
||||
{
|
||||
IoCManager.InjectDependencies(this);
|
||||
_sawmill = _logManager.GetSawmill("admin.perms");
|
||||
}
|
||||
|
||||
public override void Opened()
|
||||
@@ -143,7 +146,7 @@ namespace Content.Server.Administration.UI
|
||||
|
||||
if (!CanTouchRank(rank))
|
||||
{
|
||||
Logger.WarningS("admin.perms", $"{Player} tried to remove higher-ranked admin rank {rank.Name}");
|
||||
_sawmill.Warning($"{Player} tried to remove higher-ranked admin rank {rank.Name}");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -162,13 +165,13 @@ namespace Content.Server.Administration.UI
|
||||
|
||||
if (!CanTouchRank(rank))
|
||||
{
|
||||
Logger.WarningS("admin.perms", $"{Player} tried to update higher-ranked admin rank {rank.Name}");
|
||||
_sawmill.Warning($"{Player} tried to update higher-ranked admin rank {rank.Name}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UserAdminFlagCheck(ur.Flags))
|
||||
{
|
||||
Logger.WarningS("admin.perms", $"{Player} tried to give a rank permissions above their authorization.");
|
||||
_sawmill.Warning($"{Player} tried to give a rank permissions above their authorization.");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -178,7 +181,7 @@ namespace Content.Server.Administration.UI
|
||||
await _db.UpdateAdminRankAsync(rank);
|
||||
|
||||
var flagText = string.Join(' ', AdminFlagsHelper.FlagsToNames(ur.Flags).Select(f => $"+{f}"));
|
||||
Logger.InfoS("admin.perms", $"{Player} updated admin rank {rank.Name}/{flagText}.");
|
||||
_sawmill.Info($"{Player} updated admin rank {rank.Name}/{flagText}.");
|
||||
|
||||
_adminManager.ReloadAdminsWithRank(ur.Id);
|
||||
}
|
||||
@@ -187,7 +190,7 @@ namespace Content.Server.Administration.UI
|
||||
{
|
||||
if (!UserAdminFlagCheck(ar.Flags))
|
||||
{
|
||||
Logger.WarningS("admin.perms", $"{Player} tried to give a rank permissions above their authorization.");
|
||||
_sawmill.Warning($"{Player} tried to give a rank permissions above their authorization.");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -200,7 +203,7 @@ namespace Content.Server.Administration.UI
|
||||
await _db.AddAdminRankAsync(rank);
|
||||
|
||||
var flagText = string.Join(' ', AdminFlagsHelper.FlagsToNames(ar.Flags).Select(f => $"+{f}"));
|
||||
Logger.InfoS("admin.perms", $"{Player} added admin rank {rank.Name}/{flagText}.");
|
||||
_sawmill.Info($"{Player} added admin rank {rank.Name}/{flagText}.");
|
||||
}
|
||||
|
||||
private async Task HandleRemoveAdmin(RemoveAdmin ra)
|
||||
@@ -214,14 +217,14 @@ namespace Content.Server.Administration.UI
|
||||
|
||||
if (!CanTouchAdmin(admin))
|
||||
{
|
||||
Logger.WarningS("admin.perms", $"{Player} tried to remove higher-ranked admin {ra.UserId.ToString()}");
|
||||
_sawmill.Warning($"{Player} tried to remove higher-ranked admin {ra.UserId.ToString()}");
|
||||
return;
|
||||
}
|
||||
|
||||
await _db.RemoveAdminAsync(ra.UserId);
|
||||
|
||||
var record = await _db.GetPlayerRecordByUserId(ra.UserId);
|
||||
Logger.InfoS("admin.perms", $"{Player} removed admin {record?.LastSeenUserName ?? ra.UserId.ToString()}");
|
||||
_sawmill.Info($"{Player} removed admin {record?.LastSeenUserName ?? ra.UserId.ToString()}");
|
||||
|
||||
if (_playerManager.TryGetSessionById(ra.UserId, out var player))
|
||||
{
|
||||
@@ -245,7 +248,7 @@ namespace Content.Server.Administration.UI
|
||||
|
||||
if (!CanTouchAdmin(admin))
|
||||
{
|
||||
Logger.WarningS("admin.perms", $"{Player} tried to modify higher-ranked admin {ua.UserId.ToString()}");
|
||||
_sawmill.Warning($"{Player} tried to modify higher-ranked admin {ua.UserId.ToString()}");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -266,7 +269,7 @@ namespace Content.Server.Administration.UI
|
||||
var title = ua.Title ?? "<no title>";
|
||||
var flags = AdminFlagsHelper.PosNegFlagsText(ua.PosFlags, ua.NegFlags);
|
||||
|
||||
Logger.InfoS("admin.perms", $"{Player} updated admin {name} to {title}/{rankName}/{flags}");
|
||||
_sawmill.Info($"{Player} updated admin {name} to {title}/{rankName}/{flags}");
|
||||
|
||||
if (_playerManager.TryGetSessionById(ua.UserId, out var player))
|
||||
{
|
||||
@@ -304,8 +307,7 @@ namespace Content.Server.Administration.UI
|
||||
{
|
||||
// username not in DB.
|
||||
// TODO: Notify user.
|
||||
Logger.WarningS("admin.perms",
|
||||
$"{Player} tried to add admin with unknown username {ca.UserNameOrId}.");
|
||||
_sawmill.Warning($"{Player} tried to add admin with unknown username {ca.UserNameOrId}.");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -341,7 +343,7 @@ namespace Content.Server.Administration.UI
|
||||
var title = ca.Title ?? "<no title>";
|
||||
var flags = AdminFlagsHelper.PosNegFlagsText(ca.PosFlags, ca.NegFlags);
|
||||
|
||||
Logger.InfoS("admin.perms", $"{Player} added admin {name} as {title}/{rankName}/{flags}");
|
||||
_sawmill.Info($"{Player} added admin {name} as {title}/{rankName}/{flags}");
|
||||
|
||||
if (_playerManager.TryGetSessionById(userId, out var player))
|
||||
{
|
||||
@@ -362,7 +364,7 @@ namespace Content.Server.Administration.UI
|
||||
if (!UserAdminFlagCheck(posFlags))
|
||||
{
|
||||
// Can't create an admin with higher perms than yourself, obviously.
|
||||
Logger.WarningS("admin.perms", $"{Player} tried to grant admin powers above their authorization.");
|
||||
_sawmill.Warning($"{Player} tried to grant admin powers above their authorization.");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -378,7 +380,7 @@ namespace Content.Server.Administration.UI
|
||||
if (rank == null)
|
||||
{
|
||||
// Tried to set to nonexistent rank.
|
||||
Logger.WarningS("admin.perms", $"{Player} tried to assign nonexistent admin rank.");
|
||||
_sawmill.Warning($"{Player} tried to assign nonexistent admin rank.");
|
||||
return (true, null);
|
||||
}
|
||||
|
||||
@@ -388,7 +390,7 @@ namespace Content.Server.Administration.UI
|
||||
if (!UserAdminFlagCheck(rankFlags))
|
||||
{
|
||||
// Can't assign a rank with flags you don't have yourself.
|
||||
Logger.WarningS("admin.perms", $"{Player} tried to assign admin rank above their authorization.");
|
||||
_sawmill.Warning($"{Player} tried to assign admin rank above their authorization.");
|
||||
return (true, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,15 @@ namespace Content.Server.Administration.UI;
|
||||
[UsedImplicitly]
|
||||
public sealed class SpawnExplosionEui : BaseEui
|
||||
{
|
||||
private readonly ExplosionSystem _explosionSystem;
|
||||
private readonly ISawmill _sawmill;
|
||||
|
||||
public SpawnExplosionEui()
|
||||
{
|
||||
_explosionSystem = IoCManager.Resolve<IEntitySystemManager>().GetEntitySystem<ExplosionSystem>();
|
||||
_sawmill = IoCManager.Resolve<ILogManager>().GetSawmill("explosion");
|
||||
}
|
||||
|
||||
public override void HandleMessage(EuiMessageBase msg)
|
||||
{
|
||||
base.HandleMessage(msg);
|
||||
@@ -26,7 +35,7 @@ public sealed class SpawnExplosionEui : BaseEui
|
||||
|
||||
if (explosion == null)
|
||||
{
|
||||
Logger.Error("Failed to generate explosion preview.");
|
||||
_sawmill.Error("Failed to generate explosion preview.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user