Skip to content

Commit

Permalink
If chat message begins with "/" it gets blocked.
Browse files Browse the repository at this point in the history
  • Loading branch information
danbudworthmead committed Oct 29, 2020
1 parent 454f486 commit e032c0d
Show file tree
Hide file tree
Showing 10 changed files with 39 additions and 27 deletions.
6 changes: 3 additions & 3 deletions src/Impostor.Server/Net/Inner/InnerNetObject.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System.Threading.Tasks;
using System.Threading.Tasks;
using Impostor.Api.Net;
using Impostor.Api.Net.Inner;
using Impostor.Api.Net.Messages;
Expand All @@ -16,7 +16,7 @@ internal abstract class InnerNetObject : GameObject, IInnerNetObject

public SpawnFlags SpawnFlags { get; internal set; }

public abstract ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader);
public abstract ValueTask<bool> HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader);

public abstract bool Serialize(IMessageWriter writer, bool initialState);

Expand All @@ -28,4 +28,4 @@ public bool IsOwnedBy(IClientPlayer player)
(OwnerId == HostInheritId && player.IsHost);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System.Numerics;
using System.Numerics;
using System.Threading.Tasks;
using Impostor.Api;
using Impostor.Api.Innersloth;
Expand Down Expand Up @@ -52,7 +52,7 @@ private static Vector2 ReadVector2(IMessageReader reader)
return new Vector2(XRange.Lerp(v1), YRange.Lerp(v2));
}

public override ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
public override ValueTask<bool> HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
{
if (call == RpcCalls.SnapTo)
{
Expand Down Expand Up @@ -145,4 +145,4 @@ private void SnapTo(Vector2 position, ushort minSid)
_targetSyncVelocity = Vector2.Zero;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Threading.Tasks;
using Impostor.Api;
using Impostor.Api.Net;
Expand All @@ -19,7 +19,7 @@ public InnerPlayerPhysics(ILogger<InnerPlayerPhysics> logger, InnerPlayerControl
_playerControl = playerControl;
}

public override ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
public override ValueTask<bool> HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
{
if (call != RpcCalls.EnterVent && call != RpcCalls.ExitVent)
{
Expand Down Expand Up @@ -60,4 +60,4 @@ public override void Deserialize(IClientPlayer sender, IClientPlayer? target, IM
throw new NotImplementedException();
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Impostor.Api;
Expand All @@ -21,7 +21,7 @@ public InnerVoteBanSystem(ILogger<InnerVoteBanSystem> logger)
_votes = new Dictionary<int, int[]>();
}

public override ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
public override ValueTask<bool> HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
{
if (call != RpcCalls.AddVote)
{
Expand Down Expand Up @@ -85,4 +85,4 @@ public override void Deserialize(IClientPlayer sender, IClientPlayer? target, IM
}
}
}
}
}
6 changes: 3 additions & 3 deletions src/Impostor.Server/Net/Inner/Objects/InnerGameData.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Threading.Tasks;
Expand Down Expand Up @@ -43,7 +43,7 @@ public InnerGameData(ILogger<InnerGameData> logger, Game game, IServiceProvider
return _allPlayers.TryGetValue(id, out var player) ? player : null;
}

public override ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call,
public override ValueTask<bool> HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call,
IMessageReader reader)
{
switch (call)
Expand Down Expand Up @@ -182,4 +182,4 @@ private void SetTasks(byte playerId, ReadOnlyMemory<byte> taskTypeIds)
}
}
}
}
}
6 changes: 3 additions & 3 deletions src/Impostor.Server/Net/Inner/Objects/InnerLobbyBehaviour.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System.Threading.Tasks;
using System.Threading.Tasks;
using Impostor.Api.Games;
using Impostor.Api.Net;
using Impostor.Api.Net.Inner.Objects;
Expand All @@ -18,7 +18,7 @@ public InnerLobbyBehaviour(IGame game)
Components.Add(this);
}

public override ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
public override ValueTask<bool> HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
{
throw new System.NotImplementedException();
}
Expand All @@ -33,4 +33,4 @@ public override void Deserialize(IClientPlayer sender, IClientPlayer? target, IM
throw new System.NotImplementedException();
}
}
}
}
7 changes: 4 additions & 3 deletions src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Linq;
using System.Threading.Tasks;
using Impostor.Api;
Expand Down Expand Up @@ -44,7 +44,7 @@ private void PopulateButtons(byte reporter)
.ToArray();
}

public override async ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
public override async ValueTask<bool> HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
{
switch (call)
{
Expand Down Expand Up @@ -114,6 +114,7 @@ public override async ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? tar
break;
}
}
return default;
}

public override bool Serialize(IMessageWriter writer, bool initialState)
Expand Down Expand Up @@ -161,4 +162,4 @@ public override void Deserialize(IClientPlayer sender, IClientPlayer? target, IM
}
}
}
}
}
9 changes: 8 additions & 1 deletion src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public InnerPlayerControl(ILogger<InnerPlayerControl> logger, IServiceProvider s

public InnerPlayerInfo PlayerInfo { get; internal set; }

public override async ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
public override async ValueTask<bool> HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
{
switch (call)
{
Expand Down Expand Up @@ -294,6 +294,12 @@ public override async ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? tar
var chat = reader.ReadString();

await _eventManager.CallAsync(new PlayerChatEvent(_game, sender, this, chat));

if (chat.StartsWith("/"))
{
return true;
}

break;
}

Expand Down Expand Up @@ -393,6 +399,7 @@ public override async ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? tar
break;
}
}
return default;
}

public override bool Serialize(IMessageWriter writer, bool initialState)
Expand Down
6 changes: 3 additions & 3 deletions src/Impostor.Server/Net/Inner/Objects/InnerShipStatus.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Impostor.Api;
Expand Down Expand Up @@ -46,7 +46,7 @@ public InnerShipStatus(ILogger<InnerShipStatus> logger, Game game)
Components.Add(this);
}

public override ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call,
public override ValueTask<bool> HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call,
IMessageReader reader)
{
switch (call)
Expand Down Expand Up @@ -144,4 +144,4 @@ public override void Deserialize(IClientPlayer sender, IClientPlayer? target, IM
}
}
}
}
}
8 changes: 6 additions & 2 deletions src/Impostor.Server/Net/State/Game.Data.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
Expand Down Expand Up @@ -246,7 +246,11 @@ public async ValueTask<bool> HandleGameDataAsync(IMessageReader parent, ClientPl
var netId = reader.ReadPackedUInt32();
if (_allObjectsFast.TryGetValue(netId, out var obj))
{
await obj.HandleRpc(sender, target, (RpcCalls) reader.ReadByte(), reader);
bool isBlocked = await obj.HandleRpc(sender, target, (RpcCalls) reader.ReadByte(), reader);
if (isBlocked)
{
return false;
}
}
else
{
Expand Down

0 comments on commit e032c0d

Please sign in to comment.