Ejemplo n.º 1
0
        public void CheckIp(Torch.API.IPlayer Player)
        {
            if (Player == null)
            {
                Log.Info($"Cannont check for IP, player in Null");
                return;
            }

            ulong steamid        = Player.SteamId;
            var   steamid_backup = MyEventContext.Current.Sender.Value;

            if (steamid == 0)
            {
                steamid = steamid_backup;
            }

            var state = new MyP2PSessionState();

            Sandbox.Engine.Networking.MyGameService.Peer2Peer.GetSessionState(steamid, ref state);
            var ip = new IPAddress(BitConverter.GetBytes(state.RemoteIP).Reverse().ToArray());

            foreach (var account in PlayersAccounts)
            {
                if (account.KnownIps.Contains(ip.ToString()) && account.Player != Player.Name)
                {
                    Log.Warn($"WARNING! {Player.Name} shares the same IP address as {account.Player}");
                }
            }
        }
Ejemplo n.º 2
0
        public async void SendStatusMessage(string user, string msg, Torch.API.IPlayer obj = null)
        {
            if (Ready && Plugin.Config.StatusChannelId.Length > 0)
            {
                try
                {
                    DiscordChannel chann = Discord.GetChannelAsync(ulong.Parse(Plugin.Config.StatusChannelId)).Result;

                    if (user != null)
                    {
                        if (user.StartsWith("ID:"))
                        {
                            return;
                        }

                        if (obj != null && Plugin.Config.DisplaySteamId)
                        {
                            user = $"{user} ({obj.SteamId.ToString()})";
                        }

                        msg = msg.Replace("{p}", user).Replace("{ts}", TimeZone.CurrentTimeZone.ToLocalTime(DateTime.Now).ToString());
                    }
                    botId = Discord.SendMessageAsync(chann, msg.Replace("/n", "\n")).Result.Author.Id;
                }
                catch (Exception e)
                {
                    SEDiscordBridgePlugin.Log.Error($"SendStatusMessage: {e.Message}");
                }
            }
        }
Ejemplo n.º 3
0
        public void GenerateAccount(Torch.API.IPlayer player)
        {
            ulong             steamid = player.SteamId;
            PlayerAccountData data    = new PlayerAccountData();
            bool found = false;

            foreach (var Account in PlayersAccounts)
            {
                if (Account.SteamID == steamid)
                {
                    found = true;
                    break;
                }
            }

            if (!found)
            {
                Log.Info($"Creating new account object for {player.Name}");
                data.SteamID = steamid;
                data.Player  = player.Name;
                PlayersAccounts.Add(data);
                SaveHomeData();
                return;
            }
        }
Ejemplo n.º 4
0
        public void CheckIp(Torch.API.IPlayer Player)
        {
            var state = new MyP2PSessionState();

            Sandbox.Engine.Networking.MyGameService.Peer2Peer.GetSessionState(Player.SteamId, ref state);
            var ip = new IPAddress(BitConverter.GetBytes(state.RemoteIP).Reverse().ToArray());

            foreach (var account in PlayersAccounts)
            {
                if (account.KnownIps.Contains(ip.ToString()) && account.Player != Player.Name)
                {
                    Log.Warn($"WARNING! {Player.Name} shares the same IP address as {account.Player}");
                }
            }
        }
Ejemplo n.º 5
0
        public void GenerateAccount(Torch.API.IPlayer player)
        {
            try {
                var state = new MyP2PSessionState();
                Sandbox.Engine.Networking.MyGameService.Peer2Peer.GetSessionState(player.SteamId, ref state);
                var ip = new IPAddress(BitConverter.GetBytes(state.RemoteIP).Reverse().ToArray());

                ulong             steamid = player.SteamId;
                PlayerAccountData data    = new PlayerAccountData();
                bool found = false;
                foreach (var Account in PlayersAccounts)
                {
                    if (Account.SteamID == steamid)
                    {
                        if (!Account.KnownIps.Contains(ip.ToString()) && ip.ToString() != "0.0.0.0")
                        {
                            Account.KnownIps.Add(ip.ToString());
                        }

                        if (Account.IdentityID == 0L && !string.IsNullOrEmpty(Account.Player))
                        {
                            Account.IdentityID = Utilities.GetIdentityByNameOrIds(Account.Player)?.IdentityId ?? 0L;
                            UpdatePlayerAccount(Account);
                        }
                        found = true;
                        break;
                    }
                }

                if (!found)
                {
                    Log.Info($"Creating new account object for {player.Name}");
                    data.SteamID = steamid;
                    data.Player  = player.Name;
                    data.Rank    = EssentialsPlugin.Instance.Config.DefaultRank;
                    data.KnownIps.Add(ip.ToString());
                    PlayersAccounts.Add(data);
                    SaveAccountData();
                    return;
                }
            }
            catch (Exception e) {
                Log.Error($"Exception creating account for {player.Name} {e.ToString()}");
            }
        }
Ejemplo n.º 6
0
        public static void LogTime(Torch.API.IPlayer player)
        {
            if (player == null)
            {
                return;
            }
            ulong          steamId = player.SteamId;
            PlayerTimeData data    = new PlayerTimeData();
            bool           found   = false;

            if (PlayerTimes == null)
            {
                PlayerTimes = new List <PlayerTimeData>();
            }
            foreach (var time in PlayerTimes)
            {
                if (time.SteamId != steamId)
                {
                    continue;
                }
                found = true;
                break;
            }

            if (found)
            {
                return;
            }
            BlockLimiter.Instance.Log.Info($"Logging time for player {player.Name}");
            data.SteamId = steamId;
            data.Player  = player.Name;
            var lastLogout = MySession.Static.Players.TryGetIdentity(Utilities.GetPlayerIdFromSteamId(steamId))?.LastLoginTime;

            if (lastLogout != null && DateTime.Now > lastLogout)
            {
                data.FirstLogTime = (DateTime)lastLogout;
            }
            else
            {
                data.FirstLogTime = DateTime.Now;
            }
            PlayerTimes.Add(data);
            SaveTimeData();
        }
Ejemplo n.º 7
0
        public void GenerateAccount(Torch.API.IPlayer player)
        {
            try
            {
                ulong steamid        = 0;
                var   steamid_backup = MyEventContext.Current.Sender.Value;
                System.Net.IPAddress ip;

                if (player == null || player.SteamId == 0)
                {
                    steamid = steamid_backup;
                }
                else
                {
                    steamid = player.SteamId;
                }

                if (steamid != 0)
                {
                    var state = new MyP2PSessionState();
                    Sandbox.Engine.Networking.MyGameService.Peer2Peer.GetSessionState(steamid, ref state);
                    ip = new IPAddress(BitConverter.GetBytes(state.RemoteIP).Reverse().ToArray());
                    if (ip == null)
                    {
                        return;
                    }
                }
                else
                {
                    ip = null;
                }

                // Disconnect client with Ip 0.0.0.0 to prevent SteamLib Crash.
                if (ip != null)
                {
                    if (ip.ToString() == "0.0.0.0")
                    {
                        MyMultiplayer.Static.DisconnectClient(steamid);
                        Log.Info($"Detected IP: {ip} from SteamID {steamid} Client was disconnected");
                    }
                }

                PlayerAccountData data = new PlayerAccountData();
                bool found             = false;

                foreach (var Account in PlayersAccounts)
                {
                    if (Account.SteamID == steamid)
                    {
                        if (!Account.KnownIps.Contains(ip.ToString()) && ip.ToString() != "0.0.0.0")
                        {
                            Account.KnownIps.Add(ip.ToString());
                        }

                        if (Account.IdentityID == 0L && !string.IsNullOrEmpty(Account.Player))
                        {
                            Account.IdentityID = Utilities.GetIdentityByNameOrIds(Account.Player)?.IdentityId ?? 0L;
                            UpdatePlayerAccount(Account);
                        }

                        if (ip != null)
                        {
                            if (!Account.KnownIps.Contains(ip.ToString()) && ip.ToString() != "0.0.0.0")
                            {
                                if (Account != null && Account.KnownIps != null)
                                {
                                    Account.KnownIps.Add(ip.ToString());
                                }
                                else
                                {
                                    Log.Info($"No account KnowIps exist for IP: {ip}");
                                }
                            }
                        }
                        found = true;
                        break;
                    }
                }

                if (!found)
                {
                    if (player == null)
                    {
                        Log.Info($"Cannont Create new account Player is Null");
                        return;
                    }

                    Log.Info($"Creating new account object for {player.Name}");
                    if (steamid != 0)
                    {
                        data.SteamID = steamid;
                    }
                    else
                    {
                        data.SteamID = steamid_backup;
                    }
                    data.Player = player.Name;
                    data.Rank   = EssentialsPlugin.Instance.Config.DefaultRank;
                    if (ip != null)
                    {
                        data.KnownIps.Add(ip.ToString());
                    }
                    PlayersAccounts.Add(data);
                    SaveAccountData();
                    return;
                }
                if (steamid == 0)
                {
                    Log.Info($"Cannont Create new account for player, no steamid or IP detected, maybe next time.");
                }
            }
            catch
            {
                Log.Error($"Creating NEW account for {player.Name}, Player was not found in List.");
            }
        }