Beispiel #1
0
        public byte [] HandleFetchLib(Stream request, UUID agentID)
        {
            try {
                //MainConsole.Instance.DebugFormat("[InventoryCAPS]: Received FetchLib request for {0}", agentID);
                OSDMap   requestmap       = (OSDMap)OSDParser.DeserializeLLSDXml(HttpServerHandlerHelpers.ReadFully(request));
                OSDArray foldersrequested = (OSDArray)requestmap ["items"];
                OSDMap   map = new OSDMap {
                    { "agent_id", OSD.FromUUID(agentID) }
                };
                OSDArray items = new OSDArray();

                foreach (
                    OSDArray item in
                    foldersrequested.Cast <OSDMap> ()
                    .Select(requestedFolders => requestedFolders ["item_id"].AsUUID())
                    .Select(item_id => m_inventoryService.GetOSDItem(UUID.Zero, item_id))
                    .Where(item => item != null && item.Count > 0))
                {
                    items.Add(item [0]);
                }
                map.Add("items", items);

                byte [] response = OSDParser.SerializeLLSDXmlBytes(map);
                map.Clear();
                return(response);
            } catch (Exception ex) {
                MainConsole.Instance.Warn("[InventoryCAPS]: SERIOUS ISSUE! " + ex);
            }

            OSDMap rmap = new OSDMap();

            rmap ["items"] = new OSDArray();
            return(OSDParser.SerializeLLSDXmlBytes(rmap));
        }
        public byte[] HandleFetchInventory(Stream request, UUID AgentID)
        {
            try
            {
                //MainConsole.Instance.DebugFormat("[InventoryCAPS]: Received FetchInventory request for {0}", AgentID);

                OSDMap requestmap = (OSDMap)OSDParser.DeserializeLLSDXml(request);
                if (requestmap["items"].Type == OSDType.Unknown)
                {
                    return(MainServer.BadRequest);
                }
                OSDArray foldersrequested = (OSDArray)requestmap["items"];

                OSDMap map = new OSDMap {
                    { "agent_id", OSD.FromUUID(AgentID) }
                };
                //We have to send the agent_id in the main map as well as all the items

                OSDArray items = new OSDArray();
#if (!ISWIN)
                foreach (OSDMap requestedFolders in foldersrequested)
                {
                    UUID     itemId = requestedFolders["item_id"].AsUUID();
                    OSDArray item   = m_inventoryService.GetItem(itemId);
                    if (item != null && item.Count > 0)
                    {
                        items.Add(item[0]);
                    }
                }
#else
                foreach (OSDArray item in foldersrequested.Cast <OSDMap>().Select(requestedFolders => requestedFolders["item_id"].AsUUID()).Select(item_id => m_inventoryService.GetItem(item_id)).Where(item => item != null && item.Count > 0))
                {
                    items.Add(item[0]);
                }
#endif
                map.Add("items", items);

                byte[] response = OSDParser.SerializeLLSDXmlBytes(map);
                map.Clear();
                return(response);
            }
            catch (Exception ex)
            {
                MainConsole.Instance.Warn("[InventoryCaps]: SERIOUS ISSUE! " + ex);
            }
            OSDMap rmap = new OSDMap();
            rmap["items"] = new OSDArray();
            return(OSDParser.SerializeLLSDXmlBytes(rmap));
        }
Beispiel #3
0
        public static OSD LandStatReply(LandStatReplyMessage statReplyMessage)
        {
            OSDMap message = new OSDMap {
                { "message", OSD.FromString("LandStatReply") }
            };
            OSD      message_body = statReplyMessage.Serialize();
            OSDArray m            = (OSDArray)((OSDMap)message_body) ["DataExtended"];
            int      num          = 0;

            foreach (OSDMap innerMap in m.Cast <OSDMap>())
            {
                innerMap ["TimeStamp"] =
                    OSD.FromUInteger((uint)Util.ToUnixTime(statReplyMessage.ReportDataBlocks [num].TimeStamp));
                num++;
            }
            message.Add("body", message_body);
            return(message);
        }
        public byte [] HandleFetchInventory(Stream request, UUID agentID)
        {
            try {
                // MainConsole.Instance.DebugFormat("[InventoryCAPS]: Received FetchInventory request for {0}", agentID);
                OSDMap requestmap = (OSDMap)OSDParser.DeserializeLLSDXml(HttpServerHandlerHelpers.ReadFully(request));
                if (requestmap ["items"].Type == OSDType.Unknown)
                {
                    MainConsole.Instance.Error("[InventoryCAPS]: Call to 'FetchInventory' with missing 'items' parameter");
                    return(MainServer.BadRequest);
                }

                OSDArray foldersrequested = (OSDArray)requestmap ["items"];
                OSDMap   map = new OSDMap {
                    { "agent_id", OSD.FromUUID(agentID) }
                };
                // We have to send the agent_id in the main map as well as all the items

                OSDArray items = new OSDArray();
                foreach (
                    OSDArray item in
                    foldersrequested.Cast <OSDMap> ()
                    .Select(requestedFolders => requestedFolders ["item_id"].AsUUID())
                    .Select(item_id => m_inventoryService.GetOSDItem(m_agentID, item_id))
                    .Where(item => item != null && item.Count > 0))
                {
                    items.Add(item [0]);
                }
                map.Add("items", items);

                byte [] response = OSDParser.SerializeLLSDXmlBytes(map);
                map.Clear();
                return(response);
            } catch (Exception ex) {
                MainConsole.Instance.Warn("[InventoryCAPS]: SERIOUS ISSUE! " + ex);
            }

            OSDMap rmap = new OSDMap();

            rmap ["items"] = new OSDArray();
            return(OSDParser.SerializeLLSDXmlBytes(rmap));
        }
Beispiel #5
0
        public static OSD ParcelObjectOwnersReply(ParcelObjectOwnersReplyMessage parcelPropertiesMessage)
        {
            OSDMap message = new OSDMap {
                { "message", OSD.FromString("ParcelObjectOwnersReply") }
            };
            OSD message_body = parcelPropertiesMessage.Serialize();

            if (((OSDMap)message_body).ContainsKey("DataExtended"))
            {
                OSDArray m   = (OSDArray)((OSDMap)message_body) ["DataExtended"];
                int      num = 0;
                foreach (OSDMap innerMap in m.Cast <OSDMap>())
                {
                    innerMap ["TimeStamp"] =
                        OSD.FromUInteger((uint)Util.ToUnixTime(parcelPropertiesMessage.PrimOwnersBlock [num].TimeStamp));
                    num++;
                }
            }
            message.Add("body", message_body);
            return(message);
        }
Beispiel #6
0
        public static bool GetGenericEntries(UUID ownerID, string type, string m_ServerURI,
                                             out Dictionary <string, OSDMap> maps)
        {
            NameValueCollection requestArgs = new NameValueCollection
            {
                { "RequestMethod", "GetGenerics" },
                { "OwnerID", ownerID.ToString() },
                { "Type", type }
            };


            OSDMap response = CachedPostRequest(requestArgs, m_ServerURI);

            if (response["Success"].AsBoolean() && response["Entries"] is OSDArray)
            {
                OSDArray entryArray = (OSDArray)response["Entries"];
#if (!ISWIN)
                maps = new Dictionary <string, OSDMap>();
                foreach (OSDMap map in entryArray)
                {
                    maps.Add(map["Key"].AsString(), (OSDMap)OSDParser.DeserializeJson(map["Value"].AsString()));
                }
#else
                maps = entryArray.Cast <OSDMap>().ToDictionary(entryMap => entryMap["Key"].AsString(), entryMap => (OSDMap)OSDParser.DeserializeJson(entryMap["Value"].AsString()));
#endif
                if (maps.Count == 0)
                {
                    //MainConsole.Instance.InfoFormat("[SIMIAN-MUTELIST-CONNECTOR]  No Generics Results");
                }

                return(true);
            }
            else
            {
                maps = null;
                //MainConsole.Instance.WarnFormat("[SIMIAN MUTELIST CONNECTOR]: Error retrieving group info ({0})", response["Message"]);
            }
            return(false);
        }