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); }