[Feature] Socket ahelp tweak + unban command (#67)
* pm event no_admins + entity * unban command
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
51
Content.Server/UtkaIntegration/Commands/UtkaUnbanCommand.cs
Normal file
51
Content.Server/UtkaIntegration/Commands/UtkaUnbanCommand.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user