Merge pull request #120 from blaho/session-mgr-cmp

Exposed information about banned players
This commit is contained in:
Westin Miller
2017-09-20 08:24:28 -07:00
committed by GitHub
3 changed files with 25 additions and 1 deletions

View File

@@ -20,5 +20,17 @@ namespace Torch.API.Managers
/// Bans or unbans a player from the game. /// Bans or unbans a player from the game.
/// </summary> /// </summary>
void BanPlayer(ulong steamId, bool banned = true); void BanPlayer(ulong steamId, bool banned = true);
/// <summary>
/// List of the banned SteamID's
/// </summary>
IReadOnlyList<ulong> BannedPlayers { get; }
/// <summary>
/// Checks if the player with the given SteamID is banned.
/// </summary>
/// <param name="steamId">The SteamID of the player.</param>
/// <returns>True if the player is banned; otherwise false.</returns>
bool IsBanned(ulong steamId);
} }
} }

View File

@@ -12,6 +12,9 @@ namespace Torch.Client.Manager
{ {
public class MultiplayerManagerLobby : MultiplayerManagerBase, IMultiplayerManagerServer public class MultiplayerManagerLobby : MultiplayerManagerBase, IMultiplayerManagerServer
{ {
/// <inheritdoc />
public IReadOnlyList<ulong> BannedPlayers => new List<ulong>();
/// <inheritdoc /> /// <inheritdoc />
public MultiplayerManagerLobby(ITorchBase torch) : base(torch) { } public MultiplayerManagerLobby(ITorchBase torch) : base(torch) { }
@@ -21,6 +24,9 @@ namespace Torch.Client.Manager
/// <inheritdoc /> /// <inheritdoc />
public void BanPlayer(ulong steamId, bool banned = true) => Torch.Invoke(() => MyMultiplayer.Static.BanClient(steamId, banned)); public void BanPlayer(ulong steamId, bool banned = true) => Torch.Invoke(() => MyMultiplayer.Static.BanClient(steamId, banned));
/// <inheritdoc />
public bool IsBanned(ulong steamId) => false;
/// <inheritdoc/> /// <inheritdoc/>
public override void Attach() public override void Attach()
{ {

View File

@@ -31,6 +31,9 @@ namespace Torch.Server.Managers
private static Func<MyDedicatedServerBase, HashSet<ulong>> _waitingForGroup; private static Func<MyDedicatedServerBase, HashSet<ulong>> _waitingForGroup;
#pragma warning restore 649 #pragma warning restore 649
/// <inheritdoc />
public IReadOnlyList<ulong> BannedPlayers => MySandboxGame.ConfigDedicated.Banned;
private Dictionary<ulong, ulong> _gameOwnerIds = new Dictionary<ulong, ulong>(); private Dictionary<ulong, ulong> _gameOwnerIds = new Dictionary<ulong, ulong>();
/// <inheritdoc /> /// <inheritdoc />
@@ -50,6 +53,9 @@ namespace Torch.Server.Managers
}); });
} }
/// <inheritdoc />
public bool IsBanned(ulong steamId) => _isClientBanned.Invoke(MyMultiplayer.Static, steamId) || MySandboxGame.ConfigDedicated.Banned.Contains(steamId);
/// <inheritdoc/> /// <inheritdoc/>
public override void Attach() public override void Attach()
{ {
@@ -107,7 +113,7 @@ namespace Torch.Server.Managers
private void ValidateAuthTicketResponse(ulong steamID, JoinResult response, ulong steamOwner) private void ValidateAuthTicketResponse(ulong steamID, JoinResult response, ulong steamOwner)
{ {
_log.Debug($"ValidateAuthTicketResponse(user={steamID}, response={response}, owner={steamOwner}"); _log.Debug($"ValidateAuthTicketResponse(user={steamID}, response={response}, owner={steamOwner}");
if (_isClientBanned.Invoke(MyMultiplayer.Static, steamOwner) || MySandboxGame.ConfigDedicated.Banned.Contains(steamOwner)) if (IsBanned(steamOwner))
{ {
_userRejected.Invoke((MyDedicatedServerBase)MyMultiplayer.Static, steamID, JoinResult.BannedByAdmins); _userRejected.Invoke((MyDedicatedServerBase)MyMultiplayer.Static, steamID, JoinResult.BannedByAdmins);
_raiseClientKicked.Invoke((MyDedicatedServerBase)MyMultiplayer.Static, steamID); _raiseClientKicked.Invoke((MyDedicatedServerBase)MyMultiplayer.Static, steamID);