using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using GTANetworkAPI; using Microsoft.EntityFrameworkCore; using reallife_gamemode.Model; using reallife_gamemode.Server.Entities; using reallife_gamemode.Server.Extensions; using reallife_gamemode.Server.Services; using reallife_gamemode.Server.Util; /** * @overview Life of German Reallife - Event Login (Login.cs) * @author VegaZ, xSprite * @copyright (c) 2008 - 2018 Life of German */ namespace reallife_gamemode.Server.Events { class Connect : Script { [ServerEvent(Event.PlayerConnected)] public void OnPlayerConnected(Client player) { player.SetData("isLoggedIn", false); player.Position = new Vector3(-1883.736, -781.4911, -10); player.FreezePosition = true; using (var dbContext = new DatabaseContext()) { if(!dbContext.WhitelistEntries.Any(w => w.SocialClubName.ToLower() == player.SocialClubName.ToLower())) { player.TriggerEvent("disableLogin"); string msg2 = "~m~*** " + player.Name + "[" + player.SocialClubName + "] (" + player.Address + ") hat versucht, sich einzuloggen, steht aber nicht auf der Whitelist."; ChatService.BroadcastAdmin(msg2, AdminLevel.ADMIN); NAPI.Util.ConsoleOutput(player.Name + " tried to join without whitelist entry"); player.SendChatMessage("~m~Du stehst nicht auf der Whitelist"); player.Kick(); return; } } string msg = "~m~*** " + player.Name + " [" + player.SocialClubName + "] [ID:" + player.Handle.Value + "] (" + player.Address + ")"; ChatService.BroadcastAdmin(msg, AdminLevel.ADMIN); } [RemoteEvent("IsPlayerBanned")] public void IsPlayerBanned(Client player) { using (var loginUser = new DatabaseContext()) { var user = loginUser.Users.SingleOrDefault(b => b.Name == player.Name); if (user == null) { player.TriggerEvent("showLogin"); return; } if (user.BanId != null) { var dt = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); var bannedUser = loginUser.Bans.SingleOrDefault(u => u.Id == user.BanId); if (bannedUser.Applied == bannedUser.UntilDateTime) { player.SendChatMessage("!{#FF4040}Du wurdest permanent gebannt! [" + bannedUser.Reason + "]"); player.Kick(); } else { var timeStamp = bannedUser.UntilDateTime; int unixTimestamp = (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; if(timeStamp > unixTimestamp) { player.SendChatMessage("Du bist noch bis zum !{#FF4040}" + dt.AddSeconds(timeStamp).ToLocalTime() + " Uhr ~s~gebannt. [" + bannedUser.Reason + "]"); player.Kick(); } else { user.BanId = null; loginUser.SaveChanges(); player.TriggerEvent("showLogin"); } } } else player.TriggerEvent("showLogin"); } } } }