public async Task <bool> BanAsync(IUser user, IUser bannedBy = null, string reason = null, TimeSpan?duration = null)
        {
            UserBanEvent @event = new UserBanEvent(user, bannedBy, reason, duration, true);

            eventManager.Emit(host, @event);
            if (@event.IsCancelled)
            {
                return(false);
            }

            var callerId = (bannedBy is UnturnedUser up) ? up.CSteamID : CSteamID.Nil;

            //if (user.IsOnline)
            //{
            //    SteamBlacklist.ban(player.CSteamID, 0, callerId, reason, (uint)(duration?.TotalSeconds ?? uint.MaxValue));
            //    return true;
            //}

            var steamId = new CSteamID(ulong.Parse(user.Id));

            SteamBlacklist.ban(steamId, 0, callerId, reason, (uint)(duration?.TotalSeconds ?? uint.MaxValue));

            var target = ((UnturnedUser)user).Player;

            if (target.IsOnline)
            {
                Provider.kick(steamId, reason);
            }

            return(true);
        }
        public bool Ban(IUserInfo target, IUser bannedBy = null, string reason = null, TimeSpan?duration = null)
        {
            //todo: this is wrong
            var player = ((UnturnedUser)target).Player;

            PlayerBanEvent @event = new PlayerBanEvent(player.User, bannedBy, reason, duration, true);

            eventManager.Emit(host, @event);
            if (@event.IsCancelled)
            {
                return(false);
            }

            if (target is IUser u && u.IsOnline)
            {
                var uPlayer = ((UnturnedUser)target).Player;
                Provider.ban(uPlayer.CSteamID, reason, (uint)(duration?.TotalSeconds ?? uint.MaxValue));
                return(true);
            }

            var steamId  = new CSteamID(ulong.Parse(target.Id));
            var callerId = (bannedBy is UnturnedUser up) ? up.Player.CSteamID : CSteamID.Nil;

            SteamBlacklist.ban(steamId, 0, callerId, reason, (uint)(duration?.TotalSeconds ?? uint.MaxValue));
            return(true);
        }
Ejemplo n.º 3
0
        public static void checkBanStatus(SteamPlayerID playerID, uint remoteIP, out bool isBanned, out string banReason, out uint banRemainingDuration)
        {
            isBanned             = false;
            banReason            = string.Empty;
            banRemainingDuration = 0U;
            if (SteamBlacklist.checkBanned(playerID.steamID, remoteIP, out SteamBlacklistID steamBlacklistID))
            {
                isBanned             = true;
                banReason            = steamBlacklistID.reason;
                banRemainingDuration = steamBlacklistID.getTime();
            }

            try
            {
                Provider.onCheckBanStatusWithHWID?.Invoke(playerID, remoteIP, ref isBanned, ref banReason, ref banRemainingDuration);

#pragma warning disable CS0612 // Type or member is obsolete
                Provider.onCheckBanStatus?.Invoke(playerID.steamID, remoteIP, ref isBanned, ref banReason, ref banRemainingDuration);
#pragma warning restore CS0612 // Type or member is obsolete
            }
            catch (Exception e)
            {
                UnturnedLog.warn("Plugin raised an exception from onCheckBanStatus:");
                UnturnedLog.exception(e);
            }
        }
Ejemplo n.º 4
0
        private void OnPlayerDisconnected(UnturnedPlayer player)
        {
            int  playerPoints;
            bool playerExists = dicPoints.TryGetValue(player.CSteamID, out playerPoints);

            if (playerExists)
            {
                dicPoints.Remove(player.CSteamID);
            }

            if (Instance.Configuration.Instance.LogIDonjoin)
            {
                CSteamID judge = (CSteamID)0;
                if (!FilterData.FilterData.Instance.Configuration.Instance.Unwhitelisted.Contains(player.CSteamID))
                {
                    return;
                }
                if (FilterData.FilterData.Instance.Configuration.Instance.Unwhitelisted.Contains(player.CSteamID))
                {
                    if (Instance.Database.IsBanned(player.CSteamID.ToString()))
                    {
                        return;
                    }
                    Instance.Database.BanPlayer(player.CharacterName, player.CSteamID.ToString(), "[TourneyCore]", "[TourneyCore Filter]", 2147483647);
                    SteamBlacklist.ban(player.CSteamID, GetIP(player.CSteamID), judge, Translate("Filter_Reason"), SteamBlacklist.PERMANENT);
                }
            }
            else
            {
                return;
            }
        }
        public void FixedUpdate()
        {
            //When player connects, run through iteration.
            if (banPlayer)
            {
                //Keep trying to ban player once ping had reached threshold.
                try
                {
                    ping = playerData.Ping;

                    if (ping == 0)
                    {
                        ping = 1;
                    }

                    //Debug.
                    //Logger.Log("Player's ping: " + ping);
                    //Logger.Log("Time Now: " + startTime);
                    //Logger.Log("Total Seconds: " +(DateTime.Now - startTime).TotalSeconds);
                    //Logger.Log("Config Set Grace: " + JailTime.Instance.Configuration.Instance.GracePeriod);
                    //Logger.Log("Grace: " + (JailTime.Instance.Configuration.Instance.GracePeriod + (ping * 10)));

                    if ((DateTime.Now - startTime).TotalSeconds >= JailTime.Instance.Configuration.Instance.GracePeriod + (ping * 10))
                    {
                        //Debug
                        //Logger.Log("Attempt to ban " + playerData.SteamName);

                        //Temp ban.
                        if (JailTime.Instance.Configuration.Instance.BanOnReconnectTime > 0)
                        {
                            SteamBlacklist.ban(playerData.CSteamID, (CSteamID)0UL, JailTime.Instance.Translate("jailtime_ban_time"), JailTime.Instance.Configuration.Instance.BanOnReconnectTime);
                            SteamBlacklist.save();

                            //Debug
                            //Logger.Log("Banned player " + playerData.SteamName + " temporarily. Ban-On-Reconnect.");
                        }

                        //Perma ban.
                        else
                        {
                            SteamBlacklist.ban(playerData.CSteamID, (CSteamID)0L, JailTime.Instance.Translate("jailtime_ban"), 1000000000);
                            SteamBlacklist.save();

                            //Debug
                            //Logger.Log("Banned player " + playerData.SteamName + " permanently. Ban-On-Reconnect.");
                        }

                        banPlayer = false;
                    }
                }
                catch
                {
                    //Nothing to catch, run on next interval
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Unbans the player
        /// </summary>
        public void Unban()
        {
            // Check if unbanned already
            if (!IsBanned)
            {
                return;
            }

            // Set to unbanned
            SteamBlacklist.unban(cSteamId);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Unbans the user
        /// </summary>
        public void Unban()
        {
            // Check not banned
            if (!IsBanned)
            {
                return;
            }

            // Set to unbanned
            SteamBlacklist.unban(cSteamId);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Unbans the player
        /// </summary>
        /// <param name="id"></param>
        public void Unban(string id)
        {
            // Check if unbanned already
            if (!IsBanned(id))
            {
                return;
            }

            // Set to unbanned
            SteamBlacklist.unban(new CSteamID(ulong.Parse(id)));
        }
Ejemplo n.º 9
0
        public void BanPlayer(UnturnedPlayer player, string reason, int warnings, uint banDuration, IRocketPlayer caller)
        {
            CSteamID judge = (CSteamID)0;

            if (!(caller is ConsolePlayer))
            {
                judge = ((UnturnedPlayer)caller).CSteamID;
            }

            SteamBlacklist.ban(player.CSteamID, GetIP(player.CSteamID), judge, WarningsPlugin.Instance.Translate("warning_ban_reason", warnings, reason, banDuration),
                               banDuration);
        }
Ejemplo n.º 10
0
 private void DeathBan(UnturnedPlayer player)
 {
     if (!player.HasPermission("banondeath.ignore"))
     {
         SteamBlacklist.ban(player.CSteamID, CSteamID.Nil, Configuration.Instance.BanReason, Configuration.Instance.BanLengthSeconds);
         player.Ban(Configuration.Instance.BanReason, Configuration.Instance.BanLengthSeconds);
         Logger.LogWarning($"{player.DisplayName} [{player.Id}] has been banned for {Configuration.Instance.BanLengthSeconds} seconds for dying!");
     }
     else
     {
         Logger.LogWarning("Ignoring Death...");
     }
 }
        public async Task <bool> UnbanAsync(IUser target, IUser bannedBy = null)
        {
            UserUnbanEvent @event = new UserUnbanEvent(target, bannedBy);

            eventManager.Emit(host, @event);
            if (@event.IsCancelled)
            {
                return(false);
            }

            var steamId = new CSteamID(ulong.Parse(target.Id));

            return(SteamBlacklist.unban(steamId));
        }
Ejemplo n.º 12
0
        public override void Execute(PointBlankPlayer executor, string[] args)
        {
            if (!UnturnedPlayer.TryGetPlayer(args[0], out UnturnedPlayer ply))
            {
                UnturnedChat.SendMessage(executor, Translations["Base_InvalidPlayer"], ConsoleColor.Red);
                return;
            }

            SteamBlacklist.ban(ply.SteamID, ply.SteamIP, ((UnturnedPlayer)executor)?.SteamID ?? CSteamID.Nil, (args.Length > 1 ? args[1] : "Undefined"), SteamBlacklist.PERMANENT);
            if (ply.SteamPlayer.player != null)
            {
                ply.Player.life.askDamage(255, Vector3.up * 101f, EDeathCause.KILL, ELimb.SKULL, ((UnturnedPlayer)executor)?.SteamID ?? CSteamID.Nil, out EPlayerKill ePlayerKill);
            }
            UnturnedChat.SendMessage(executor, string.Format(Translations["Slay_Slay"], ply.PlayerName), ConsoleColor.Red);
        }
Ejemplo n.º 13
0
        public override void Execute(PointBlankPlayer executor, string[] args)
        {
            if (!PlayerTool.tryGetSteamID(args[0], out CSteamID id))
            {
                UnturnedChat.SendMessage(executor, Translations["Base_InvalidPlayer"], ConsoleColor.Red);
                return;
            }

            if (!SteamBlacklist.unban(id))
            {
                UnturnedChat.SendMessage(executor, string.Format(Translations["Unban_NotBanned"], id), ConsoleColor.Red);
                return;
            }
            UnturnedChat.SendMessage(executor, string.Format(Translations["Unban_Unban"], id), ConsoleColor.Green);
        }
        public bool Unban(IUserInfo target, IUser bannedBy = null)
        {
            var player = ((UnturnedUser)target).Player;

            PlayerUnbanEvent @event = new PlayerUnbanEvent(player.User, bannedBy);

            eventManager.Emit(host, @event);
            if (@event.IsCancelled)
            {
                return(false);
            }

            var steamId = new CSteamID(ulong.Parse(target.Id));

            return(SteamBlacklist.unban(steamId));
        }
Ejemplo n.º 15
0
        public override void Execute(PointBlankPlayer executor, string[] args)
        {
            uint ip;

            if (!PlayerTool.tryGetSteamID(args[0], out CSteamID player) || (executor != null && ((UnturnedPlayer)executor).SteamID == player))
            {
                UnturnedChat.SendMessage(executor, Translations["Base_InvalidPlayer"], ConsoleColor.Red);
                return;
            }
            ip = SteamGameServerNetworking.GetP2PSessionState(player, out P2PSessionState_t p2PSessionState_t) ? p2PSessionState_t.m_nRemoteIP : 0u;
            if (args.Length < 2 || uint.TryParse(args[1], out uint duration))
            {
                duration = SteamBlacklist.PERMANENT;
            }
            string reason = args.Length < 3 ? Translations["Ban_Reason"] : args[2];

            SteamBlacklist.ban(player, ip, ((UnturnedPlayer)executor)?.SteamID ?? CSteamID.Nil, reason, duration);
            UnturnedChat.SendMessage(executor, string.Format(Translations["Ban_Success"], player), ConsoleColor.Green);
        }
Ejemplo n.º 16
0
        public void Execute(IRocketPlayer caller, params string[] command)
        {
            if (command.Length != 1)
            {
                UnturnedChat.Say(caller, GlobalBan.Instance.Translate("command_generic_invalid_parameter"));
                return;
            }

            fr34kyn01535.GlobalBan.DatabaseManager.UnbanResult name = GlobalBan.Instance.Database.UnbanPlayer(command[0]);
            if (!SteamBlacklist.unban(new CSteamID(name.Id)) && String.IsNullOrEmpty(name.Name))
            {
                UnturnedChat.Say(caller, GlobalBan.Instance.Translate("command_generic_player_not_found"));
                return;
            }
            else
            {
                UnturnedChat.Say("The player " + name.Name + " was unbanned");
            }
        }
Ejemplo n.º 17
0
        public static void IShit(CSteamID steamID, byte[] packet, int offset, int size, int channel)
        {
            Provider._bytesReceived += (uint)size;
            Provider._packetsReceived++;
            if (Dedicator.isDedicated)
            {
                ESteamPacket packet2 = (ESteamPacket)packet[offset];
                if (Provider.isUpdate(packet2))
                {
                    if (steamID == Provider.server)
                    {
                        for (int i = 0; i < Provider.receivers.Count; i++)
                        {
                            if (Provider.receivers[i].id == channel)
                            {
                                Provider.receivers[i].receive(steamID, packet, offset, size);
                                return;
                            }
                        }
                    }
                    else
                    {
                        for (int j = 0; j < Provider.clients.Count; j++)
                        {
                            if (Provider.clients[j].playerID.steamID == steamID)
                            {
                                for (int k = 0; k < Provider.receivers.Count; k++)
                                {
                                    if (Provider.receivers[k].id == channel)
                                    {
                                        Provider.receivers[k].receive(steamID, packet, offset, size);
                                        return;
                                    }
                                }
                                return;
                            }
                        }
                    }
                }
                else
                {
                    SteamPending pending;
                    switch (packet2)
                    {
                    case ESteamPacket.WORKSHOP:
                    {
                        ulong        num8;
                        List <ulong> list     = new List <ulong>();
                        string[]     strArray = ReadWrite.getFolders("/Bundles/Workshop/Content");
                        for (int m = 0; m < strArray.Length; m++)
                        {
                            ulong num5;
                            if (ulong.TryParse(ReadWrite.folderName(strArray[m]), out num5))
                            {
                                list.Add(num5);
                            }
                        }
                        string[] strArray2 = ReadWrite.getFolders(ServerSavedata.directory + "/" + Provider.serverID + "/Workshop/Content");
                        for (int n = 0; n < strArray2.Length; n++)
                        {
                            ulong num7;
                            if (ulong.TryParse(ReadWrite.folderName(strArray2[n]), out num7))
                            {
                                list.Add(num7);
                            }
                        }
                        if (ulong.TryParse(new DirectoryInfo(Level.info.path).Parent.Name, out num8))
                        {
                            list.Add(num8);
                        }
                        byte[] array = new byte[2 + (list.Count * 8)];
                        array[0] = 1;
                        array[1] = (byte)list.Count;
                        for (byte num9 = 0; num9 < list.Count; num9 = (byte)(num9 + 1))
                        {
                            BitConverter.GetBytes(list[num9]).CopyTo(array, (int)(2 + (num9 * 8)));
                        }
                        Provider.send(steamID, ESteamPacket.WORKSHOP, array, array.Length, 0);
                        return;
                    }

                    case ESteamPacket.TICK:
                    {
                        int      num10;
                        object[] objects = new object[] { (byte)14, Provider.net };
                        byte[]   buffer2 = SteamPacker.getBytes(0, out num10, objects);
                        Provider.send(steamID, ESteamPacket.TIME, buffer2, num10, 0);
                        return;
                    }

                    case ESteamPacket.TIME:
                        for (int num11 = 0; num11 < Provider.clients.Count; num11++)
                        {
                            if (Provider.clients[num11].playerID.steamID == steamID)
                            {
                                if (Provider.clients[num11].lastPing > 0f)
                                {
                                    Provider.clients[num11].lastNet = Time.realtimeSinceStartup;
                                    Provider.clients[num11].lag(Time.realtimeSinceStartup - Provider.clients[num11].lastPing);
                                    Provider.clients[num11].lastPing = -1f;
                                }
                                return;
                            }
                        }
                        return;

                    case ESteamPacket.CONNECT:
                    {
                        long             num14;
                        double           num15;
                        long             num16;
                        double           num17;
                        SteamBlacklistID tid;
                        for (int num12 = 0; num12 < Provider.pending.Count; num12++)
                        {
                            if (Provider.pending[num12].playerID.steamID == steamID)
                            {
                                Provider.Reject(steamID, ESteamRejection.ALREADY_PENDING);
                                return;
                            }
                        }
                        for (int num13 = 0; num13 < Provider.clients.Count; num13++)
                        {
                            if (Provider.clients[num13].playerID.steamID == steamID)
                            {
                                Provider.Reject(steamID, ESteamRejection.ALREADY_CONNECTED);
                                return;
                            }
                        }
                        Type[] types = new Type[] {
                            Types.BYTE_TYPE, Types.BYTE_TYPE, Types.STRING_TYPE, Types.STRING_TYPE, Types.BYTE_ARRAY_TYPE, Types.BYTE_ARRAY_TYPE, Types.BYTE_ARRAY_TYPE, Types.BYTE_TYPE, Types.STRING_TYPE, Types.BOOLEAN_TYPE, Types.SINGLE_TYPE, Types.STRING_TYPE, Types.STEAM_ID_TYPE, Types.BYTE_TYPE, Types.BYTE_TYPE, Types.BYTE_TYPE,
                            Types.COLOR_TYPE, Types.COLOR_TYPE, Types.BOOLEAN_TYPE, Types.UINT64_TYPE, Types.UINT64_TYPE, Types.UINT64_TYPE, Types.UINT64_TYPE, Types.UINT64_TYPE, Types.UINT64_TYPE, Types.UINT64_TYPE, Types.UINT64_ARRAY_TYPE, Types.BYTE_TYPE
                        };
                        object[]      objArray    = SteamPacker.getObjects(steamID, offset, 0, packet, types);
                        SteamPlayerID newPlayerID = new SteamPlayerID(steamID, (byte)objArray[1], (string)objArray[2], (string)objArray[3], (string)objArray[11], (CSteamID)objArray[12]);
                        if (((string)objArray[8]) != Provider.Version)
                        {
                            Provider.Reject(steamID, ESteamRejection.WRONG_VERSION);
                            return;
                        }
                        if (newPlayerID.SteamName.Length < 2)
                        {
                            Provider.Reject(steamID, ESteamRejection.NAME_PLAYER_SHORT);
                            return;
                        }
                        if (newPlayerID.CharacterName.Length < 2)
                        {
                            Provider.Reject(steamID, ESteamRejection.NAME_CHARACTER_SHORT);
                            return;
                        }
                        if (newPlayerID.SteamName.Length > 0x20)
                        {
                            Provider.Reject(steamID, ESteamRejection.NAME_PLAYER_LONG);
                            return;
                        }
                        if (newPlayerID.CharacterName.Length > 0x20)
                        {
                            Provider.Reject(steamID, ESteamRejection.NAME_CHARACTER_LONG);
                            return;
                        }
                        if (long.TryParse(newPlayerID.SteamName, out num14) || double.TryParse(newPlayerID.SteamName, out num15))
                        {
                            Provider.Reject(steamID, ESteamRejection.NAME_PLAYER_NUMBER);
                            return;
                        }
                        if (long.TryParse(newPlayerID.CharacterName, out num16) || double.TryParse(newPlayerID.CharacterName, out num17))
                        {
                            Provider.Reject(steamID, ESteamRejection.NAME_CHARACTER_NUMBER);
                            return;
                        }
                        if (Provider.filterName)
                        {
                            if (!NameTool.isValid(newPlayerID.SteamName))
                            {
                                Provider.Reject(steamID, ESteamRejection.NAME_PLAYER_INVALID);
                                return;
                            }
                            if (!NameTool.isValid(newPlayerID.CharacterName))
                            {
                                Provider.Reject(steamID, ESteamRejection.NAME_CHARACTER_INVALID);
                                return;
                            }
                        }
                        if (SteamBlacklist.checkBanned(steamID, out tid))
                        {
                            int      num18;
                            object[] objArray2 = new object[] { (byte)9, tid.reason, tid.getTime() };
                            byte[]   buffer3   = SteamPacker.getBytes(0, out num18, objArray2);
                            Provider.send(steamID, ESteamPacket.BANNED, buffer3, num18, 0);
                            return;
                        }
                        if (!SteamWhitelist.checkWhitelisted(steamID))
                        {
                            Provider.Reject(steamID, ESteamRejection.WHITELISTED);
                            return;
                        }
                        if ((Provider.clients.Count + 1) > Provider.maxPlayers)
                        {
                            Provider.Reject(steamID, ESteamRejection.SERVER_FULL);
                            return;
                        }
                        byte[] buffer4 = (byte[])objArray[4];
                        if (buffer4.Length != 20)
                        {
                            Provider.Reject(steamID, ESteamRejection.WRONG_HASH);
                            return;
                        }
                        byte[] buffer5 = (byte[])objArray[5];
                        if (buffer5.Length != 20)
                        {
                            Provider.Reject(steamID, ESteamRejection.WRONG_HASH);
                            return;
                        }
                        byte[] h = (byte[])objArray[6];
                        if (h.Length != 20)
                        {
                            Provider.Reject(steamID, ESteamRejection.WRONG_HASH);
                            return;
                        }
                        if ((Provider.serverPassword == string.Empty) || Hash.verifyHash(buffer4, Provider._serverPasswordHash))
                        {
                            if (Hash.verifyHash(buffer5, Level.hash))
                            {
                                if (ReadWrite.appIn(h, (byte)objArray[7]))
                                {
                                    if (((float)objArray[10]) < Provider.timeout)
                                    {
                                        Provider.pending.Add(new SteamPending(newPlayerID, (bool)objArray[9], (byte)objArray[13], (byte)objArray[14], (byte)objArray[15], (Color)objArray[0x10], (Color)objArray[0x11], (bool)objArray[0x12], (ulong)objArray[0x13], (ulong)objArray[20], (ulong)objArray[0x15], (ulong)objArray[0x16], (ulong)objArray[0x17], (ulong)objArray[0x18], (ulong)objArray[0x19], (ulong[])objArray[0x1a], (EPlayerSpeciality)((byte)objArray[0x1b])));
                                        byte[] buffer1 = new byte[] { 3 };
                                        Provider.send(steamID, ESteamPacket.VERIFY, buffer1, 1, 0);
                                        return;
                                    }
                                    Provider.Reject(steamID, ESteamRejection.PING);
                                    return;
                                }
                                Provider.Reject(steamID, ESteamRejection.WRONG_HASH);
                                return;
                            }
                            Provider.Reject(steamID, ESteamRejection.WRONG_HASH);
                            return;
                        }
                        Provider.Reject(steamID, ESteamRejection.WRONG_PASSWORD);
                        return;
                    }

                    default:
                        if (packet2 != ESteamPacket.AUTHENTICATE)
                        {
                            Debug.LogError("Failed to handle message: " + packet2);
                            return;
                        }
                        pending = null;
                        for (int num19 = 0; num19 < Provider.pending.Count; num19++)
                        {
                            if (Provider.pending[num19].playerID.steamID == steamID)
                            {
                                pending = Provider.pending[num19];
                                break;
                            }
                        }
                        break;
                    }
                    if (pending == null)
                    {
                        Provider.Reject(steamID, ESteamRejection.NOT_PENDING);
                    }
                    else if ((Provider.clients.Count + 1) > Provider.maxPlayers)
                    {
                        Provider.Reject(steamID, ESteamRejection.SERVER_FULL);
                    }
                    else
                    {
                        ushort count = BitConverter.ToUInt16(packet, 1);
                        byte[] dst   = new byte[count];
                        Buffer.BlockCopy(packet, 3, dst, 0, count);
                        ushort num21   = BitConverter.ToUInt16(packet, 3 + count);
                        byte[] buffer8 = new byte[num21];
                        Buffer.BlockCopy(packet, 5 + count, buffer8, 0, num21);
                        if (!Provider.verifyTicket(steamID, dst))
                        {
                            Provider.Reject(steamID, ESteamRejection.AUTH_VERIFICATION);
                        }
                        else if (num21 > 0)
                        {
                            if (!SteamGameServerInventory.DeserializeResult(out pending.inventoryResult, buffer8, num21, false))
                            {
                                Provider.Reject(steamID, ESteamRejection.AUTH_ECON);
                            }
                        }
                        else
                        {
                            pending.shirtItem        = 0;
                            pending.pantsItem        = 0;
                            pending.hatItem          = 0;
                            pending.backpackItem     = 0;
                            pending.vestItem         = 0;
                            pending.maskItem         = 0;
                            pending.glassesItem      = 0;
                            pending.skinItems        = new int[0];
                            pending.packageShirt     = 0L;
                            pending.packagePants     = 0L;
                            pending.packageHat       = 0L;
                            pending.packageBackpack  = 0L;
                            pending.packageVest      = 0L;
                            pending.packageMask      = 0L;
                            pending.packageGlasses   = 0L;
                            pending.packageSkins     = new ulong[0];
                            pending.inventoryResult  = SteamInventoryResult_t.Invalid;
                            pending.inventoryDetails = new SteamItemDetails_t[0];
                            pending.hasProof         = true;
                        }
                    }
                }
            }
        }
Ejemplo n.º 18
0
        public static bool Prefix(CSteamID steamID, byte[] packet, int offset, int size, int channel)
        {
            if (!Dedicator.isDedicated)
            {
                return(true);
            }
            byte index1 = packet[offset];

            if (!(index1 < (byte)26))
            {
                UnityEngine.Debug.LogWarning((object)("Received invalid packet index from " + (object)steamID + ", so we're refusing them"));
                SDG.Unturned.Provider.refuseGarbageConnection(steamID, "sv invalid packet index");
            }
            else
            {
                ESteamPacket packet1 = (ESteamPacket)index1;
                if (packet1 == ESteamPacket.AUTHENTICATE || packet1 == ESteamPacket.CONNECT)
                {
                    Console.WriteLine(packet1);
                }
                if (packet1 == ESteamPacket.CONNECT)
                {
                    RocketPlayer player = new RocketPlayer(steamID.ToString());
                    bool         result = player.HasPermission("QueueBypasser.Skip");
                    Console.WriteLine(result);
                    if (!result)
                    {
                        return(true); //We don't need to do jack shit because he doesn't have the right permission.
                    }
                    for (int index2 = 0; index2 < SDG.Unturned.Provider.pending.Count; ++index2)
                    {
                        if (SDG.Unturned.Provider.pending[index2].playerID.steamID == steamID)
                        {
                            Console.WriteLine("line 1");
                            //SDG.Unturned.Provider.reject(steamID, ESteamRejection.ALREADY_PENDING);
                            return(true);
                        }
                    }
                    for (int index2 = 0; index2 < SDG.Unturned.Provider.clients.Count; ++index2)
                    {
                        if (SDG.Unturned.Provider.clients[index2].playerID.steamID == steamID)
                        {
                            Console.WriteLine("line 2");
                            //SDG.Unturned.Provider.reject(steamID, ESteamRejection.ALREADY_CONNECTED);
                            return(true);
                        }
                    }
                    object[]      objects     = SteamPacker.getObjects(steamID, offset, 0, packet, Types.BYTE_TYPE, Types.BYTE_TYPE, Types.STRING_TYPE, Types.STRING_TYPE, Types.BYTE_ARRAY_TYPE, Types.BYTE_ARRAY_TYPE, Types.BYTE_ARRAY_TYPE, Types.BYTE_TYPE, Types.UINT32_TYPE, Types.BOOLEAN_TYPE, Types.SINGLE_TYPE, Types.STRING_TYPE, Types.STEAM_ID_TYPE, Types.BYTE_TYPE, Types.BYTE_TYPE, Types.BYTE_TYPE, Types.COLOR_TYPE, Types.COLOR_TYPE, Types.COLOR_TYPE, Types.BOOLEAN_TYPE, Types.UINT64_TYPE, Types.UINT64_TYPE, Types.UINT64_TYPE, Types.UINT64_TYPE, Types.UINT64_TYPE, Types.UINT64_TYPE, Types.UINT64_TYPE, Types.UINT64_ARRAY_TYPE, Types.BYTE_TYPE, Types.STRING_TYPE, Types.STRING_TYPE, Types.STEAM_ID_TYPE, Types.UINT32_TYPE);
                    SteamPlayerID newPlayerID = new SteamPlayerID(steamID, (byte)objects[1], (string)objects[2], (string)objects[3], (string)objects[11], (CSteamID)objects[12]);
                    if (objects[8].ToString() != SDG.Unturned.Provider.APP_VERSION && (int)(uint)objects[8] != Parser.getUInt32FromIP(SDG.Unturned.Provider.APP_VERSION))
                    {
                        Console.WriteLine("line 3");
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.WRONG_VERSION);
                        return(true);
                    }
                    if (newPlayerID.playerName.Length < 2)
                    {
                        Console.WriteLine("line 4");
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.NAME_PLAYER_SHORT);
                        return(true);
                    }
                    if (newPlayerID.characterName.Length < 2)
                    {
                        Console.WriteLine("line 5");
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.NAME_CHARACTER_SHORT);
                        return(true);
                    }
                    if (newPlayerID.playerName.Length > 32)
                    {
                        Console.WriteLine("line 6");
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.NAME_PLAYER_LONG);
                        return(true);
                    }
                    if (newPlayerID.characterName.Length > 32)
                    {
                        Console.WriteLine("line 7");
                        //Provider.reject(steamID, ESteamRejection.NAME_CHARACTER_LONG);
                        return(true);
                    }
                    long   result1;
                    double result2;
                    if (long.TryParse(newPlayerID.playerName, out result1) || double.TryParse(newPlayerID.playerName, out result2))
                    {
                        Console.WriteLine("line 8");
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.NAME_PLAYER_NUMBER);
                        return(true);
                    }
                    long   result3;
                    double result4;
                    if (long.TryParse(newPlayerID.characterName, out result3) || double.TryParse(newPlayerID.characterName, out result4))
                    {
                        Console.WriteLine("line 9");
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.NAME_CHARACTER_NUMBER);
                        return(true);
                    }
                    if (SDG.Unturned.Provider.filterName)
                    {
                        if (!NameTool.isValid(newPlayerID.playerName))
                        {
                            Console.WriteLine("line 10");
                            //SDG.Unturned.Provider.reject(steamID, ESteamRejection.NAME_PLAYER_INVALID);
                            return(true);
                        }
                        if (!NameTool.isValid(newPlayerID.characterName))
                        {
                            Console.WriteLine("line 11");
                            //SDG.Unturned.Provider.reject(steamID, ESteamRejection.NAME_CHARACTER_INVALID);
                            return(true);
                        }
                    }
                    if (NameTool.containsRichText(newPlayerID.playerName))
                    {
                        Console.WriteLine("line 12");
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.NAME_PLAYER_INVALID);
                        return(true);
                    }
                    if (NameTool.containsRichText(newPlayerID.characterName))
                    {
                        Console.WriteLine("line 13");
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.NAME_CHARACTER_INVALID);
                        return(true);
                    }
                    P2PSessionState_t pConnectionState;
                    uint             ip = !SteamGameServerNetworking.GetP2PSessionState(steamID, out pConnectionState) ? 0U : pConnectionState.m_nRemoteIP;
                    SteamBlacklistID blacklistID;
                    if (SteamBlacklist.checkBanned(steamID, ip, out blacklistID))
                    {
                        //int size1;
                        //byte[] bytes = SteamPacker.getBytes(0, out size1, (object)(byte)9, (object)blacklistID.reason, (object)blacklistID.getTime());
                        //SDG.Unturned.Provider.send(steamID, ESteamPacket.BANNED, bytes, size1, 0);
                        Console.WriteLine("line 15");
                        return(true);
                    }
                    bool flag3 = SteamWhitelist.checkWhitelisted(steamID);
                    if (SDG.Unturned.Provider.isWhitelisted && !flag3)
                    {
                        Console.WriteLine("line 16");
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.WHITELISTED);
                        return(true);
                    }

                    byte[] hash_0_1 = (byte[])objects[4];
                    if (hash_0_1.Length != 20)
                    {
                        Console.WriteLine("line 17");
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.WRONG_PASSWORD);
                        return(true);
                    }
                    byte[] hash_0_2 = (byte[])objects[5];
                    if (hash_0_2.Length != 20)
                    {
                        Console.WriteLine("line 18");
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.WRONG_HASH_LEVEL);
                        return(true);
                    }
                    byte[] h = (byte[])objects[6];
                    if (h.Length != 20)
                    {
                        Console.WriteLine("line 19");
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.WRONG_HASH_ASSEMBLY);
                        return(true);
                    }

                    string             str1 = (string)objects[29];
                    ModuleDependency[] moduleDependencyArray;
                    if (string.IsNullOrEmpty(str1))
                    {
                        moduleDependencyArray = new ModuleDependency[0];
                    }
                    else
                    {
                        string[] strArray1 = str1.Split(';');
                        moduleDependencyArray = new ModuleDependency[strArray1.Length];
                        for (int index2 = 0; index2 < moduleDependencyArray.Length; ++index2)
                        {
                            string[] strArray2 = strArray1[index2].Split(',');
                            if (strArray2.Length == 2)
                            {
                                moduleDependencyArray[index2]      = new ModuleDependency();
                                moduleDependencyArray[index2].Name = strArray2[0];
                                uint.TryParse(strArray2[1], out moduleDependencyArray[index2].Version_Internal);
                            }
                        }
                    }
                    critMods.Clear();
                    ModuleHook.getRequiredModules(critMods);
                    bool flag4 = true;
                    for (int index2 = 0; index2 < moduleDependencyArray.Length; ++index2)
                    {
                        bool flag2 = false;
                        if (moduleDependencyArray[index2] != null)
                        {
                            for (int index3 = 0; index3 < critMods.Count; ++index3)
                            {
                                if (critMods[index3] != null && critMods[index3].config != null && (critMods[index3].config.Name == moduleDependencyArray[index2].Name && critMods[index3].config.Version_Internal >= moduleDependencyArray[index2].Version_Internal))
                                {
                                    flag2 = true;
                                    return(true);
                                }
                            }
                        }
                        if (!flag2)
                        {
                            flag4 = false;
                            return(true);
                        }
                    }
                    if (!flag4)
                    {
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.CLIENT_MODULE_DESYNC);
                        Console.WriteLine("line 20");
                        return(true);
                    }
                    bool flag5 = true;
                    for (int index2 = 0; index2 < critMods.Count; ++index2)
                    {
                        bool flag2 = false;
                        if (critMods[index2] != null && critMods[index2].config != null)
                        {
                            for (int index3 = 0; index3 < moduleDependencyArray.Length; ++index3)
                            {
                                if (moduleDependencyArray[index3] != null && moduleDependencyArray[index3].Name == critMods[index2].config.Name && moduleDependencyArray[index3].Version_Internal >= critMods[index2].config.Version_Internal)
                                {
                                    flag2 = true;
                                    return(true);
                                }
                            }
                        }
                        if (!flag2)
                        {
                            flag5 = false;
                            return(true);
                        }
                    }
                    if (!flag5)
                    {
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.SERVER_MODULE_DESYNC);
                        Console.WriteLine("line 21");
                        return(true);
                    }

                    Console.WriteLine("section 1");

                    if (SDG.Unturned.Provider.serverPassword == string.Empty || Hash.verifyHash(hash_0_1, _serverPasswordHash))
                    {
                        Console.WriteLine("section 2");
                        if (Hash.verifyHash(hash_0_2, Level.hash))
                        {
                            Console.WriteLine("section 3");
                            if (ReadWrite.appIn(h, (byte)objects[7]))
                            {
                                Console.WriteLine("section 4");
                                if ((double)(float)objects[10] < (double)SDG.Unturned.Provider.configData.Server.Max_Ping_Milliseconds / 1000.0)
                                {
                                    Console.WriteLine("section 5");
                                    //var pending = new SteamPending(newPlayerID, (bool)objects[9], (byte)objects[13], (byte)objects[14], (byte)objects[15], (Color)objects[16], (Color)objects[17], (Color)objects[18], (bool)objects[19], (ulong)objects[20], (ulong)objects[21], (ulong)objects[22], (ulong)objects[23], (ulong)objects[24], (ulong)objects[25], (ulong)objects[26], (ulong[])objects[27], (EPlayerSkillset)(byte)objects[28], (string)objects[30], (CSteamID)objects[31]);

                                    //Provider.pending.Insert(0, pending);
                                    //pending.sendVerifyPacket();
                                    //Console.WriteLine($"Accepting {pending.playerID.steamID}.");
                                    return(false);
                                }
                                //SDG.Unturned.Provider.reject(steamID, ESteamRejection.PING);
                                Console.WriteLine("line 22");
                                return(true);
                            }
                            //SDG.Unturned.Provider.reject(steamID, ESteamRejection.WRONG_HASH_ASSEMBLY);
                            Console.WriteLine("line 23");
                            return(true);
                        }
                        //SDG.Unturned.Provider.reject(steamID, ESteamRejection.WRONG_HASH_LEVEL);
                        Console.WriteLine("line 24");
                        return(true);
                    }
                    //SDG.Unturned.Provider.reject(steamID, ESteamRejection.WRONG_PASSWORD);
                    Console.WriteLine("line 25");
                    return(true);
                }
            }
            return(true);
        }
Ejemplo n.º 19
0
        public void Execute(IRocketPlayer caller, params string[] param)
        {
            CSteamID judge = (CSteamID)0;

            if (!(caller is ConsolePlayer))
            {
                judge = ((UnturnedPlayer)caller).CSteamID;
            }
            if (param.Length == 0)
            {
                if (Init.Instance.Configuration.Instance.LogIDonjoin)
                {
                    Init.Instance.Configuration.Save();
                    UnturnedChat.Say(caller, "Players already logged when they joined");
                    return;
                }
                else
                {
                    //if logindonjoin false
                    if (Provider.clients.Count == 0)
                    {
                        UnturnedChat.Say(caller, "No one available");
                        return;
                    }
                    else
                    {
                        List <CSteamID> ids = Provider.clients.Select(x => x.playerID.steamID).ToList();


                        if (!ids.Any())
                        {
                            return;
                        }
                        foreach (var player in ids)
                        {
                            FilterData.FilterData.Instance.Configuration.Instance.Unwhitelisted = ids.Except(FilterData.FilterData.Instance.Configuration.Instance.Whitelists).ToList();
                            FilterData.FilterData.Instance.Configuration.Save();
                            foreach (var playerid in FilterData.FilterData.Instance.Configuration.Instance.Unwhitelisted)
                            {
                                UnturnedChat.Say(caller, playerid.ToString());
                            }

                            UnturnedChat.Say(caller, "IDs saved locally");
                        }
                    }
                }
                return;
            }
            if (param.Length > 0)
            {
                if (param.Length == 1)
                {
                    switch (param[0])
                    {
                    case "debug":

                        if (!FilterData.FilterData.Instance.Configuration.Instance.Unwhitelisted.Any())
                        {
                            UnturnedChat.Say(caller, "Tban list is empty");
                            return;
                        }


                        foreach (var player in FilterData.FilterData.Instance.Configuration.Instance.Unwhitelisted)
                        {
                            UnturnedChat.Say(caller, player.ToString());
                        }


                        break;

                    case "unban":



                        if (!FilterData.FilterData.Instance.Configuration.Instance.Unwhitelisted.Any())
                        {
                            UnturnedChat.Say(caller, "Tban list is empty");
                            return;
                        }



                        foreach (var player in FilterData.FilterData.Instance.Configuration.Instance.Unwhitelisted.ToList())
                        {
                            Init.Instance.Database.UnbanPlayer(player.ToString());

                            SteamBlacklist.unban(player);
                            //CommandWindow.input.onInputText("unban " + player.ToString());
                            UnturnedChat.Say(caller, "Unbanned " + player + " and relieved from Globalban");
                        }

                        break;

                    case "ban":


                        if (!FilterData.FilterData.Instance.Configuration.Instance.Unwhitelisted.Any())
                        {
                            UnturnedChat.Say(caller, "Tban list is empty");
                            return;
                        }
                        else
                        {
                            foreach (var player in FilterData.FilterData.Instance.Configuration.Instance.Unwhitelisted)
                            {
                                /*ulong? otherPlayerID = player.GetCSteamID;
                                 * UnturnedPlayer playern = UnturnedPlayer.FromCSteamID(player);*/



                                Init.Instance.Database.BanPlayer("Tourneybanned", player.ToString(), "Tourneyban", "[TourneyCore Filter]", 2147483647);

                                Provider.kick(player, Init.Instance.Translate("Filter_Reason"));
                                SteamBlacklist.ban(player, Init.Instance.GetIP(player), judge, Init.Instance.Translate("Filter_Reason"), 2147483647);


                                UnturnedChat.Say("Kicked " + player);
                                //UnturnedChat.Say(caller, "" + player + " Tourneyban");
                            }
                        }

                        //EArenaState.SPAWN.



                        break;

                    case "enable":
                        if (Init.Instance.Configuration.Instance.LogIDonjoin == true)
                        {
                            UnturnedChat.Say(caller, "Logging on join is already enabled");
                            return;
                        }
                        UnturnedChat.Say(caller, "Enabling logging on join");
                        Init.Instance.Configuration.Instance.LogIDonjoin = true;
                        Init.Instance.Configuration.Save();
                        break;

                    case "disable":
                        if (Init.Instance.Configuration.Instance.LogIDonjoin == false)
                        {
                            UnturnedChat.Say(caller, "Logging on join is already disabled");
                            return;
                        }
                        UnturnedChat.Say(caller, "Disabling logging on join");
                        Init.Instance.Configuration.Instance.LogIDonjoin = false;
                        Init.Instance.Configuration.Save();
                        break;

                    case "clear":
                        if (!FilterData.FilterData.Instance.Configuration.Instance.Unwhitelisted.Any())
                        {
                            UnturnedChat.Say(caller, "List already empty");
                            return;
                        }
                        FilterData.FilterData.Instance.Configuration.Instance.Unwhitelisted.Clear();
                        FilterData.FilterData.Instance.Configuration.Save();
                        UnturnedChat.Say(caller, "Successfully cleared Tban list");
                        break;
                    }
                }
                else
                {
                    UnturnedChat.Say(caller, "Wrong syntax!");
                }
            }



            if (param.Length != 1 && param.Length != 0)
            {
                UnturnedChat.Say(caller, "Wrong syntax");
            }
        }
Ejemplo n.º 20
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            if (caller.DisplayName != "Console")
            {
                UnturnedPlayer pCaller = (UnturnedPlayer)caller;
                if (command.Count() == 3)
                {
                    string playerName = command[0];
                    string reason     = command[1];
                    uint   duration   = (uint)Convert.ToInt32(command[2]);
                    //Find player
                    foreach (SteamPlayer plr in Provider.Players)
                    {
                        //So let's convert each SteamPlayer into an UnturnedPlayer
                        UnturnedPlayer unturnedPlayer = UnturnedPlayer.FromSteamPlayer(plr);


                        if (unturnedPlayer.DisplayName.ToLower().IndexOf(playerName.ToLower()) != -1 || unturnedPlayer.CharacterName.ToLower().IndexOf(playerName.ToLower()) != -1 || unturnedPlayer.SteamName.ToLower().IndexOf(playerName.ToLower()) != -1 || unturnedPlayer.CSteamID.ToString().Equals(playerName))
                        {
                            if (CommandModerator.isMod(pCaller))
                            {
                                if (duration > DatasEssentialsManager.Instance.Configuration.Instance.maxBanLength)
                                {
                                    UnturnedChat.Say(caller, "Can't ban longer than " + DatasEssentialsManager.Instance.Configuration.Instance.maxBanLength + " seconds as a moderator.");
                                    return;
                                }

                                DateTime time = DateTime.Now;

                                DatasEssentialsManager.Instance.Configuration.Instance.modKickBanList.Add("[" + time.ToString("M/d/yyyy h:mm:ss tt") + "] Banned " + unturnedPlayer.CharacterName + "(" + unturnedPlayer.CSteamID.ToString() + ") for " + duration + " seconds because " + reason + " by " + pCaller.CharacterName + ".");
                            }

                            SteamBlacklist.ban(unturnedPlayer.CSteamID, pCaller.CSteamID, reason, duration);
                            //         Provider.ban(unturnedPlayer.CSteamID, reason, duration);
                            UnturnedChat.Say(unturnedPlayer.DisplayName + " has been banned for " + reason + " for " + duration + " seconds.", Color.cyan);
                            return;
                        }
                    }
                    UnturnedChat.Say(caller, "Did not find anyone with the name \"" + playerName + "\".", Color.red);
                }
                else
                {
                    UnturnedChat.Say(caller, "Used that wrong, syntax is /ban (player) (reason) (duration seconds)", Color.red);
                }
            }
            else
            {
                if (command.Count() == 3)
                {
                    string playerName = command[0];
                    string reason     = command[1];
                    uint   duration   = (uint)Convert.ToInt32(command[2]);
                    //Find player
                    foreach (SteamPlayer plr in Provider.Players)
                    {
                        //So let's convert each SteamPlayer into an UnturnedPlayer
                        UnturnedPlayer unturnedPlayer = UnturnedPlayer.FromSteamPlayer(plr);


                        if (unturnedPlayer.DisplayName.ToLower().IndexOf(playerName.ToLower()) != -1 || unturnedPlayer.CharacterName.ToLower().IndexOf(playerName.ToLower()) != -1 || unturnedPlayer.SteamName.ToLower().IndexOf(playerName.ToLower()) != -1 || unturnedPlayer.CSteamID.ToString().Equals(playerName))
                        {
                            CSteamID consoleID = new CSteamID(Convert.ToUInt64(0));
                            SteamBlacklist.ban(unturnedPlayer.CSteamID, consoleID, reason, duration);
                            //         Provider.ban(unturnedPlayer.CSteamID, reason, duration);
                            UnturnedChat.Say(unturnedPlayer.DisplayName + " has been banned for " + reason + " for " + duration + " seconds.", Color.cyan);
                            Logger.Log(unturnedPlayer.DisplayName + " (" + unturnedPlayer.CSteamID + ") has been banned for " + reason + " for " + duration + " seconds.");
                            return;
                        }
                    }
                    UnturnedChat.Say(caller, "Did not find anyone with the name \"" + playerName + "\".", Color.red);
                }
                else
                {
                    UnturnedChat.Say(caller, "Used that wrong, syntax is /ban (player) (reason) (duration seconds)", Color.red);
                }
            }
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Gets if the player is banned
        /// </summary>
        /// <param name="id"></param>
        public bool IsBanned(string id)
        {
            SteamBlacklistID steamBlacklistId;

            return(SteamBlacklist.checkBanned(new CSteamID(ulong.Parse(id)), 0, out steamBlacklistId)); // TODO: Might need actual player IP
        }