aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/Linden/Caps
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden/Caps')
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs92
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/GetDisplayNamesModule.cs143
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs1
3 files changed, 93 insertions, 143 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
index 60bfaa5..032104d 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
@@ -29,9 +29,11 @@ using System;
29using System.Timers; 29using System.Timers;
30using System.Collections; 30using System.Collections;
31using System.Collections.Generic; 31using System.Collections.Generic;
32using System.Collections.Specialized;
32using System.IO; 33using System.IO;
33using System.Reflection; 34using System.Reflection;
34using System.Text; 35using System.Text;
36using System.Web;
35 37
36using OpenMetaverse; 38using OpenMetaverse;
37using OpenMetaverse.StructuredData; 39using OpenMetaverse.StructuredData;
@@ -125,6 +127,8 @@ namespace OpenSim.Region.ClientStack.Linden
125 127
126 private bool m_AllowCapHomeLocation = true; 128 private bool m_AllowCapHomeLocation = true;
127 private bool m_AllowCapGroupMemberData = true; 129 private bool m_AllowCapGroupMemberData = true;
130 private IUserManagement m_UserManager;
131
128 132
129 private enum FileAgentInventoryState : int 133 private enum FileAgentInventoryState : int
130 { 134 {
@@ -196,6 +200,9 @@ namespace OpenSim.Region.ClientStack.Linden
196 200
197 m_assetService = m_Scene.AssetService; 201 m_assetService = m_Scene.AssetService;
198 m_regionName = m_Scene.RegionInfo.RegionName; 202 m_regionName = m_Scene.RegionInfo.RegionName;
203 m_UserManager = m_Scene.RequestModuleInterface<IUserManagement>();
204 if (m_UserManager == null)
205 m_log.Error("[CAPS]: GetDisplayNames disabled because user management component not found");
199 206
200 RegisterHandlers(); 207 RegisterHandlers();
201 208
@@ -229,6 +236,7 @@ namespace OpenSim.Region.ClientStack.Linden
229 236
230 RegisterRegionServiceHandlers(); 237 RegisterRegionServiceHandlers();
231 RegisterInventoryServiceHandlers(); 238 RegisterInventoryServiceHandlers();
239 RegisterOtherHandlers();
232 } 240 }
233 241
234 public void RegisterRegionServiceHandlers() 242 public void RegisterRegionServiceHandlers()
@@ -314,6 +322,22 @@ namespace OpenSim.Region.ClientStack.Linden
314 } 322 }
315 } 323 }
316 324
325 public void RegisterOtherHandlers()
326 {
327 try
328 {
329 if (m_UserManager != null)
330 {
331 IRequestHandler GetDisplayNamesHandler = new RestStreamHandler(
332 "GET", GetNewCapPath(), GetDisplayNames, "GetDisplayNames", null);
333 m_HostCapsObj.RegisterHandler("GetDisplayNames", GetDisplayNamesHandler);
334 }
335 }
336 catch (Exception e)
337 {
338 m_log.Error("[CAPS]: " + e.ToString());
339 }
340 }
317 /// <summary> 341 /// <summary>
318 /// Construct a client response detailing all the capabilities this server can provide. 342 /// Construct a client response detailing all the capabilities this server can provide.
319 /// </summary> 343 /// </summary>
@@ -1022,6 +1046,7 @@ namespace OpenSim.Region.ClientStack.Linden
1022 prim.OwnerID = owner_id; 1046 prim.OwnerID = owner_id;
1023 prim.GroupID = UUID.Zero; 1047 prim.GroupID = UUID.Zero;
1024 prim.LastOwnerID = creatorID; 1048 prim.LastOwnerID = creatorID;
1049 prim.RezzerID = creatorID;
1025 prim.CreationDate = Util.UnixTimeSinceEpoch(); 1050 prim.CreationDate = Util.UnixTimeSinceEpoch();
1026 1051
1027 if (grp == null) 1052 if (grp == null)
@@ -1069,6 +1094,7 @@ namespace OpenSim.Region.ClientStack.Linden
1069 { 1094 {
1070 grp = new SceneObjectGroup(prim); 1095 grp = new SceneObjectGroup(prim);
1071 grp.LastOwnerID = creatorID; 1096 grp.LastOwnerID = creatorID;
1097 grp.RezzerID = creatorID;
1072 } 1098 }
1073 else 1099 else
1074 grp.AddPart(prim); 1100 grp.AddPart(prim);
@@ -1794,6 +1820,72 @@ namespace OpenSim.Region.ClientStack.Linden
1794 response = OSDParser.SerializeLLSDXmlString(resp); 1820 response = OSDParser.SerializeLLSDXmlString(resp);
1795 return response; 1821 return response;
1796 } 1822 }
1823
1824 public string GetDisplayNames(string request, string path,
1825 string param, IOSHttpRequest httpRequest,
1826 IOSHttpResponse httpResponse)
1827 {
1828 httpResponse.StatusCode = (int)System.Net.HttpStatusCode.Gone;
1829 httpResponse.ContentType = "text/plain";
1830
1831 ScenePresence sp = m_Scene.GetScenePresence(m_AgentID);
1832 if(sp == null || sp.IsDeleted)
1833 return "";
1834
1835 if(sp.IsInTransit)
1836 {
1837 httpResponse.StatusCode = (int)System.Net.HttpStatusCode.ServiceUnavailable;
1838 httpResponse.AddHeader("Retry-After","30");
1839 return "";
1840 }
1841
1842 NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query);
1843 string[] ids = query.GetValues("ids");
1844
1845
1846 Dictionary<UUID,string> names = m_UserManager.GetUsersNames(ids);
1847
1848 OSDMap osdReply = new OSDMap();
1849 OSDArray agents = new OSDArray();
1850
1851 osdReply["agents"] = agents;
1852 foreach (KeyValuePair<UUID,string> kvp in names)
1853 {
1854 if (string.IsNullOrEmpty(kvp.Value))
1855 continue;
1856 if(kvp.Key == UUID.Zero)
1857 continue;
1858
1859 string[] parts = kvp.Value.Split(new char[] {' '});
1860 OSDMap osdname = new OSDMap();
1861 if(parts[0] == "Unknown")
1862 {
1863 osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddHours(1));
1864 osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddHours(2));
1865 }
1866 else
1867 {
1868 osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddDays(8));
1869 osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddMonths(1));
1870 }
1871 osdname["display_name"] = OSD.FromString(kvp.Value);
1872 osdname["legacy_first_name"] = parts[0];
1873 osdname["legacy_last_name"] = parts[1];
1874 osdname["username"] = OSD.FromString(kvp.Value);
1875 osdname["id"] = OSD.FromUUID(kvp.Key);
1876 osdname["is_display_name_default"] = OSD.FromBoolean(true);
1877
1878 agents.Add(osdname);
1879 }
1880
1881 // Full content request
1882 httpResponse.StatusCode = (int)System.Net.HttpStatusCode.OK;
1883 //httpResponse.ContentLength = ??;
1884 httpResponse.ContentType = "application/llsd+xml";
1885
1886 string reply = OSDParser.SerializeLLSDXmlString(osdReply);
1887 return reply;
1888 }
1797 } 1889 }
1798 1890
1799 public class AssetUploader 1891 public class AssetUploader
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/GetDisplayNamesModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/GetDisplayNamesModule.cs
deleted file mode 100644
index bf559d3..0000000
--- a/OpenSim/Region/ClientStack/Linden/Caps/GetDisplayNamesModule.cs
+++ /dev/null
@@ -1,143 +0,0 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections;
30using System.Collections.Specialized;
31using System.Drawing;
32using System.Drawing.Imaging;
33using System.Reflection;
34using System.IO;
35using System.Web;
36using log4net;
37using Nini.Config;
38using Mono.Addins;
39using OpenMetaverse;
40using OpenMetaverse.StructuredData;
41using OpenMetaverse.Imaging;
42using OpenSim.Framework;
43using OpenSim.Framework.Servers;
44using OpenSim.Framework.Servers.HttpServer;
45using OpenSim.Region.Framework.Interfaces;
46using OpenSim.Region.Framework.Scenes;
47using OpenSim.Services.Interfaces;
48using Caps = OpenSim.Framework.Capabilities.Caps;
49using OpenSim.Capabilities.Handlers;
50
51namespace OpenSim.Region.ClientStack.Linden
52{
53
54 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "GetDisplayNamesModule")]
55 public class GetDisplayNamesModule : INonSharedRegionModule
56 {
57 private static readonly ILog m_log =
58 LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
59
60 protected Scene m_scene;
61 protected IUserManagement m_UserManager;
62
63 protected bool m_Enabled = false;
64
65 protected string m_URL;
66
67 #region ISharedRegionModule Members
68
69 public virtual void Initialise(IConfigSource source)
70 {
71 IConfig config = source.Configs["ClientStack.LindenCaps"];
72 if (config == null)
73 return;
74
75 m_URL = config.GetString("Cap_GetDisplayNames", string.Empty);
76 if (m_URL != string.Empty)
77 m_Enabled = true;
78 }
79
80 public virtual void AddRegion(Scene s)
81 {
82 if (!m_Enabled)
83 return;
84
85 m_scene = s;
86 }
87
88 public virtual void RemoveRegion(Scene s)
89 {
90 if (!m_Enabled)
91 return;
92
93 m_scene.EventManager.OnRegisterCaps -= RegisterCaps;
94 m_scene = null;
95 }
96
97 public virtual void RegionLoaded(Scene s)
98 {
99 if (!m_Enabled)
100 return;
101
102 m_UserManager = m_scene.RequestModuleInterface<IUserManagement>();
103 m_scene.EventManager.OnRegisterCaps += RegisterCaps;
104 }
105
106 public virtual void PostInitialise()
107 {
108 }
109
110 public virtual void Close() { }
111
112 public virtual string Name { get { return "GetDisplayNamesModule"; } }
113
114 public virtual Type ReplaceableInterface
115 {
116 get { return null; }
117 }
118
119 #endregion
120
121 public virtual void RegisterCaps(UUID agentID, Caps caps)
122 {
123 if (m_URL == "localhost")
124 {
125 string capUrl = "/CAPS/" + UUID.Random() + "/";
126// m_log.DebugFormat("[GET_DISPLAY_NAMES]: {0} in region {1}", capUrl, m_scene.RegionInfo.RegionName);
127 caps.RegisterHandler(
128 "GetDisplayNames",
129 new GetDisplayNamesHandler(capUrl, m_UserManager, "GetDisplayNames", agentID.ToString()));
130 }
131 else
132 {
133// m_log.DebugFormat("[GETTEXTURE]: {0} in region {1}", m_URL, m_scene.RegionInfo.RegionName);
134 IExternalCapsModule handler = m_scene.RequestModuleInterface<IExternalCapsModule>();
135 if (handler != null)
136 handler.RegisterExternalUserCapsHandler(agentID,caps,"GetDisplayNames", m_URL);
137 else
138 caps.RegisterHandler("GetDisplayNames", m_URL);
139 }
140 }
141
142 }
143}
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs
index 769fe28..713125c 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs
@@ -284,6 +284,7 @@ namespace OpenSim.Region.ClientStack.Linden
284 prim.OwnerID = AgentId; 284 prim.OwnerID = AgentId;
285 prim.GroupID = obj.GroupID; 285 prim.GroupID = obj.GroupID;
286 prim.LastOwnerID = prim.OwnerID; 286 prim.LastOwnerID = prim.OwnerID;
287 prim.RezzerID = AgentId;
287 prim.CreationDate = Util.UnixTimeSinceEpoch(); 288 prim.CreationDate = Util.UnixTimeSinceEpoch();
288 prim.Name = obj.Name; 289 prim.Name = obj.Name;
289 prim.Description = ""; 290 prim.Description = "";