public void RemovePermission(ClientPermissions permission) { if (this.Permissions.HasFlag(permission)) { this.Permissions &= ~permission; } }
public SavedClientPermission(string name, string ip, ClientPermissions permissions) { this.Name = name; this.IP = ip; this.Permissions = permissions; }
public SavedClientPermission(string name, IPAddress ip, ClientPermissions permissions, List <DebugConsole.Command> permittedCommands) { this.Name = name; this.IP = ip.IsIPv4MappedToIPv6 ? ip.MapToIPv4().ToString() : ip.ToString(); this.Permissions = permissions; this.PermittedCommands = permittedCommands; }
public SavedClientPermission(string name, string endpoint, ClientPermissions permissions, List <DebugConsole.Command> permittedCommands) { this.Name = name; this.EndPoint = endpoint; this.Permissions = permissions; this.PermittedCommands = permittedCommands; }
public static void ReadPermissions(IReadMessage inc, out ClientPermissions permissions, out List <DebugConsole.Command> permittedCommands) { UInt16 permissionsInt = inc.ReadUInt16(); permissions = ClientPermissions.None; permittedCommands = new List <DebugConsole.Command>(); try { permissions = (ClientPermissions)permissionsInt; } catch (InvalidCastException) { return; } if (permissions.HasFlag(ClientPermissions.ConsoleCommands)) { UInt16 commandCount = inc.ReadUInt16(); for (int i = 0; i < commandCount; i++) { string commandName = inc.ReadString(); var consoleCommand = DebugConsole.Commands.Find(c => c.names.Contains(commandName)); if (consoleCommand != null) { permittedCommands.Add(consoleCommand); } } } }
public void GivePermission(ClientPermissions permission) { if (!this.Permissions.HasFlag(permission)) { this.Permissions |= permission; } }
public SavedClientPermission(string name, string ip, ClientPermissions permissions, List <DebugConsole.Command> permittedCommands) { this.Name = name; this.IP = ip; this.Permissions = permissions; this.PermittedCommands = permittedCommands; }
public SavedClientPermission(string name, ulong steamID, ClientPermissions permissions, List <DebugConsole.Command> permittedCommands) { this.Name = name; this.SteamID = steamID; this.Permissions = permissions; this.PermittedCommands = permittedCommands; }
public void ReadPermissions(IReadMessage inc) { ClientPermissions permissions = ClientPermissions.None; List <DebugConsole.Command> permittedCommands = new List <DebugConsole.Command>(); ReadPermissions(inc, out permissions, out permittedCommands); SetPermissions(permissions, permittedCommands); }
public void SetPermissions(ClientPermissions permissions, List <DebugConsole.Command> permittedConsoleCommands) { if (GameMain.Client == null) { return; } Permissions = permissions; PermittedConsoleCommands = new List <DebugConsole.Command>(permittedConsoleCommands); }
public bool HasPermission(ClientPermissions permission) { if (GameMain.Client == null) { return(false); } return(Permissions.HasFlag(permission)); }
public void RemovePermission(ClientPermissions permission) { if (GameMain.Client == null || !GameMain.Client.HasPermission(ClientPermissions.ManagePermissions)) { return; } if (Permissions.HasFlag(permission)) { Permissions &= ~permission; } }
public void SetPermissions(ClientPermissions permissions, List <string> permittedConsoleCommands) { List <DebugConsole.Command> permittedCommands = new List <DebugConsole.Command>(); foreach (string commandName in permittedConsoleCommands) { var consoleCommand = DebugConsole.Commands.Find(c => c.names.Contains(commandName)); if (consoleCommand != null) { permittedCommands.Add(consoleCommand); } } SetPermissions(permissions, permittedCommands); }
/// <summary> /// Method for loading old .txt client permission files to provide backwards compatibility /// </summary> private void LoadClientPermissionsOld(string file) { if (!File.Exists(file)) { return; } string[] lines; try { lines = File.ReadAllLines(file); } catch (Exception e) { DebugConsole.ThrowError("Failed to open client permission file " + ClientPermissionsFile, e); return; } ClientPermissions.Clear(); foreach (string line in lines) { string[] separatedLine = line.Split('|'); if (separatedLine.Length < 3) { continue; } string name = string.Join("|", separatedLine.Take(separatedLine.Length - 2)); string ip = separatedLine[separatedLine.Length - 2]; ClientPermissions permissions = Networking.ClientPermissions.None; if (Enum.TryParse(separatedLine.Last(), out permissions)) { ClientPermissions.Add(new SavedClientPermission(name, ip, permissions, new List <DebugConsole.Command>())); } } }
public void SetPermissions(ClientPermissions permissions, List <DebugConsole.Command> permittedConsoleCommands) { this.Permissions = permissions; this.PermittedConsoleCommands = new List <DebugConsole.Command>(permittedConsoleCommands); }
public void LoadClientPermissions() { ClientPermissions.Clear(); if (!File.Exists(ClientPermissionsFile)) { if (File.Exists("Data/clientpermissions.txt")) { LoadClientPermissionsOld("Data/clientpermissions.txt"); } return; } XDocument doc = XMLExtensions.TryLoadXml(ClientPermissionsFile); foreach (XElement clientElement in doc.Root.Elements()) { string clientName = clientElement.GetAttributeString("name", ""); string clientIP = clientElement.GetAttributeString("ip", ""); string steamIdStr = clientElement.GetAttributeString("steamid", ""); if (string.IsNullOrWhiteSpace(clientName)) { DebugConsole.ThrowError("Error in " + ClientPermissionsFile + " - all clients must have a name and an IP address."); continue; } if (string.IsNullOrWhiteSpace(clientIP) && string.IsNullOrWhiteSpace(steamIdStr)) { DebugConsole.ThrowError("Error in " + ClientPermissionsFile + " - all clients must have an IP address or a Steam ID."); continue; } ClientPermissions permissions = Networking.ClientPermissions.None; List <DebugConsole.Command> permittedCommands = new List <DebugConsole.Command>(); if (clientElement.Attribute("preset") == null) { string permissionsStr = clientElement.GetAttributeString("permissions", ""); if (permissionsStr.ToLowerInvariant() == "all") { foreach (ClientPermissions permission in Enum.GetValues(typeof(ClientPermissions))) { permissions |= permission; } } else if (!Enum.TryParse(permissionsStr, out permissions)) { DebugConsole.ThrowError("Error in " + ClientPermissionsFile + " - \"" + permissionsStr + "\" is not a valid client permission."); continue; } if (permissions.HasFlag(Networking.ClientPermissions.ConsoleCommands)) { foreach (XElement commandElement in clientElement.Elements()) { if (commandElement.Name.ToString().ToLowerInvariant() != "command") { continue; } string commandName = commandElement.GetAttributeString("name", ""); DebugConsole.Command command = DebugConsole.FindCommand(commandName); if (command == null) { DebugConsole.ThrowError("Error in " + ClientPermissionsFile + " - \"" + commandName + "\" is not a valid console command."); continue; } permittedCommands.Add(command); } } } else { string presetName = clientElement.GetAttributeString("preset", ""); PermissionPreset preset = PermissionPreset.List.Find(p => p.Name == presetName); if (preset == null) { DebugConsole.ThrowError("Failed to restore saved permissions to the client \"" + clientName + "\". Permission preset \"" + presetName + "\" not found."); return; } else { permissions = preset.Permissions; permittedCommands = preset.PermittedCommands.ToList(); } } if (!string.IsNullOrEmpty(steamIdStr)) { if (ulong.TryParse(steamIdStr, out ulong steamID)) { ClientPermissions.Add(new SavedClientPermission(clientName, steamID, permissions, permittedCommands)); } else { DebugConsole.ThrowError("Error in " + ClientPermissionsFile + " - \"" + steamIdStr + "\" is not a valid Steam ID."); continue; } } else { ClientPermissions.Add(new SavedClientPermission(clientName, clientIP, permissions, permittedCommands)); } } }
public bool HasPermission(CommandPermissions permissions) { return(ClientPermissions.HasFlag(permissions)); }
public bool MatchesPermissions(ClientPermissions permissions, List <DebugConsole.Command> permittedConsoleCommands) { return(permissions == this.Permissions && PermittedCommands.SequenceEqual(permittedConsoleCommands)); }
public void SetPermissions(ClientPermissions permissions) { this.Permissions = permissions; }
public bool HasPermission(ClientPermissions permission) { return(this.Permissions.HasFlag(permission)); }
public void RemovePermission(ClientPermissions permission) { this.Permissions &= ~permission; }