IEnumerator KickPlayer(ConnectedPlayer connPlayer, string reason,
                           bool ban = false, int banLengthInMinutes = 0)
    {
        string message  = "";
        string clientID = connPlayer.ClientId;

        if (ban)
        {
            message = $"You have been banned for {banLengthInMinutes}" +
                      $" minutes. Reason: {reason}";

            var index = banList.banEntries.FindIndex(x => x.userId == connPlayer.UserId);
            if (index != -1)
            {
                banList.banEntries.RemoveAt(index);
            }

            banList.banEntries.Add(new BanEntry
            {
                userId        = connPlayer.UserId,
                userName      = connPlayer.Username,
                minutes       = banLengthInMinutes,
                reason        = reason,
                dateTimeOfBan = DateTime.Now.ToString("O"),
                ipAddress     = connPlayer.Connection.address
            });

            File.WriteAllText(banPath, JsonUtility.ToJson(banList));
        }
        else
        {
            message = $"You have been kicked. Reason: {reason}";
        }

        SendClientLogMessage.SendLogToClient(connPlayer.GameObject, message, Category.Admin, true);
        yield return(WaitFor.Seconds(0.1f));

        if (connPlayer.Connection == null)
        {
            Logger.Log($"Not kicking, already disconnected: {connPlayer.Name}");
            yield break;
        }

        Logger.Log($"Kicking client {clientID} : {message}");
        InfoWindowMessage.Send(connPlayer.GameObject, message, "Disconnected");

        yield return(WaitFor.Seconds(1f));

        connPlayer.Connection.Disconnect();
        connPlayer.Connection.Dispose();

        while (!loggedOff.Contains(connPlayer))
        {
            yield return(WaitFor.EndOfFrame);
        }

        loggedOff.Remove(connPlayer);
    }
 public static void Kick(ConnectedPlayer player, string raisins = "4 no raisins")
 {
     if (!player.Connection.isConnected)
     {
         Logger.Log($"Not kicking, already disconnected: {player}", Category.Connections);
         return;
     }
     Logger.Log($"Kicking {player} : {raisins}", Category.Connections);
     InfoWindowMessage.Send(player.GameObject, $"Kicked: {raisins}", "Kicked");
     PostToChatMessage.Send($"Player '{player.Name}' got kicked: {raisins}", ChatChannel.System);
     player.Connection.Disconnect();
     player.Connection.Dispose();
 }
Example #3
0
    public static InfoWindowMessage Send(GameObject recipient, string text, string title = "", bool bwoink = true)
    {
        InfoWindowMessage msg =
            new InfoWindowMessage {
            Recipient = recipient.GetComponent <NetworkIdentity>().netId,
            Text      = text,
            Title     = title,
            Bwoink    = bwoink
        };

        msg.SendTo(recipient);
        return(msg);
    }
    public static InfoWindowMessage Send(GameObject recipient, string text, string title, Color color)
    {
        InfoWindowMessage msg =
            new InfoWindowMessage {
            Recipient = recipient.GetComponent <NetworkIdentity>().netId,
            Text      = text,
            Title     = title,
            Color     = color
        };

        msg.SendTo(recipient);
        return(msg);
    }
    IEnumerator KickPlayer(ConnectedPlayer connPlayer, string reason,
                           bool ban = false, int banLengthInMinutes = 0)
    {
        string message  = "";
        string clientID = connPlayer.ClientId;

        if (ban)
        {
            message = $"You have been banned for {banLengthInMinutes}" +
                      $" minutes. Reason: {reason}";
        }
        else
        {
            message = $"You have been kicked. Reason: {reason}";
        }

        SendClientLogMessage.SendLogToClient(connPlayer.GameObject, message, Category.Connections, true);
        yield return(WaitFor.Seconds(0.1f));

        if (!connPlayer.Connection.isConnected)
        {
            Logger.Log($"Not kicking, already disconnected: {connPlayer.Name}", Category.Connections);
            yield break;
        }

        Logger.Log($"Kicking client {clientID} : {message}", Category.Connections);
        InfoWindowMessage.Send(connPlayer.GameObject, message, "Disconnected");
        //Chat.AddGameWideSystemMsgToChat($"Player '{player.Name}' got kicked: {raisins}");

        connPlayer.Connection.Disconnect();
        connPlayer.Connection.Dispose();

        while (!loggedOff.Contains(connPlayer))
        {
            yield return(WaitFor.EndOfFrame);
        }

        loggedOff.Remove(connPlayer);
    }
    IEnumerator KickPlayer(ConnectedPlayer connPlayer, string reason,
                           bool ban = false, int banLengthInMinutes = 0)
    {
        Logger.Log("Processing KickPlayer/ban for " + "\n"
                   + "UserId " + connPlayer?.UserId + "\n"
                   + "Username " + connPlayer?.Username + "\n"
                   + "address " + connPlayer?.Connection?.address + "\n"
                   + "clientId " + connPlayer?.ClientId + "\n"
                   );

        string message = "";

        if (ban)
        {
            message = $"You have been banned for {banLengthInMinutes}" +
                      $" minutes. Reason: {reason}";

            var index = banList.banEntries.FindIndex(x => x.userId == connPlayer.UserId);
            if (index != -1)
            {
                Logger.Log("removing pre-existing ban entry for userId of" + connPlayer.UserId);
                banList.banEntries.RemoveAt(index);
            }

            banList.banEntries.Add(new BanEntry
            {
                userId        = connPlayer?.UserId,
                userName      = connPlayer?.Username,
                minutes       = banLengthInMinutes,
                reason        = reason,
                dateTimeOfBan = DateTime.Now.ToString("O"),
                ipAddress     = connPlayer?.Connection?.address,
                clientId      = connPlayer?.ClientId
            });

            SaveBanList();
            if (banList.banEntries.Count != 0)
            {
                Logger.Log(banList.banEntries[banList.banEntries.Count - 1].ToString());
            }
        }
        else
        {
            message = $"You have been kicked. Reason: {reason}";
        }

        SendClientLogMessage.SendLogToClient(connPlayer.GameObject, message, Category.Admin, true);
        yield return(WaitFor.Seconds(0.1f));

        if (connPlayer.Connection == null)
        {
            Logger.Log($"Not kicking, already disconnected: {connPlayer.Name}");
            yield break;
        }

        Logger.Log($"Kicking client {connPlayer.Username} : {message}");
        InfoWindowMessage.Send(connPlayer.GameObject, message, "Disconnected");

        yield return(WaitFor.Seconds(1f));

        connPlayer.Connection.Disconnect();
        connPlayer.Connection.Dispose();

        while (!loggedOff.Contains(connPlayer))
        {
            yield return(WaitFor.EndOfFrame);
        }

        loggedOff.Remove(connPlayer);
    }