Example #1
0
        public object GroupBan(string group, string avatar, string state, string token)
        {
            if (tokens.Allow(token, "groups", "GroupBan", handleGetClientIP()) == false)
            {
                return(Failure("Token not accepted", "GroupBan", new [] { group, avatar, state }));
            }
            if (UUID.TryParse(group, out UUID groupuuid) == false)
            {
                return(Failure("Invaild group UUID", "GroupBan", new [] { group, avatar, state }));
            }
            if (bot.MyGroups.ContainsKey(groupuuid) == false)
            {
                return(Failure("Unknown group", "GroupBan", new [] { group, avatar, state }));
            }
            Group G = bot.MyGroups[groupuuid];

            if (G.Powers.HasFlag(GroupPowers.GroupBanAccess) == false)
            {
                return(Failure("Missing group GroupBanAccess power", "GroupBan", new [] { group, avatar, state }));
            }
            if (bool.TryParse(state, out bool banstate) == false)
            {
                return(Failure("Invaild ban state", "GroupBan", new [] { group, avatar, state }));
            }
            ProcessAvatar(avatar);
            if (avataruuid == UUID.Zero)
            {
                return(Failure("avatar lookup", "GroupBan", new [] { group, avatar, state }));
            }
            GroupBanAction action    = GroupBanAction.Unban;
            string         statename = "Unban";

            if (banstate == true)
            {
                action    = GroupBanAction.Ban;
                statename = "Ban";
            }
            bot.GetClient.Groups.RequestBanAction(groupuuid, action, new UUID[] { avataruuid });
            return(BasicReply(statename + " request accepted", "GroupBan", new [] { group, avatar, state }));
        }
        /// <summary>
        /// Request that group of agents be banned or unbanned from the group
        /// </summary>
        /// <param name="groupID">Group ID</param>
        /// <param name="action">Ban/Unban action</param>
        /// <param name="agents">Array of agents UUIDs to ban</param>
        /// <param name="callback">Callback</param>
        public void RequestBanAction(UUID groupID, GroupBanAction action, UUID[] agents, EventHandler<EventArgs> callback)
        {
            Uri uri = GetGroupAPIUri(groupID);
            if (uri == null) return;

            CapsClient req = new CapsClient(uri);
            req.OnComplete += (client, result, error) =>
            {
                if (callback != null) try { callback(this, EventArgs.Empty); }
                    catch { }
            };

            OSDMap OSDRequest = new OSDMap();
            OSDRequest["ban_action"] = (int)action;
            OSDArray banIDs = new OSDArray(agents.Length);
            foreach (var agent in agents)
            {
                banIDs.Add(agent);
            }
            OSDRequest["ban_ids"] = banIDs;

            req.BeginGetResponse(OSDRequest, OSDFormat.Xml, Client.Settings.CAPS_TIMEOUT);
        }
 /// <summary>
 /// Request that group of agents be banned or unbanned from the group
 /// </summary>
 /// <param name="groupID">Group ID</param>
 /// <param name="action">Ban/Unban action</param>
 /// <param name="agents">Array of agents UUIDs to ban</param>
 public void RequestBanAction(UUID groupID, GroupBanAction action, UUID[] agents)
 {
     RequestBanAction(groupID, action, agents, null);
 }