public bool isAllowed(string _steamIdOrUserName, string _permissionNode) { bool allowed = false; string steamId = PlayerUtils.GetSteamID(_steamIdOrUserName); if (_superGroup.Contains(steamId)) { return(true); } if (Users.ContainsKey(steamId)) { PermissionUser user = Users [steamId]; string groupName = user.Group; if (groupName != null && groupName != "") { if (Groups.ContainsKey(groupName)) { allowed = Groups [groupName].Permissions.Get(_permissionNode); } } if (Users [steamId].Permissions.Exists(_permissionNode)) { allowed = Users [steamId].Permissions.Get(_permissionNode); } } else //default group { if (Groups.ContainsKey(this.DefaultGroupName)) { allowed = Groups [this.DefaultGroupName].Permissions.Get(_permissionNode); } } return(allowed); }
public void ProcessUserCommand(List <string> _params, CommandSenderInfo _senderInfo) { string userCommand = ""; if (_params.Count == 1) { userCommand = "list"; } else { userCommand = _params [1].ToLower(); } SDTM.API thisMod = SDTM.API.Instance; string steamIdOrUsername = ""; string steamId = ""; ClientInfo p; switch (userCommand) { case "list": if (SDTM.API.Permissions.isAllowed(_senderInfo.RemoteClientInfo, "permissions.user.list") == false) { SdtdConsole.Instance.Output("[ExPerm] Permission Denied"); return; } if (SDTM.API.Permissions.Users.Count > 0) { foreach (KeyValuePair <string, PermissionUser> kvp in SDTM.API.Permissions.Users) { PermissionUser user = kvp.Value; SdtdConsole.Instance.Output(user.SteamId + "\t" + user.DisplayName + "\t" + user.Group); } } else { SdtdConsole.Instance.Output("[ExPerm] No ExPerm Users found."); } break; case "group": if (SDTM.API.Permissions.isAllowed(_senderInfo.RemoteClientInfo, "permissions.user.setgroup") == false) { SdtdConsole.Instance.Output("[ExPerm] Permission Denied"); return; } if (_params.Count != 4) { SdtdConsole.Instance.Output("[ExPerm] Invalid Parameter Count"); return; } steamIdOrUsername = _params [2]; string groupName = _params [3]; //p = PlayerUtils.GetPlayer (steamIdOrUsername); p = PlayerUtils.GetClientInfo(steamIdOrUsername); if (p == null) { if (SDTM.API.Permissions.Users.ContainsKey(steamIdOrUsername)) { steamId = steamIdOrUsername; } else { //TODO: see if we can load the player by the username SdtdConsole.Instance.Output("[ExPerm] Player not found: " + steamIdOrUsername); return; } } else { steamId = p.playerId; } if (steamId == null || steamId == "") { if (p == null) { SdtdConsole.Instance.Output("[ExPerm] You cannot create an ExPerm User for a player that is not online."); } else { SdtdConsole.Instance.Output("[ExPerm] Player not Found: " + steamIdOrUsername); } return; } PermissionUser userPerm; if (SDTM.API.Permissions.Users.ContainsKey(steamId)) { userPerm = SDTM.API.Permissions.Users [steamId]; } else { userPerm = new PermissionUser(steamId); userPerm.DisplayName = p.playerName; } if (SDTM.API.Permissions.Groups.ContainsKey(groupName) == false) { SdtdConsole.Instance.Output("[ExPerm] Group not Found: " + groupName); return; } userPerm.Group = groupName; SDTM.API.Permissions.Users [steamId] = userPerm; SDTM.API.Permissions.Save(); SdtdConsole.Instance.Output("[ExPerm] Player's Group Updated."); break; case "remove": if (SDTM.API.Permissions.isAllowed(_senderInfo.RemoteClientInfo, "permissions.user.remove") == false) { SdtdConsole.Instance.Output("[ExPerm] Permission Denied"); return; } if (_params.Count != 3) { SdtdConsole.Instance.Output("[ExPerm] Invalid Parameter Count"); return; } steamIdOrUsername = _params [2]; p = PlayerUtils.GetClientInfo(steamIdOrUsername); //PlayerUtils.GetPlayer (steamIdOrUsername); if (p == null) { if (SDTM.API.Permissions.Users.ContainsKey(steamIdOrUsername)) { steamId = steamIdOrUsername; } else { //TODO: see if we can load the player by the username SdtdConsole.Instance.Output("[ExPerm] Player not found: " + steamIdOrUsername); return; } } else { steamId = p.playerId; } if (steamId == null || steamId == "") { if (p == null) { SdtdConsole.Instance.Output("[ExPerm] You cannot remove an ExPerm User for a player that is not online."); } else { SdtdConsole.Instance.Output("[ExPerm] Player not Found: " + steamIdOrUsername); } return; } if (SDTM.API.Permissions.Users.ContainsKey(steamId)) { if (SDTM.API.Permissions.Users.Remove(steamId)) { SDTM.API.Permissions.Save(); SdtdConsole.Instance.Output("[ExPerm] ExPerm Player Data removed"); } else { SdtdConsole.Instance.Output("[ExPerm] Could not remove ExPerm Player Data."); } } break; case "setperm": //experm user setperm chromecide perm.name true if (SDTM.API.Permissions.isAllowed(_senderInfo.RemoteClientInfo, "permissions.user.setperm") == false) { SdtdConsole.Instance.Output("[ExPerm] Permission Denied"); return; } if (_params.Count != 5) { SdtdConsole.Instance.Output("[ExPerm] Invalid Parameter Count"); return; } steamIdOrUsername = _params [2]; p = PlayerUtils.GetClientInfo(steamIdOrUsername); if (p == null) { if (SDTM.API.Permissions.Users.ContainsKey(steamIdOrUsername)) { steamId = steamIdOrUsername; } else { //TODO: see if we can load the player by the username SdtdConsole.Instance.Output("[ExPerm] Player not found: " + steamIdOrUsername); return; } } else { steamId = p.playerId; } SdtdConsole.Instance.Output("STEAM ID:" + steamId); if (steamId == null || steamId == "") { if (p == null) { SdtdConsole.Instance.Output("[ExPerm] You cannot remove an ExPerm User for a player that is not online."); } else { SdtdConsole.Instance.Output("[ExPerm] Player not Found: " + steamIdOrUsername); } return; } string permNode = _params [3]; bool bIsAllowed = _params [4].ToLower() == "true" ? true : false; if (SDTM.API.Permissions.Users.ContainsKey(steamId)) { PermissionUser setPermUser = SDTM.API.Permissions.Users [steamId]; if (setPermUser.Permissions.Set(permNode, bIsAllowed)) { SDTM.API.Permissions.Save(); SdtdConsole.Instance.Output("[ExPerm] Permission set Successfully."); } else { SdtdConsole.Instance.Output("[ExPerm] Could not set User Permission."); } } else { PermissionUser newUser = new PermissionUser(steamId); newUser.Permissions.Set(permNode, bIsAllowed); SDTM.API.Permissions.Users.Add(steamId, newUser); SDTM.API.Permissions.Save(); SdtdConsole.Instance.Output("[ExPerm] Permission set Successfully."); } break; case "removeperm": if (SDTM.API.Permissions.isAllowed(_senderInfo.RemoteClientInfo, "permissions.user.removeperm") == false) { SdtdConsole.Instance.Output("[ExPerm] Permission Denied"); return; } if (_params.Count != 4) { SdtdConsole.Instance.Output("[ExPerm] Invalid Parameter Count"); return; } steamIdOrUsername = _params [2]; p = PlayerUtils.GetClientInfo(steamIdOrUsername); if (p == null) { if (SDTM.API.Permissions.Users.ContainsKey(steamIdOrUsername)) { steamId = steamIdOrUsername; } else { //TODO: see if we can load the player by the username SdtdConsole.Instance.Output("[ExPerm] Player not found: " + steamIdOrUsername); return; } } else { steamId = p.playerId; } SdtdConsole.Instance.Output("STEAM ID:" + steamId); if (steamId == null || steamId == "") { if (p == null) { SdtdConsole.Instance.Output("[ExPerm] You cannot remove an ExPerm User for a player that is not online."); } else { SdtdConsole.Instance.Output("[ExPerm] Player not Found: " + steamIdOrUsername); } return; } string sPermNode = _params [3]; if (SDTM.API.Permissions.Users.ContainsKey(steamId)) { PermissionUser setPermUser = SDTM.API.Permissions.Users [steamId]; if (setPermUser.Permissions.Remove(sPermNode)) { SDTM.API.Permissions.Save(); SdtdConsole.Instance.Output("[ExPerm] Permission removed Successfully."); } else { SdtdConsole.Instance.Output("[ExPerm] Could not remove User Permission."); } } else { SdtdConsole.Instance.Output("[ExPerm] Player not found: " + steamIdOrUsername); } break; case "clearperms": if (SDTM.API.Permissions.isAllowed(_senderInfo.RemoteClientInfo, "permissions.user.removeperm") == false) { SdtdConsole.Instance.Output("[ExPerm] Permission Denied"); return; } if (_params.Count != 3) { SdtdConsole.Instance.Output("[ExPerm] Invalid Parameter Count"); return; } steamIdOrUsername = _params [2]; p = PlayerUtils.GetClientInfo(steamIdOrUsername); if (p == null) { if (SDTM.API.Permissions.Users.ContainsKey(steamIdOrUsername)) { steamId = steamIdOrUsername; } else { //TODO: see if we can load the player by the username SdtdConsole.Instance.Output("[ExPerm] Player not found: " + steamIdOrUsername); return; } } else { steamId = p.playerId; } if (steamId == null || steamId == "") { if (p == null) { SdtdConsole.Instance.Output("[ExPerm] You cannot Clear Permissions for a player that is not online."); } else { SdtdConsole.Instance.Output("[ExPerm] Player not Found: " + steamIdOrUsername); } return; } if (SDTM.API.Permissions.Users.ContainsKey(steamId)) { PermissionUser setPermUser = SDTM.API.Permissions.Users [steamId]; if (setPermUser.Permissions.RemoveAll()) { SDTM.API.Permissions.Save(); SdtdConsole.Instance.Output("[ExPerm] Permission Cleared Successfully."); } else { SdtdConsole.Instance.Output("[ExPerm] Could not clear User Permission."); } } else { SdtdConsole.Instance.Output("[ExPerm] Player not found: " + steamIdOrUsername); } break; case "test": if (SDTM.API.Permissions.isAllowed(_senderInfo.RemoteClientInfo, "permissions.user.test") == false) { SdtdConsole.Instance.Output("[ExPerm] Permission Denied"); return; } bool allowed = API.Permissions.isAllowed(_params [2], _params [3]); SdtdConsole.Instance.Output("Allowed: " + (allowed?"Yes":"No")); break; case "info": steamIdOrUsername = _params [2]; p = PlayerUtils.GetClientInfo(steamIdOrUsername); if (p == null) { if (SDTM.API.Permissions.Users.ContainsKey(steamIdOrUsername)) { steamId = steamIdOrUsername; } else { //TODO: see if we can load the player by the username SdtdConsole.Instance.Output("[ExPerm] Player not found: " + steamIdOrUsername); return; } } else { steamId = p.playerId; SdtdConsole.Instance.Output("STEAM ID:" + steamId); } if (steamId == null || steamId == "") { SdtdConsole.Instance.Output("[ExPerm] Player not Found: " + steamIdOrUsername); return; } if (SDTM.API.Permissions.Users.ContainsKey(steamId)) { PermissionUser userInfo = SDTM.API.Permissions.Users [steamId]; if (userInfo == null) { SdtdConsole.Instance.Output("[ExPerm] No user information for: " + steamId); return; } SdtdConsole.Instance.Output("[ExPerm] ExPerm User Information"); SdtdConsole.Instance.Output("SteamID: " + userInfo.SteamId); SdtdConsole.Instance.Output("Display: " + userInfo.DisplayName); SdtdConsole.Instance.Output("Group: " + (userInfo.Group == ""?"No Group":userInfo.Group)); SdtdConsole.Instance.Output("Permissions"); Dictionary <string, bool> perms = userInfo.Permissions.GetAll(); foreach (KeyValuePair <string, bool> kvp in perms) { SdtdConsole.Instance.Output(kvp.Key + " - " + (kvp.Value == true?"Allowed":"Denied")); } } else { SdtdConsole.Instance.Output("[ExPerm] Player not Found: " + steamIdOrUsername); } break; } }
public static void SetPosition(EntityPlayer p, Vector3 destPos) { ClientInfo ci = PlayerUtils.GetClientInfo(p.entityId.ToString()); SetPosition(ci, destPos); }