コード例 #1
0
        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);
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        public static void SetPosition(EntityPlayer p, Vector3 destPos)
        {
            ClientInfo ci = PlayerUtils.GetClientInfo(p.entityId.ToString());

            SetPosition(ci, destPos);
        }