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}"); } } }
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}"); } } }
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; } }
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}"); } } }
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()}"); } }
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(); }
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."); } }