[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)
|
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()
|
var utkaAhelpEvent = new UtkaAhelpPmEvent()
|
||||||
{
|
{
|
||||||
Message = message,
|
Message = message,
|
||||||
Ckey = ckey,
|
Ckey = ckey,
|
||||||
Sender = sender,
|
Sender = sender,
|
||||||
Rid = Get<GameTicker>().RoundId
|
Rid = Get<GameTicker>().RoundId,
|
||||||
|
NoAdmins = !admins,
|
||||||
|
Entity = entity
|
||||||
};
|
};
|
||||||
|
|
||||||
_utkaSockets.SendMessageToAll(utkaAhelpEvent);
|
_utkaSockets.SendMessageToAll(utkaAhelpEvent);
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ public sealed class UtkaBanCommand : IUtkaCommand
|
|||||||
var dbMan = IoCManager.Resolve<IServerDbManager>();
|
var dbMan = IoCManager.Resolve<IServerDbManager>();
|
||||||
IoCManager.InjectDependencies(this);
|
IoCManager.InjectDependencies(this);
|
||||||
|
|
||||||
//_playerManager.TryGetSessionByUsername(message.ACkey!, out var player);
|
|
||||||
var locatedPlayer = await locator.LookupIdByNameOrIdAsync(message.ACkey!);
|
var locatedPlayer = await locator.LookupIdByNameOrIdAsync(message.ACkey!);
|
||||||
if (locatedPlayer == null)
|
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")]
|
[JsonPropertyName("rid")]
|
||||||
public int? Rid { get; set; }
|
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
|
public sealed class UtkaBannedEvent : UtkaBaseMessage
|
||||||
@@ -289,3 +295,24 @@ public sealed class UtkaRestartRoundResponse : UtkaBaseMessage
|
|||||||
[JsonPropertyName("restarted")]
|
[JsonPropertyName("restarted")]
|
||||||
public bool? Restarted { get; set; }
|
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