[Feature] Socket ahelp tweak + unban command (#67)

* pm event no_admins + entity

* unban command
This commit is contained in:
HitPanda
2023-05-16 15:33:15 +03:00
committed by Aviu00
parent c1439eb6fc
commit 70318752bc
4 changed files with 92 additions and 2 deletions

View File

@@ -634,12 +634,25 @@ namespace Content.Server.Administration.Systems
private void UtkaSendAhelpPm(string message, string ckey, string sender)
{
var adminManager = IoCManager.Resolve<IAdminManager>();
var admins = adminManager.ActiveAdmins.Any();
var entity = ckey;
_playerManager.TryGetSessionByUsername(ckey, out var session);
if (session?.AttachedEntity != null)
{
var meta = MetaData((EntityUid) session.AttachedEntity);
entity = meta.EntityName;
}
var utkaAhelpEvent = new UtkaAhelpPmEvent()
{
Message = message,
Ckey = ckey,
Sender = sender,
Rid = Get<GameTicker>().RoundId
Rid = Get<GameTicker>().RoundId,
NoAdmins = !admins,
Entity = entity
};
_utkaSockets.SendMessageToAll(utkaAhelpEvent);

View File

@@ -27,7 +27,6 @@ public sealed class UtkaBanCommand : IUtkaCommand
var dbMan = IoCManager.Resolve<IServerDbManager>();
IoCManager.InjectDependencies(this);
//_playerManager.TryGetSessionByUsername(message.ACkey!, out var player);
var locatedPlayer = await locator.LookupIdByNameOrIdAsync(message.ACkey!);
if (locatedPlayer == null)
{

View File

@@ -0,0 +1,51 @@
using Content.Server.Administration;
using Content.Server.Database;
namespace Content.Server.UtkaIntegration;
public sealed class UtkaUnbanCommand : IUtkaCommand
{
[Dependency] private UtkaTCPWrapper _utkaSocketWrapper = default!;
public string Name => "unban";
public Type RequestMessageType => typeof(UtkaUnbanRequest);
public async void Execute(UtkaTCPSession session, UtkaBaseMessage baseMessage)
{
if (baseMessage is not UtkaUnbanRequest message) return;
var dbMan = IoCManager.Resolve<IServerDbManager>();
var locator = IoCManager.Resolve<IPlayerLocator>();
IoCManager.InjectDependencies(this);
var located = await locator.LookupIdByNameOrIdAsync(message.ACkey!);
if (located == null)
{
UtkaSendResponse(false);
return;
}
var player = located.UserId;
var banId = (int) message.Bid!;
var ban = await dbMan.GetServerBanAsync(banId);
if (ban == null || ban.Unban != null)
{
UtkaSendResponse(false);
return;
}
await dbMan.AddServerUnbanAsync(new ServerUnbanDef(banId, player, DateTimeOffset.Now));
UtkaSendResponse(true);
}
private void UtkaSendResponse(bool unbanned)
{
var utkaResponse = new UtkaUnbanResponse()
{
Unbanned = unbanned
};
_utkaSocketWrapper.SendMessageToAll(utkaResponse);
}
}

View File

@@ -187,6 +187,12 @@ public sealed class UtkaAhelpPmEvent : UtkaBaseMessage
[JsonPropertyName("rid")]
public int? Rid { get; set; }
[JsonPropertyName("no_admins")]
public bool? NoAdmins { get; set; }
[JsonPropertyName("entity")]
public string? Entity { get; set; }
}
public sealed class UtkaBannedEvent : UtkaBaseMessage
@@ -289,3 +295,24 @@ public sealed class UtkaRestartRoundResponse : UtkaBaseMessage
[JsonPropertyName("restarted")]
public bool? Restarted { get; set; }
}
public sealed class UtkaUnbanRequest : UtkaBaseMessage
{
[JsonPropertyName("command")]
public override string? Command => "unban";
[JsonPropertyName("a_ckey")]
public string? ACkey { get; set; }
[JsonPropertyName("bid")]
public int? Bid { get; set; }
}
public sealed class UtkaUnbanResponse : UtkaBaseMessage
{
[JsonPropertyName("command")]
public override string? Command => "unban";
[JsonPropertyName("unbanned")]
public bool? Unbanned { get; set; }
}