PageRenderTime 51ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 1ms

/OpenSim/Services/Handlers/AuroraData/AuroraDataServerPostHandler.cs

http://github.com/aurora-sim/Aurora-Sim
C# | 1464 lines | 1132 code | 275 blank | 57 comment | 156 complexity | b549129b796a481b3a553e33a7525790 MD5 | raw file
Possible License(s): MIT, LGPL-3.0

Large files files are truncated, but you can click here to view the full file

  1. /*
  2. * Copyright (c) Contributors, http://aurora-sim.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 Aurora-Sim 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. using System;
  28. using System.Collections.Generic;
  29. using System.IO;
  30. using System.Linq;
  31. using System.Reflection;
  32. using System.Text;
  33. using System.Xml;
  34. using Aurora.DataManager;
  35. using Aurora.Framework;
  36. using Aurora.Framework.Servers.HttpServer;
  37. using Aurora.Simulation.Base;
  38. using OpenMetaverse;
  39. using OpenSim.Services.Interfaces;
  40. namespace OpenSim.Services
  41. {
  42. public class AuroraDataServerPostHandler : BaseStreamHandler
  43. {
  44. private readonly AbuseReportsHandler AbuseHandler = new AbuseReportsHandler();
  45. private readonly AgentInfoHandler AgentHandler = new AgentInfoHandler();
  46. private readonly AssetHandler AssetHandler = new AssetHandler();
  47. private readonly DirectoryInfoHandler DirectoryHandler = new DirectoryInfoHandler();
  48. private readonly GroupsServiceHandler GroupsHandler;
  49. private readonly MuteInfoHandler MuteHandler = new MuteInfoHandler();
  50. private OfflineMessagesInfoHandler OfflineMessagesHandler = new OfflineMessagesInfoHandler();
  51. private TelehubInfoHandler TelehubHandler = new TelehubInfoHandler();
  52. protected string m_SessionID;
  53. protected IRegistryCore m_registry;
  54. public AuroraDataServerPostHandler(string url, string SessionID, IRegistryCore registry) :
  55. base("POST", url)
  56. {
  57. m_SessionID = SessionID;
  58. m_registry = registry;
  59. GroupsHandler = new GroupsServiceHandler(registry);
  60. }
  61. public override byte[] Handle(string path, Stream requestData,
  62. OSHttpRequest httpRequest, OSHttpResponse httpResponse)
  63. {
  64. StreamReader sr = new StreamReader(requestData);
  65. string body = sr.ReadToEnd();
  66. sr.Close();
  67. body = body.Trim();
  68. string method = "";
  69. Dictionary<string, object> request = new Dictionary<string, object>();
  70. try
  71. {
  72. request = WebUtils.ParseQueryString(body);
  73. //if (request.Count == 1)
  74. // request = ServerUtils.ParseXmlResponse(body);
  75. object value = null;
  76. request.TryGetValue("<?xml version", out value);
  77. if (value != null)
  78. request = WebUtils.ParseXmlResponse(body);
  79. if (!request.ContainsKey("METHOD"))
  80. return FailureResult();
  81. method = request["METHOD"].ToString();
  82. IGridRegistrationService urlModule =
  83. m_registry.RequestModuleInterface<IGridRegistrationService>();
  84. switch (method)
  85. {
  86. #region Agents
  87. case "getagent":
  88. if (urlModule != null)
  89. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  90. return FailureResult();
  91. return AgentHandler.GetAgent(request);
  92. #endregion
  93. #region Assets
  94. case "updatelsldata":
  95. if (urlModule != null)
  96. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  97. return FailureResult();
  98. return AssetHandler.UpdateLSLData(request);
  99. case "findlsldata":
  100. if (urlModule != null)
  101. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  102. return FailureResult();
  103. return AssetHandler.FindLSLData(request);
  104. #endregion
  105. #region Mutes
  106. case "getmutelist":
  107. if (urlModule != null)
  108. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  109. return FailureResult();
  110. return MuteHandler.GetMuteList(request);
  111. case "updatemute":
  112. if (urlModule != null)
  113. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  114. return FailureResult();
  115. return MuteHandler.UpdateMute(request);
  116. case "deletemute":
  117. if (urlModule != null)
  118. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  119. return FailureResult();
  120. return MuteHandler.DeleteMute(request);
  121. case "ismuted":
  122. if (urlModule != null)
  123. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  124. return FailureResult();
  125. return MuteHandler.IsMuted(request);
  126. #endregion
  127. #region Search
  128. case "findland":
  129. if (urlModule != null)
  130. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  131. return FailureResult();
  132. return DirectoryHandler.FindLand(request);
  133. case "findlandforsale":
  134. if (urlModule != null)
  135. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  136. return FailureResult();
  137. return DirectoryHandler.FindLandForSale(request);
  138. case "findevents":
  139. if (urlModule != null)
  140. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  141. return FailureResult();
  142. return DirectoryHandler.FindEvents(request);
  143. case "findeventsinregion":
  144. if (urlModule != null)
  145. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  146. return FailureResult();
  147. return DirectoryHandler.FindEventsInRegion(request);
  148. case "findclassifieds":
  149. if (urlModule != null)
  150. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  151. return FailureResult();
  152. return DirectoryHandler.FindClassifieds(request);
  153. case "geteventinfo":
  154. if (urlModule != null)
  155. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  156. return FailureResult();
  157. return DirectoryHandler.GetEventInfo(request);
  158. case "findclassifiedsinregion":
  159. if (urlModule != null)
  160. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  161. return FailureResult();
  162. return DirectoryHandler.FindClassifiedsInRegion(request);
  163. #endregion
  164. #region Groups
  165. case "CreateGroup":
  166. if (urlModule != null)
  167. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  168. return FailureResult();
  169. return GroupsHandler.CreateGroup(request);
  170. case "AddGroupNotice":
  171. if (urlModule != null)
  172. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  173. return FailureResult();
  174. return GroupsHandler.AddGroupNotice(request);
  175. case "SetAgentActiveGroup":
  176. if (urlModule != null)
  177. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  178. return FailureResult();
  179. return GroupsHandler.SetAgentActiveGroup(request);
  180. case "SetAgentGroupSelectedRole":
  181. if (urlModule != null)
  182. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  183. return FailureResult();
  184. return GroupsHandler.SetAgentGroupSelectedRole(request);
  185. case "AddAgentToGroup":
  186. if (urlModule != null)
  187. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  188. return FailureResult();
  189. return GroupsHandler.AddAgentToGroup(request);
  190. case "AddRoleToGroup":
  191. if (urlModule != null)
  192. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  193. return FailureResult();
  194. return GroupsHandler.AddRoleToGroup(request);
  195. case "UpdateGroup":
  196. if (urlModule != null)
  197. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  198. return FailureResult();
  199. return GroupsHandler.UpdateGroup(request);
  200. case "RemoveRoleFromGroup":
  201. if (urlModule != null)
  202. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  203. return FailureResult();
  204. return GroupsHandler.RemoveRoleFromGroup(request);
  205. case "UpdateRole":
  206. if (urlModule != null)
  207. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  208. return FailureResult();
  209. return GroupsHandler.UpdateRole(request);
  210. case "SetAgentGroupInfo":
  211. if (urlModule != null)
  212. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  213. return FailureResult();
  214. return GroupsHandler.SetAgentGroupInfo(request);
  215. case "AddAgentGroupInvite":
  216. if (urlModule != null)
  217. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  218. return FailureResult();
  219. return GroupsHandler.AddAgentGroupInvite(request);
  220. case "RemoveAgentInvite":
  221. if (urlModule != null)
  222. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  223. return FailureResult();
  224. return GroupsHandler.RemoveAgentInvite(request);
  225. case "AddAgentToRole":
  226. if (urlModule != null)
  227. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  228. return FailureResult();
  229. return GroupsHandler.AddAgentToRole(request);
  230. case "RemoveAgentFromRole":
  231. if (urlModule != null)
  232. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  233. return FailureResult();
  234. return GroupsHandler.RemoveAgentFromRole(request);
  235. case "GetGroupRecord":
  236. if (urlModule != null)
  237. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  238. return FailureResult();
  239. return GroupsHandler.GetGroupRecord(request);
  240. case "GetMemberGroupProfile":
  241. if (urlModule != null)
  242. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  243. return FailureResult();
  244. return GroupsHandler.GetMemberGroupProfile(request);
  245. case "GetGroupMembershipData":
  246. if (urlModule != null)
  247. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  248. return FailureResult();
  249. return GroupsHandler.GetGroupMembershipData(request);
  250. case "RemoveAgentFromGroup":
  251. if (urlModule != null)
  252. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  253. return FailureResult();
  254. return GroupsHandler.RemoveAgentFromGroup(request);
  255. case "GetAgentActiveGroup":
  256. if (urlModule != null)
  257. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  258. return FailureResult();
  259. return GroupsHandler.GetAgentActiveGroup(request);
  260. case "GetAgentToGroupInvite":
  261. if (urlModule != null)
  262. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  263. return FailureResult();
  264. return GroupsHandler.GetAgentToGroupInvite(request);
  265. case "GetAgentGroupMemberData":
  266. if (urlModule != null)
  267. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  268. return FailureResult();
  269. return GroupsHandler.GetAgentGroupMemberData(request);
  270. case "GetGroupNotice":
  271. if (urlModule != null)
  272. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  273. return FailureResult();
  274. return GroupsHandler.GetGroupNotice(request);
  275. case "GetAgentGroupMemberships":
  276. if (urlModule != null)
  277. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  278. return FailureResult();
  279. return GroupsHandler.GetAgentGroupMemberships(request);
  280. case "GetGroupRecords":
  281. if (urlModule != null)
  282. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  283. return FailureResult();
  284. return GroupsHandler.GetGroupRecords(request);
  285. case "FindGroups":
  286. if (urlModule != null)
  287. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  288. return FailureResult();
  289. return GroupsHandler.FindGroups(request);
  290. case "GetAgentGroupRoles":
  291. if (urlModule != null)
  292. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  293. return FailureResult();
  294. return GroupsHandler.GetAgentGroupRoles(request);
  295. case "GetGroupRoles":
  296. if (urlModule != null)
  297. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  298. return FailureResult();
  299. return GroupsHandler.GetGroupRoles(request);
  300. case "GetGroupMembers":
  301. if (urlModule != null)
  302. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  303. return FailureResult();
  304. return GroupsHandler.GetGroupMembers(request);
  305. case "GetGroupRoleMembers":
  306. if (urlModule != null)
  307. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  308. return FailureResult();
  309. return GroupsHandler.GetGroupRoleMembers(request);
  310. case "GetGroupNotices":
  311. if (urlModule != null)
  312. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  313. return FailureResult();
  314. return GroupsHandler.GetGroupNotices(request);
  315. case "GetGroupInvites":
  316. if (urlModule != null)
  317. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low))
  318. return FailureResult();
  319. return GroupsHandler.GetGroupInvites(request);
  320. #endregion
  321. #region Abuse Reports
  322. case "AddAbuseReport":
  323. if (urlModule != null)
  324. if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium))
  325. return FailureResult();
  326. return AbuseHandler.AddAbuseReport(request);
  327. #endregion
  328. }
  329. MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: unknown method {0} request {1}", method.Length, method);
  330. }
  331. catch (Exception e)
  332. {
  333. MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: Exception {0} in " + method, e);
  334. }
  335. return FailureResult();
  336. }
  337. #region Misc
  338. private byte[] FailureResult()
  339. {
  340. return FailureResult(String.Empty);
  341. }
  342. private byte[] FailureResult(string msg)
  343. {
  344. XmlDocument doc = new XmlDocument();
  345. XmlNode xmlnode = doc.CreateNode(XmlNodeType.XmlDeclaration,
  346. "", "");
  347. doc.AppendChild(xmlnode);
  348. XmlElement rootElement = doc.CreateElement("", "ServerResponse",
  349. "");
  350. doc.AppendChild(rootElement);
  351. XmlElement result = doc.CreateElement("", "Result", "");
  352. result.AppendChild(doc.CreateTextNode("Failure"));
  353. rootElement.AppendChild(result);
  354. XmlElement message = doc.CreateElement("", "Message", "");
  355. message.AppendChild(doc.CreateTextNode(msg));
  356. rootElement.AppendChild(message);
  357. return DocToBytes(doc);
  358. }
  359. private byte[] DocToBytes(XmlDocument doc)
  360. {
  361. MemoryStream ms = new MemoryStream();
  362. XmlTextWriter xw = new XmlTextWriter(ms, null) {Formatting = Formatting.Indented};
  363. doc.WriteTo(xw);
  364. xw.Flush();
  365. return ms.ToArray();
  366. }
  367. #endregion
  368. }
  369. public class AgentInfoHandler
  370. {
  371. private readonly IAgentConnector AgentConnector;
  372. public AgentInfoHandler()
  373. {
  374. AgentConnector = DataManager.RequestPlugin<IAgentConnector>("IAgentConnectorLocal");
  375. }
  376. public byte[] GetAgent(Dictionary<string, object> request)
  377. {
  378. UUID principalID = UUID.Zero;
  379. if (request.ContainsKey("PRINCIPALID"))
  380. UUID.TryParse(request["PRINCIPALID"].ToString(), out principalID);
  381. IAgentInfo Agent = AgentConnector.GetAgent(principalID);
  382. Dictionary<string, object> result = new Dictionary<string, object>();
  383. if (Agent == null)
  384. result["result"] = "null";
  385. else
  386. result["result"] = Agent.ToKVP();
  387. string xmlString = WebUtils.BuildXmlResponse(result);
  388. UTF8Encoding encoding = new UTF8Encoding();
  389. return encoding.GetBytes(xmlString);
  390. }
  391. }
  392. public class AssetHandler
  393. {
  394. private readonly IAssetConnector AssetConnector;
  395. public AssetHandler()
  396. {
  397. AssetConnector = DataManager.RequestPlugin<IAssetConnector>("IAssetConnectorLocal");
  398. }
  399. public byte[] FindLSLData(Dictionary<string, object> request)
  400. {
  401. Dictionary<string, object> result = new Dictionary<string, object>();
  402. string token = request["token"].ToString();
  403. string key = request["key"].ToString();
  404. List<string> data = AssetConnector.FindLSLData(token, key);
  405. int i = 0;
  406. foreach (string d in data)
  407. {
  408. result.Add(Util.ConvertDecString(i), d);
  409. i++;
  410. }
  411. string xmlString = WebUtils.BuildXmlResponse(result);
  412. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  413. UTF8Encoding encoding = new UTF8Encoding();
  414. return encoding.GetBytes(xmlString);
  415. }
  416. public byte[] UpdateLSLData(Dictionary<string, object> request)
  417. {
  418. string token = request["token"].ToString();
  419. string key = request["key"].ToString();
  420. string value = request["value"].ToString();
  421. AssetConnector.UpdateLSLData(token, key, value);
  422. return SuccessResult();
  423. }
  424. private byte[] SuccessResult()
  425. {
  426. XmlDocument doc = new XmlDocument();
  427. XmlNode xmlnode = doc.CreateNode(XmlNodeType.XmlDeclaration,
  428. "", "");
  429. doc.AppendChild(xmlnode);
  430. XmlElement rootElement = doc.CreateElement("", "ServerResponse",
  431. "");
  432. doc.AppendChild(rootElement);
  433. XmlElement result = doc.CreateElement("", "Result", "");
  434. result.AppendChild(doc.CreateTextNode("Success"));
  435. rootElement.AppendChild(result);
  436. return DocToBytes(doc);
  437. }
  438. private byte[] DocToBytes(XmlDocument doc)
  439. {
  440. MemoryStream ms = new MemoryStream();
  441. XmlTextWriter xw = new XmlTextWriter(ms, null) {Formatting = Formatting.Indented};
  442. doc.WriteTo(xw);
  443. xw.Flush();
  444. return ms.ToArray();
  445. }
  446. }
  447. public class GroupsServiceHandler
  448. {
  449. private readonly IGroupsServiceConnector GroupsServiceConnector;
  450. private readonly IUserAccountService UserServiceConnector;
  451. public GroupsServiceHandler(IRegistryCore registry)
  452. {
  453. GroupsServiceConnector = DataManager.RequestPlugin<IGroupsServiceConnector>("IGroupsServiceConnectorLocal");
  454. UserServiceConnector = registry.RequestModuleInterface<IUserAccountService>();
  455. }
  456. public byte[] CreateGroup(Dictionary<string, object> request)
  457. {
  458. UUID groupID = UUID.Parse(request["groupID"].ToString());
  459. string name = request["name"].ToString();
  460. string charter = request["charter"].ToString();
  461. bool showInList = bool.Parse(request["showInList"].ToString());
  462. UUID insigniaID = UUID.Parse(request["insigniaID"].ToString());
  463. int membershipFee = int.Parse(request["membershipFee"].ToString());
  464. bool openEnrollment = bool.Parse(request["openEnrollment"].ToString());
  465. bool allowPublish = bool.Parse(request["allowPublish"].ToString());
  466. bool maturePublish = bool.Parse(request["maturePublish"].ToString());
  467. UUID founderID = UUID.Parse(request["founderID"].ToString());
  468. ulong EveryonePowers = ulong.Parse(request["EveryonePowers"].ToString());
  469. UUID OwnerRoleID = UUID.Parse(request["OwnerRoleID"].ToString());
  470. ulong OwnerPowers = ulong.Parse(request["OwnerPowers"].ToString());
  471. GroupsServiceConnector.CreateGroup(groupID, name, charter, showInList,
  472. insigniaID, membershipFee, openEnrollment, allowPublish, maturePublish,
  473. founderID, EveryonePowers, OwnerRoleID, OwnerPowers);
  474. return SuccessResult();
  475. }
  476. public byte[] AddGroupNotice(Dictionary<string, object> request)
  477. {
  478. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  479. UUID groupID = UUID.Parse(request["groupID"].ToString());
  480. UUID noticeID = UUID.Parse(request["noticeID"].ToString());
  481. string fromName = request["fromName"].ToString();
  482. string subject = request["subject"].ToString();
  483. string message = request["message"].ToString();
  484. UUID ItemID = UUID.Parse(request["ItemID"].ToString());
  485. int AssetType = int.Parse(request["AssetType"].ToString());
  486. string ItemName = request["ItemName"].ToString();
  487. GroupsServiceConnector.AddGroupNotice(requestingAgentID, groupID, noticeID, fromName, subject,
  488. message, ItemID, AssetType, ItemName);
  489. return SuccessResult();
  490. }
  491. public byte[] SetAgentActiveGroup(Dictionary<string, object> request)
  492. {
  493. UUID AgentID = UUID.Parse(request["AgentID"].ToString());
  494. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  495. string title = GroupsServiceConnector.SetAgentActiveGroup(AgentID, GroupID);
  496. Dictionary<string, object> result = new Dictionary<string, object>();
  497. result["groupTitle"] = title;
  498. string xmlString = WebUtils.BuildXmlResponse(result);
  499. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  500. UTF8Encoding encoding = new UTF8Encoding();
  501. return encoding.GetBytes(xmlString);
  502. }
  503. public byte[] SetAgentGroupSelectedRole(Dictionary<string, object> request)
  504. {
  505. UUID AgentID = UUID.Parse(request["AgentID"].ToString());
  506. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  507. UUID RoleID = UUID.Parse(request["RoleID"].ToString());
  508. string title = GroupsServiceConnector.SetAgentGroupSelectedRole(AgentID, GroupID, RoleID);
  509. Dictionary<string, object> result = new Dictionary<string, object>();
  510. result["groupTitle"] = title;
  511. string xmlString = WebUtils.BuildXmlResponse(result);
  512. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  513. UTF8Encoding encoding = new UTF8Encoding();
  514. return encoding.GetBytes(xmlString);
  515. }
  516. public byte[] AddAgentToGroup(Dictionary<string, object> request)
  517. {
  518. UUID AgentID = UUID.Parse(request["AgentID"].ToString());
  519. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  520. UUID RoleID = UUID.Parse(request["RoleID"].ToString());
  521. UUID RequestingAgentID = UUID.Parse(request["RequestingAgentID"].ToString());
  522. GroupsServiceConnector.AddAgentToGroup(RequestingAgentID, AgentID, GroupID, RoleID);
  523. return SuccessResult();
  524. }
  525. public byte[] AddRoleToGroup(Dictionary<string, object> request)
  526. {
  527. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  528. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  529. UUID RoleID = UUID.Parse(request["RoleID"].ToString());
  530. string Name = request["Name"].ToString();
  531. string Description = request["Description"].ToString();
  532. string Title = request["Title"].ToString();
  533. ulong Powers = ulong.Parse(request["Powers"].ToString());
  534. GroupsServiceConnector.AddRoleToGroup(requestingAgentID, GroupID, RoleID, Name, Description, Title, Powers);
  535. return SuccessResult();
  536. }
  537. public byte[] UpdateGroup(Dictionary<string, object> request)
  538. {
  539. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  540. UUID groupID = UUID.Parse(request["groupID"].ToString());
  541. string charter = request["charter"].ToString();
  542. int showInList = int.Parse(request["showInList"].ToString());
  543. UUID insigniaID = UUID.Parse(request["insigniaID"].ToString());
  544. int membershipFee = int.Parse(request["membershipFee"].ToString());
  545. int openEnrollment = int.Parse(request["openEnrollment"].ToString());
  546. int allowPublish = int.Parse(request["allowPublish"].ToString());
  547. int maturePublish = int.Parse(request["maturePublish"].ToString());
  548. GroupsServiceConnector.UpdateGroup(requestingAgentID, groupID, charter, showInList, insigniaID,
  549. membershipFee, openEnrollment, allowPublish, maturePublish);
  550. return SuccessResult();
  551. }
  552. public byte[] RemoveRoleFromGroup(Dictionary<string, object> request)
  553. {
  554. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  555. UUID RoleID = UUID.Parse(request["RoleID"].ToString());
  556. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  557. GroupsServiceConnector.RemoveRoleFromGroup(requestingAgentID, RoleID, GroupID);
  558. return SuccessResult();
  559. }
  560. public byte[] UpdateRole(Dictionary<string, object> request)
  561. {
  562. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  563. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  564. UUID RoleID = UUID.Parse(request["RoleID"].ToString());
  565. string Name = request["Name"].ToString();
  566. string Desc = request["Desc"].ToString();
  567. string Title = request["Title"].ToString();
  568. ulong Powers = ulong.Parse(request["Powers"].ToString());
  569. GroupsServiceConnector.UpdateRole(requestingAgentID, GroupID, RoleID, Name, Desc, Title, Powers);
  570. return SuccessResult();
  571. }
  572. public byte[] SetAgentGroupInfo(Dictionary<string, object> request)
  573. {
  574. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  575. UUID AgentID = UUID.Parse(request["AgentID"].ToString());
  576. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  577. int AcceptNotices = int.Parse(request["AcceptNotices"].ToString());
  578. int ListInProfile = int.Parse(request["ListInProfile"].ToString());
  579. GroupsServiceConnector.SetAgentGroupInfo(requestingAgentID, AgentID, GroupID, AcceptNotices, ListInProfile);
  580. return SuccessResult();
  581. }
  582. public byte[] AddAgentGroupInvite(Dictionary<string, object> request)
  583. {
  584. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  585. UUID inviteID = UUID.Parse(request["inviteID"].ToString());
  586. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  587. UUID roleID = UUID.Parse(request["roleID"].ToString());
  588. UUID AgentID = UUID.Parse(request["AgentID"].ToString());
  589. string FromAgentName = request["FromAgentName"].ToString();
  590. GroupsServiceConnector.AddAgentGroupInvite(requestingAgentID, inviteID, GroupID, roleID, AgentID,
  591. FromAgentName);
  592. return SuccessResult();
  593. }
  594. public byte[] RemoveAgentInvite(Dictionary<string, object> request)
  595. {
  596. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  597. UUID inviteID = UUID.Parse(request["inviteID"].ToString());
  598. GroupsServiceConnector.RemoveAgentInvite(requestingAgentID, inviteID);
  599. return SuccessResult();
  600. }
  601. public byte[] AddAgentToRole(Dictionary<string, object> request)
  602. {
  603. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  604. UUID AgentID = UUID.Parse(request["AgentID"].ToString());
  605. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  606. UUID RoleID = UUID.Parse(request["RoleID"].ToString());
  607. GroupsServiceConnector.AddAgentToRole(requestingAgentID, AgentID, GroupID, RoleID);
  608. return SuccessResult();
  609. }
  610. public byte[] RemoveAgentFromRole(Dictionary<string, object> request)
  611. {
  612. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  613. UUID AgentID = UUID.Parse(request["AgentID"].ToString());
  614. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  615. UUID RoleID = UUID.Parse(request["RoleID"].ToString());
  616. GroupsServiceConnector.RemoveAgentFromRole(requestingAgentID, AgentID, GroupID, RoleID);
  617. return SuccessResult();
  618. }
  619. public byte[] GetGroupRecord(Dictionary<string, object> request)
  620. {
  621. Dictionary<string, object> result = new Dictionary<string, object>();
  622. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  623. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  624. string GroupName = "";
  625. if (request.ContainsKey("GroupName"))
  626. GroupName = request["GroupName"].ToString();
  627. GroupRecord r = GroupsServiceConnector.GetGroupRecord(requestingAgentID, GroupID, GroupName);
  628. if (r != null)
  629. result.Add("A", r.ToKVP());
  630. string xmlString = WebUtils.BuildXmlResponse(result);
  631. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  632. UTF8Encoding encoding = new UTF8Encoding();
  633. return encoding.GetBytes(xmlString);
  634. }
  635. public byte[] GetGroupMembershipData(Dictionary<string, object> request)
  636. {
  637. Dictionary<string, object> result = new Dictionary<string, object>();
  638. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  639. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  640. UUID AgentID = UUID.Parse(request["AgentID"].ToString());
  641. GroupMembershipData r = GroupsServiceConnector.GetGroupMembershipData(requestingAgentID, GroupID, AgentID);
  642. if (r != null)
  643. result.Add("A", r.ToKVP());
  644. string xmlString = WebUtils.BuildXmlResponse(result);
  645. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  646. UTF8Encoding encoding = new UTF8Encoding();
  647. return encoding.GetBytes(xmlString);
  648. }
  649. public byte[] GetMemberGroupProfile(Dictionary<string, object> request)
  650. {
  651. Dictionary<string, object> result = new Dictionary<string, object>();
  652. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  653. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  654. UUID AgentID = UUID.Parse(request["AgentID"].ToString());
  655. GroupProfileData r = GroupsServiceConnector.GetMemberGroupProfile(requestingAgentID, GroupID, AgentID);
  656. result.Add("A", r.ToKVP());
  657. string xmlString = WebUtils.BuildXmlResponse(result);
  658. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  659. UTF8Encoding encoding = new UTF8Encoding();
  660. return encoding.GetBytes(xmlString);
  661. }
  662. public byte[] RemoveAgentFromGroup(Dictionary<string, object> request)
  663. {
  664. Dictionary<string, object> result = new Dictionary<string, object>();
  665. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  666. UUID AgentID = UUID.Parse(request["AgentID"].ToString());
  667. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  668. bool r = GroupsServiceConnector.RemoveAgentFromGroup(requestingAgentID, AgentID, GroupID);
  669. result.Add("A", r);
  670. string xmlString = WebUtils.BuildXmlResponse(result);
  671. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  672. UTF8Encoding encoding = new UTF8Encoding();
  673. return encoding.GetBytes(xmlString);
  674. }
  675. public byte[] GetAgentActiveGroup(Dictionary<string, object> request)
  676. {
  677. Dictionary<string, object> result = new Dictionary<string, object>();
  678. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  679. UUID AgentID = UUID.Parse(request["AgentID"].ToString());
  680. UUID r = GroupsServiceConnector.GetAgentActiveGroup(requestingAgentID, AgentID);
  681. result.Add("A", r);
  682. string xmlString = WebUtils.BuildXmlResponse(result);
  683. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  684. UTF8Encoding encoding = new UTF8Encoding();
  685. return encoding.GetBytes(xmlString);
  686. }
  687. public byte[] GetAgentToGroupInvite(Dictionary<string, object> request)
  688. {
  689. Dictionary<string, object> result = new Dictionary<string, object>();
  690. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  691. UUID inviteID = UUID.Parse(request["inviteID"].ToString());
  692. GroupInviteInfo r = GroupsServiceConnector.GetAgentToGroupInvite(requestingAgentID, inviteID);
  693. if (r != null)
  694. result.Add("A", r.ToKVP());
  695. string xmlString = WebUtils.BuildXmlResponse(result);
  696. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  697. UTF8Encoding encoding = new UTF8Encoding();
  698. return encoding.GetBytes(xmlString);
  699. }
  700. public byte[] GetAgentGroupMemberData(Dictionary<string, object> request)
  701. {
  702. Dictionary<string, object> result = new Dictionary<string, object>();
  703. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  704. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  705. UUID AgentID = UUID.Parse(request["AgentID"].ToString());
  706. GroupMembersData r = GroupsServiceConnector.GetAgentGroupMemberData(requestingAgentID, GroupID, AgentID);
  707. result.Add("A", r.ToKVP());
  708. string xmlString = WebUtils.BuildXmlResponse(result);
  709. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  710. UTF8Encoding encoding = new UTF8Encoding();
  711. return encoding.GetBytes(xmlString);
  712. }
  713. public byte[] GetGroupNotice(Dictionary<string, object> request)
  714. {
  715. Dictionary<string, object> result = new Dictionary<string, object>();
  716. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  717. UUID noticeID = UUID.Parse(request["noticeID"].ToString());
  718. GroupNoticeInfo r = GroupsServiceConnector.GetGroupNotice(requestingAgentID, noticeID);
  719. result.Add("A", r.ToKVP());
  720. string xmlString = WebUtils.BuildXmlResponse(result);
  721. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  722. UTF8Encoding encoding = new UTF8Encoding();
  723. return encoding.GetBytes(xmlString);
  724. }
  725. public byte[] GetAgentGroupMemberships(Dictionary<string, object> request)
  726. {
  727. Dictionary<string, object> result = new Dictionary<string, object>();
  728. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  729. UUID AgentID = UUID.Parse(request["AgentID"].ToString());
  730. List<GroupMembershipData> rs = GroupsServiceConnector.GetAgentGroupMemberships(requestingAgentID, AgentID);
  731. int i = 0;
  732. foreach (GroupMembershipData r in rs)
  733. {
  734. result.Add(Util.ConvertDecString(i), r.ToKVP());
  735. i++;
  736. }
  737. string xmlString = WebUtils.BuildXmlResponse(result);
  738. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  739. UTF8Encoding encoding = new UTF8Encoding();
  740. return encoding.GetBytes(xmlString);
  741. }
  742. public byte[] GetGroupRecords(Dictionary<string, object> request)
  743. {
  744. Dictionary<string, object> result = new Dictionary<string, object>();
  745. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  746. UserAccount requestingAgent = UserServiceConnector.GetUserAccount(UUID.Zero, requestingAgentID);
  747. List<GroupRecord> rs = new List<GroupRecord>();
  748. if (requestingAgent.UserLevel > 0)
  749. {
  750. uint start = uint.Parse(request["start"].ToString());
  751. uint count = uint.Parse(request["count"].ToString());
  752. Dictionary<string, object> ssort = WebUtils.ParseXmlResponse(request["sort"].ToString());
  753. Dictionary<string, object> bboolFields = WebUtils.ParseXmlResponse(request["boolFields"].ToString());
  754. Dictionary<string, bool> sort = new Dictionary<string, bool>();
  755. foreach (KeyValuePair<string, object> kvp in ssort)
  756. sort.Add(kvp.Key, (bool)kvp.Value);
  757. Dictionary<string, bool> boolFields = new Dictionary<string, bool>();
  758. foreach (KeyValuePair<string, object> kvp in bboolFields)
  759. boolFields.Add(kvp.Key, (bool)kvp.Value);
  760. rs = GroupsServiceConnector.GetGroupRecords(requestingAgentID, start, count, sort, boolFields);
  761. }
  762. int i = 0;
  763. foreach (GroupRecord r in rs)
  764. {
  765. result.Add(Util.ConvertDecString(i), r.ToKVP());
  766. i++;
  767. }
  768. string xmlString = WebUtils.BuildXmlResponse(result);
  769. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  770. UTF8Encoding encoding = new UTF8Encoding();
  771. return encoding.GetBytes(xmlString);
  772. }
  773. public byte[] FindGroups(Dictionary<string, object> request)
  774. {
  775. Dictionary<string, object> result = new Dictionary<string, object>();
  776. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  777. string search = request["search"].ToString();
  778. int StartQuery = int.Parse(request["StartQuery"].ToString());
  779. uint queryflags = uint.Parse(request["queryflags"].ToString());
  780. List<DirGroupsReplyData> rs = GroupsServiceConnector.FindGroups(requestingAgentID, search, StartQuery,
  781. queryflags);
  782. int i = 0;
  783. foreach (DirGroupsReplyData r in rs)
  784. {
  785. result.Add(Util.ConvertDecString(i), r.ToKVP());
  786. i++;
  787. }
  788. string xmlString = WebUtils.BuildXmlResponse(result);
  789. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  790. UTF8Encoding encoding = new UTF8Encoding();
  791. return encoding.GetBytes(xmlString);
  792. }
  793. public byte[] GetAgentGroupRoles(Dictionary<string, object> request)
  794. {
  795. Dictionary<string, object> result = new Dictionary<string, object>();
  796. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  797. UUID AgentID = UUID.Parse(request["AgentID"].ToString());
  798. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  799. List<GroupRolesData> rs = GroupsServiceConnector.GetAgentGroupRoles(requestingAgentID, AgentID, GroupID);
  800. int i = 0;
  801. foreach (GroupRolesData r in rs)
  802. {
  803. result.Add(Util.ConvertDecString(i), r.ToKVP());
  804. i++;
  805. }
  806. string xmlString = WebUtils.BuildXmlResponse(result);
  807. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  808. UTF8Encoding encoding = new UTF8Encoding();
  809. return encoding.GetBytes(xmlString);
  810. }
  811. public byte[] GetGroupRoles(Dictionary<string, object> request)
  812. {
  813. Dictionary<string, object> result = new Dictionary<string, object>();
  814. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  815. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  816. List<GroupRolesData> rs = GroupsServiceConnector.GetGroupRoles(requestingAgentID, GroupID);
  817. int i = 0;
  818. foreach (GroupRolesData r in rs)
  819. {
  820. result.Add(Util.ConvertDecString(i), r.ToKVP());
  821. i++;
  822. }
  823. string xmlString = WebUtils.BuildXmlResponse(result);
  824. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  825. UTF8Encoding encoding = new UTF8Encoding();
  826. return encoding.GetBytes(xmlString);
  827. }
  828. public byte[] GetGroupMembers(Dictionary<string, object> request)
  829. {
  830. Dictionary<string, object> result = new Dictionary<string, object>();
  831. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  832. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  833. List<GroupMembersData> rs = GroupsServiceConnector.GetGroupMembers(requestingAgentID, GroupID);
  834. int i = 0;
  835. #if (!ISWIN)
  836. foreach (GroupMembersData r in rs)
  837. {
  838. if (r != null)
  839. {
  840. result.Add(Util.ConvertDecString(i), r.ToKVP());
  841. i++;
  842. }
  843. }
  844. #else
  845. foreach (GroupMembersData r in rs.Where(r => r != null))
  846. {
  847. result.Add(Util.ConvertDecString(i), r.ToKVP());
  848. i++;
  849. }
  850. #endif
  851. string xmlString = WebUtils.BuildXmlResponse(result);
  852. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  853. UTF8Encoding encoding = new UTF8Encoding();
  854. return encoding.GetBytes(xmlString);
  855. }
  856. public byte[] GetGroupRoleMembers(Dictionary<string, object> request)
  857. {
  858. Dictionary<string, object> result = new Dictionary<string, object>();
  859. UUID requestingAgentID = UUID.Parse(request["requestingAgentID"].ToString());
  860. UUID GroupID = UUID.Parse(request["GroupID"].ToString());
  861. List<GroupRoleMembersData> rs = GroupsServiceConnector.GetGroupRoleMembers(requestingAgentID, GroupID);
  862. int i = 0;
  863. foreach (GroupRoleMembersData r in rs)
  864. {
  865. result.Add(Util.ConvertDecString(i), r.ToKVP());
  866. i++;
  867. }
  868. string xmlString = WebUtils.BuildXmlResponse(result);
  869. //MainConsole.Instance.DebugFormat("[AuroraDataServerPostHandler]: resp string: {0}", xmlString);
  870. UTF8Encoding encoding = new UTF8Encoding();
  871. return encoding.GetBytes(xmlString);
  872. }
  873. public byte[] GetGroupNotices(Dictionary<string, object> request)
  874. {
  875. Dictionary<string, object> result = new Dictionary<strin

Large files files are truncated, but you can click here to view the full file