clockwerk-opensim – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 vero 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  
28 using System;
29 using System.Collections;
30 using System.Reflection;
31 using log4net;
32 using Nini.Config;
33 using Mono.Addins;
34 using OpenMetaverse;
35 using OpenMetaverse.StructuredData;
36 using OpenSim.Framework;
37 using OpenSim.Framework.Servers.HttpServer;
38 using OpenSim.Region.Framework.Interfaces;
39 using OpenSim.Region.Framework.Scenes;
40 using OpenSim.Services.Interfaces;
41 using Caps = OpenSim.Framework.Capabilities.Caps;
42  
43 namespace OpenSim.Region.ClientStack.Linden
44 {
45 /// <summary>
46 /// MeshUploadFlag capability. This is required for uploading Mesh.
47 /// </summary>
48 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "MeshUploadFlagModule")]
49 public class MeshUploadFlagModule : INonSharedRegionModule
50 {
51 // private static readonly ILog m_log =
52 // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
53  
54 /// <summary>
55 /// Is this module enabled?
56 /// </summary>
57 public bool Enabled { get; private set; }
58  
59 private Scene m_scene;
60  
61 #region ISharedRegionModule Members
62  
63 public MeshUploadFlagModule()
64 {
65 Enabled = true;
66 }
67  
68 public void Initialise(IConfigSource source)
69 {
70 IConfig config = source.Configs["Mesh"];
71 if (config == null)
72 {
73 return;
74 }
75 else
76 {
77 Enabled = config.GetBoolean("AllowMeshUpload", Enabled);
78 }
79 }
80  
81 public void AddRegion(Scene s)
82 {
83 if (!Enabled)
84 return;
85  
86 m_scene = s;
87 m_scene.EventManager.OnRegisterCaps += RegisterCaps;
88 }
89  
90 public void RemoveRegion(Scene s)
91 {
92 if (!Enabled)
93 return;
94  
95 m_scene.EventManager.OnRegisterCaps -= RegisterCaps;
96 }
97  
98 public void RegionLoaded(Scene s)
99 {
100 }
101  
102 public void PostInitialise()
103 {
104 }
105  
106 public void Close() { }
107  
108 public string Name { get { return "MeshUploadFlagModule"; } }
109  
110 public Type ReplaceableInterface
111 {
112 get { return null; }
113 }
114  
115 #endregion
116  
117 public void RegisterCaps(UUID agentID, Caps caps)
118 {
119 IRequestHandler reqHandler
120 = new RestHTTPHandler(
121 "GET", "/CAPS/" + UUID.Random(), ht => MeshUploadFlag(ht, agentID), "MeshUploadFlag", agentID.ToString());
122  
123 caps.RegisterHandler("MeshUploadFlag", reqHandler);
124  
125 }
126  
127 private Hashtable MeshUploadFlag(Hashtable mDhttpMethod, UUID agentID)
128 {
129 // m_log.DebugFormat("[MESH UPLOAD FLAG MODULE]: MeshUploadFlag request");
130  
131 OSDMap data = new OSDMap();
132 ScenePresence sp = m_scene.GetScenePresence(agentID);
133 data["username"] = sp.Firstname + "." + sp.Lastname;
134 data["display_name_next_update"] = new OSDDate(DateTime.Now);
135 data["legacy_first_name"] = sp.Firstname;
136 data["mesh_upload_status"] = "valid";
137 data["display_name"] = sp.Firstname + " " + sp.Lastname;
138 data["legacy_last_name"] = sp.Lastname;
139 data["id"] = agentID;
140 data["is_display_name_default"] = true;
141  
142 //Send back data
143 Hashtable responsedata = new Hashtable();
144 responsedata["int_response_code"] = 200;
145 responsedata["content_type"] = "text/plain";
146 responsedata["keepalive"] = false;
147 responsedata["str_response_string"] = OSDParser.SerializeLLSDXmlString(data);
148 return responsedata;
149 }
150 }
151 }