From 1d500a01695a16ca1eda9105f12b1229874dbbb1 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 23 Sep 2018 12:16:40 +0200 Subject: [PATCH] Add Login Security --- Server/Commands/Admin.cs | 18 +++++++++++++++--- Server/Events/Connect.cs | 1 + Server/Events/Disconnect.cs | 23 +++++++++++++++++++++++ Server/Events/Login.cs | 1 + Server/Services/ChatService.cs | 6 ++++++ 5 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 Server/Events/Disconnect.cs diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index 5c615bc2..a45e4e18 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -20,6 +20,7 @@ namespace reallife_gamemode.Server.Commands [Command("o", "~m~Benutzung: ~s~/o [Nachricht]", GreedyArg = true)] public void CmdAdminO(Client player, string message) { + if (ChatService.PlayerLoggedIn(player) == false) return; if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) { ChatService.NotAuthorized(player); @@ -33,6 +34,7 @@ namespace reallife_gamemode.Server.Commands [Command("veh", "~m~Benutzung: ~s~/veh [Fahrzeug] (Farbe 1) (Farbe 2)")] public void CmdAdminVeh(Client player, VehicleHash hash, int color1 = 111, int color2 = 111) { + if (ChatService.PlayerLoggedIn(player) == false) return; if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); @@ -53,6 +55,7 @@ namespace reallife_gamemode.Server.Commands [Command("fixveh")] public void CmdAdminFixveh(Client player) { + if (ChatService.PlayerLoggedIn(player) == false) return; if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); @@ -71,6 +74,7 @@ namespace reallife_gamemode.Server.Commands [Command("delveh")] public void CmdAdminDelveh(Client player) { + if (ChatService.PlayerLoggedIn(player) == false) return; if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); @@ -92,6 +96,7 @@ namespace reallife_gamemode.Server.Commands [Command("goto", "~m~Benutzung: ~s~/goto [Name]")] public void CmdAdminGoto(Client player, string name) { + if (ChatService.PlayerLoggedIn(player) == false) return; if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) { ChatService.NotAuthorized(player); @@ -112,6 +117,7 @@ namespace reallife_gamemode.Server.Commands [Command("gotoxyz", "~m~Benutzung: ~s~/gotoxyz [X] [Y] [Z]")] public void CmdAdminGotoxyz(Client player, float x, float y, float z) { + if (ChatService.PlayerLoggedIn(player) == false) return; if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); @@ -124,6 +130,7 @@ namespace reallife_gamemode.Server.Commands [Command("gethere", "~m~Benutzung: ~s~/goto [Name]")] public void CmdAdminGethere(Client player, string name) { + if (ChatService.PlayerLoggedIn(player) == false) return; if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) { ChatService.NotAuthorized(player); @@ -144,6 +151,7 @@ namespace reallife_gamemode.Server.Commands [Command("ipl", "~m~Benutzung: ~s~/ipl [Load / Remove] [Name]")] public void CmdAdminIpl(Client player, string option, string name) { + if (ChatService.PlayerLoggedIn(player) == false) return; if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); @@ -171,6 +179,7 @@ namespace reallife_gamemode.Server.Commands [Command("giveweapon", "~m~Benutzung: ~s~/giveweapon [Spieler] [Waffe] [Munition]")] public void CmdAdminGiveweapon(Client player, string name, string weapon, int ammo) { + if (ChatService.PlayerLoggedIn(player) == false) return; if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); @@ -204,13 +213,16 @@ namespace reallife_gamemode.Server.Commands [Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip, ~r~Marker, Ped, Pickup, TextLabel, ~g~Vehicle")] public void CmdAdminSave(Client player, string typ) { + if (ChatService.PlayerLoggedIn(player) == false) return; + if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) + { + ChatService.NotAuthorized(player); + return; + } switch (typ) { case "Blip": player.TriggerEvent("saveBlip"); - break; - case "Ped": - break; case "Vehicle": if (player.IsInVehicle) diff --git a/Server/Events/Connect.cs b/Server/Events/Connect.cs index 45e95404..69e1552b 100644 --- a/Server/Events/Connect.cs +++ b/Server/Events/Connect.cs @@ -20,6 +20,7 @@ namespace reallife_gamemode.Server.Events [ServerEvent(Event.PlayerConnected)] public void OnPlayerConnected(Client player) { + player.SetData("isLoggedIn", false); player.Position = new Vector3(-1883.736, -781.4911, -10); player.FreezePosition = true; } diff --git a/Server/Events/Disconnect.cs b/Server/Events/Disconnect.cs new file mode 100644 index 00000000..defec9b7 --- /dev/null +++ b/Server/Events/Disconnect.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Text; +using GTANetworkAPI; + +/** +* @overview Life of German Reallife - Event Login (Login.cs) +* @author VegaZ +* @copyright (c) 2008 - 2018 Life of German +*/ + +namespace reallife_gamemode.Server.Events +{ + class Disconnect : Script + { + [ServerEvent(Event.PlayerDisconnected)] + public void OnPlayerDisconnected(Client player) + { + player.SetData("isLoggedIn", false); + } + + } +} \ No newline at end of file diff --git a/Server/Events/Login.cs b/Server/Events/Login.cs index 1c40ec6c..701f8b2e 100644 --- a/Server/Events/Login.cs +++ b/Server/Events/Login.cs @@ -41,6 +41,7 @@ namespace reallife_gamemode.Server.Events { player.TriggerEvent("loginSuccess"); NAPI.Player.SpawnPlayer(player, Main.DEFAULT_SPAWN_POSITION, Main.DEFAULT_SPAWN_HEADING); + player.SetData("isLoggedIn", true); } } } diff --git a/Server/Services/ChatService.cs b/Server/Services/ChatService.cs index 0ccdfe1f..450105a3 100644 --- a/Server/Services/ChatService.cs +++ b/Server/Services/ChatService.cs @@ -22,5 +22,11 @@ namespace reallife_gamemode.Server.Services { player.SendChatMessage("~r~[FEHLER]~s~ Der Spieler wurde nicht gefunden."); } + + public static bool PlayerLoggedIn(Client player) + { + if(player.GetData("isLoggedIn") == false) player.SendChatMessage("~r~[FEHLER]~s~ Du bist nicht eingeloggt."); + return player.GetData("isLoggedIn"); + } } }