public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { StreamReader sr = new StreamReader(requestData); string body = sr.ReadToEnd(); sr.Close(); body = body.Trim(); IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, "EQM_Post", ThreatLevel.None)) { return(new byte[0]); } } OSDMap request = WebUtils.GetOSDMap(body); if (request == null) { return(null); } return(ProcessEnqueueEQMMessage(request)); }
public override byte[] Handle(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { bool result = false; string[] p = SplitParams(path); IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, "Asset_Delete", ThreatLevel.High)) { return(new byte[0]); } } if (p.Length > 0 && m_allowDelete) { result = m_AssetService.Delete(UUID.Parse(p[0])); } XmlSerializer xs = new XmlSerializer(typeof(bool)); return(ServerUtils.SerializeResult(xs, result)); }
private byte[] ConnectionRequest(OSDMap args) { IGridRegistrationService module = IWC.Registry.RequestModuleInterface <IGridRegistrationService>(); OSDMap result = new OSDMap(); if (module != null) { //Add our URLs for them so that they can connect too string theirIdent = args["OurIdentifier"]; ulong handle; if (ulong.TryParse(theirIdent, out handle)) { //Fu**in hackers //No making region handle sessionIDs! result["Success"] = false; } else { module.RemoveUrlsForClient(theirIdent); IWC.IsGettingUrlsForIWCConnection = true; result = module.GetUrlForRegisteringClient(theirIdent); IWC.IsGettingUrlsForIWCConnection = false; result["OurIdentifier"] = Utilities.GetAddress(); MainConsole.Instance.Warn(theirIdent + " successfully connected to us"); IWC.AddNewConnectionFromRequest(theirIdent, args); result["Success"] = true; } } string json = OSDParser.SerializeJsonString(result); UTF8Encoding enc = new UTF8Encoding(); return(enc.GetBytes(json)); }
public OSDMap GetUrlsForUser(GridRegion region, UUID userID) { if ((((RegionFlags)region.Flags) & RegionFlags.Foreign) != RegionFlags.Foreign) { MainConsole.Instance.Debug("[IWC]: Not a foreign region"); return(null); } string host = userID.ToString(); IGridRegistrationService module = Registry.RequestModuleInterface <IGridRegistrationService>(); if (module != null) { module.RemoveUrlsForClient(host); module.RemoveUrlsForClient(host + "|" + region.RegionHandle); IsGettingUrlsForIWCConnection = true; OSDMap map = module.GetUrlForRegisteringClient(host + "|" + region.RegionHandle); IsGettingUrlsForIWCConnection = false; string url = region.GenericMap["URL"]; if (url == "") { MainConsole.Instance.Warn("[IWC]: Foreign region with no URL"); return(null); //What the hell? Its a foreign region, it better have a URL! } //Remove the /Grid.... stuff url = url.Remove(url.Length - 5 - 36); OutgoingPublicComms.InformOfURLs(url + "/iwcconnection", map, userID, region.RegionHandle); return(map); } return(null); }
public void Start(IConfigSource config, IRegistryCore registry) { IConfig handlerConfig = config.Configs["Handlers"]; if (handlerConfig.GetString("GridInHandler", "") != Name) { return; } m_registry = registry; //This registers regions... got to have it string url = "/grid"; IGridRegistrationService gridRegService = m_registry.RequestModuleInterface <IGridRegistrationService>(); gridRegService.RegisterModule(this); uint port = handlerConfig.GetUInt("RegistrationHandlerPort", 8003); IHttpServer server = m_registry.RequestModuleInterface <ISimulationBase>().GetHttpServer(port); GridServerPostHandler handler = new GridServerPostHandler(url, registry, registry.RequestModuleInterface <IGridService>(). InnerService, false, ""); server.AddStreamHandler(handler); }
public override byte[] Handle(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { string body = GetBodyAsString(request); OSDMap map = WebUtils.GetOSDMap(Util.Decompress(body)); IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, "Asset_Update", ThreatLevel.High)) { return(new byte[0]); } } UUID newID; if (map.ContainsKey("Method") && map["Method"] == "UpdateContent") { m_AssetService.UpdateContent(map["ID"].AsUUID(), map["Data"].AsBinary(), out newID); } else { AssetBase asset = new AssetBase(); asset = asset.Unpack(map); newID = m_AssetService.Store(asset); } return(Encoding.UTF8.GetBytes(newID.ToString())); }
public override byte[] Handle(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { XmlSerializer xs = new XmlSerializer(typeof(AssetBase)); AssetBase asset = (AssetBase)xs.Deserialize(request); IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, "Asset_Update", ThreatLevel.Full)) { return(new byte[0]); } } string[] p = SplitParams(path); if (p.Length > 1) { bool result = m_AssetService.UpdateContent(p[1], asset.Data); xs = new XmlSerializer(typeof(bool)); return(WebUtils.SerializeResult(xs, result)); } string id = m_AssetService.Store(asset); xs = new XmlSerializer(typeof(string)); return(WebUtils.SerializeResult(xs, id)); }
public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { string body = GetBodyAsString(requestData); //MainConsole.Instance.DebugFormat("[XXX]: query String: {0}", body); try { IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); OSDMap map = WebUtils.GetOSDMap(body); if (map != null) { if (map.ContainsKey("Method")) { if (map["Method"] == "GetUserInfo") { if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, map["Method"], ThreatLevel.None)) { return(FailureResult()); } } return(GetUserInfo(map)); } if (map["Method"] == "GetUserInfos") { if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, map["Method"], ThreatLevel.Low)) { return(FailureResult()); } } return(GetUserInfos(map)); } if (map["Method"] == "GetAgentsLocations") { if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, map["Method"], ThreatLevel.Low)) { return(FailureResult()); } } return(GetAgentsLocations(map)); } } } } catch (Exception e) { MainConsole.Instance.WarnFormat("[AGENT INFO HANDLER]: Exception {0}", e); } return(FailureResult()); }
public byte[] HandleMap(OSDMap args) { if (args.ContainsKey("Method")) { IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); string method = args["Method"].AsString(); MethodImplementation methodInfo; if (GetMethodInfo(method, args.Count - 1, out methodInfo)) { if (m_SessionID == "") { if (methodInfo.Attribute.ThreatLevel != ThreatLevel.None) { return(new byte[0]); } } else if (!urlModule.CheckThreatLevel(m_SessionID, method, methodInfo.Attribute.ThreatLevel)) { return(new byte[0]); } MainConsole.Instance.Debug("[Server]: Method Called: " + method); ParameterInfo[] paramInfo = methodInfo.Method.GetParameters(); object[] parameters = new object[paramInfo.Length]; int paramNum = 0; foreach (ParameterInfo param in paramInfo) { parameters[paramNum++] = Util.OSDToObject(args[param.Name], param.ParameterType); } object o = methodInfo.Method.FastInvoke(paramInfo, methodInfo.Reference, parameters); OSDMap response = new OSDMap(); if (o == null)//void method { response["Value"] = "null"; } else { response["Value"] = Util.MakeOSD(o, methodInfo.Method.ReturnType); } response["Success"] = true; return(Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(response, true))); } } MainConsole.Instance.Warn("[ServerHandler]: Post did not have a method block"); return(new byte[0]); }
public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { StreamReader sr = new StreamReader(requestData); string body = sr.ReadToEnd(); sr.Close(); body = body.Trim(); OSDMap args = WebUtils.GetOSDMap(body); if (args.ContainsKey("Method")) { IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); string method = args["Method"].AsString(); MethodImplementation methodInfo; if (GetMethodInfo(method, args.Count - 1, out methodInfo)) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ((CanBeReflected)Attribute.GetCustomAttribute(methodInfo.Method, typeof(CanBeReflected))).ThreatLevel)) { return(new byte[0]); } ParameterInfo[] paramInfo = methodInfo.Method.GetParameters(); object[] parameters = new object[paramInfo.Length]; int paramNum = 0; foreach (ParameterInfo param in paramInfo) { parameters[paramNum++] = Util.OSDToObject(args[param.Name], param.ParameterType); } object o = methodInfo.Method.Invoke(methodInfo.Reference, parameters); OSDMap response = new OSDMap(); if (o == null)//void method { response["Value"] = true; } else { response["Value"] = Util.MakeOSD(o, methodInfo.Method.ReturnType); } response["Success"] = true; return(Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(response))); } } return(new byte[0]); }
/// <summary> /// Create secure Urls that only us and the sim that called us know of /// This Urls is used to add/remove agents and other information from the other sim /// </summary> /// <param name="c"></param> /// <returns></returns> public IWCCertificate BuildSecureUrlsForConnection(IWCCertificate c) { IGridRegistrationService gridRegistration = Registry.RequestModuleInterface <IGridRegistrationService>(); if (gridRegistration != null) { IGridService gridService = Registry.RequestModuleInterface <IGridService>(); if (gridService != null) { GridRegion r = gridService.GetRegionByName(UUID.Zero, c.Connection.UserName + "_Link"); if (r == null) { uint rX = (uint)Util.RandomClass.Next(10000, 1000000); uint rY = (uint)Util.RandomClass.Next(10000, 1000000); ulong regionhandle = Utils.UIntsToLong(rX, rY); r = new GridRegion(); r.RegionID = UUID.Random(); r.RegionHandle = regionhandle; IHttpServer server = m_registry.RequestModuleInterface <ISimulationBase>().GetHttpServer(0); r.ExternalHostName = server.HostName; if (r.ExternalHostName.StartsWith("http://")) { r.ExternalHostName = r.ExternalHostName.Remove(0, 7); } else if (r.ExternalHostName.StartsWith("https://")) { r.ExternalHostName = r.ExternalHostName.Remove(0, 8); } r.InternalEndPoint = new IPEndPoint(IPAddress.Any, (int)server.Port); r.Flags = (int)Aurora.Framework.RegionFlags.Foreign; r.RegionName = c.Connection.UserName + "_Link"; r.RegionType = "Link"; UUID SessionID; gridService.RegisterRegion(r, UUID.Zero, out SessionID); } //Give the basic Urls that we have c.Connection.SecureUrls = gridRegistration.GetUrlForRegisteringClient(c.Connection.UserName, r.RegionHandle); } } return(c); }
public ServerHandler(string url, string SessionID, IRegistryCore registry) : base("POST", url) { m_SessionID = SessionID; m_registry = registry; m_capsService = m_registry.RequestModuleInterface <ICapsService>(); m_urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); if (m_methods == null) { m_methods = new Dictionary <string, List <MethodImplementation> >(); List <string> alreadyRunPlugins = new List <string>(); foreach (ConnectorBase plugin in ConnectorRegistry.Connectors) { if (alreadyRunPlugins.Contains(plugin.PluginName)) { continue; } alreadyRunPlugins.Add(plugin.PluginName); foreach (MethodInfo method in plugin.GetType().GetMethods()) { CanBeReflected reflection = (CanBeReflected)Attribute.GetCustomAttribute(method, typeof(CanBeReflected)); if (reflection != null) { string methodName = reflection.RenamedMethod == "" ? method.Name : reflection.RenamedMethod; List <MethodImplementation> methods = new List <MethodImplementation>(); MethodImplementation imp = new MethodImplementation() { Method = method, Reference = plugin, Attribute = reflection }; if (!m_methods.TryGetValue(methodName, out methods)) { m_methods.Add(methodName, (methods = new List <MethodImplementation>())); } methods.Add(imp); } } } } }
/// <summary> /// Query the given host (by connection) and verify that we can connect to it. /// </summary> /// <param name = "connector">The host to connect to</param> /// <returns>The connection that has been recieved from the host</returns> public bool AttemptConnection(string host) { IGridRegistrationService module = IWC.Registry.RequestModuleInterface <IGridRegistrationService>(); if (module != null) { module.RemoveUrlsForClient(host); IWC.IsGettingUrlsForIWCConnection = true; OSDMap callThem = module.GetUrlForRegisteringClient(host); IWC.IsGettingUrlsForIWCConnection = false; callThem["OurIdentifier"] = Utilities.GetAddress(); callThem["Method"] = "ConnectionRequest"; OSDMap result = WebUtils.PostToService(host, callThem, true, false, true); if (result["Success"]) { //Add their URLs back again MainConsole.Instance.Warn("Successfully Connected to " + host); IWC.AddNewConnectionFromRequest(result["OurIdentifier"], result); return(true); } } return(false); }
public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { StreamReader sr = new StreamReader(requestData); string body = sr.ReadToEnd(); sr.Close(); body = body.Trim(); OSDMap args = WebUtils.GetOSDMap(body); if (args.ContainsKey("Method")) { IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); string method = args["Method"].AsString(); ulong handle; switch (method) { #region Profile case "getprofile": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.None)) { return(FailureResult()); } } return(ProfileHandler.GetProfile(args)); case "updateprofile": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.UpdateProfile(args)); case "updateagent": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.UpdateAgent(args)); case "getclassified": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.GetClassifed(args)); case "getclassifieds": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.GetClassifieds(args)); case "getpick": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.GetPick(args)); case "getpicks": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.GetPicks(args)); case "removepick": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.RemovePick(args)); case "removeclassified": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.RemoveClassified(args)); case "addclassified": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.AddClassified(args)); case "addpick": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.AddPick(args)); #endregion #region Offline Messages case "addofflinemessage": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } return(OfflineMessagesHandler.AddOfflineMessage(args)); case "getofflinemessages": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(OfflineMessagesHandler.GetOfflineMessages(args)); #endregion #region Emails case "insertemail": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } return(EmailHandler.InsertEmail(args)); case "getemails": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(EmailHandler.GetEmails(args)); #endregion #region Directory Messages case "addregion": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } if (ulong.TryParse(m_SessionID, out handle)) { int x, y; Util.UlongToInts(handle, out x, out y); UUID regionID = this.m_registry.RequestModuleInterface <IGridService>().GetRegionByPosition(UUID.Zero, x, y).RegionID; return(DirectoryHandler.AddRegion(args, regionID)); } break; case "clearregion": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } if (ulong.TryParse(m_SessionID, out handle)) { int x, y; Util.UlongToInts(handle, out x, out y); UUID regionID = this.m_registry.RequestModuleInterface <IGridService>().GetRegionByPosition(UUID.Zero, x, y).RegionID; return(DirectoryHandler.ClearRegion(regionID, args)); } break; case "getparcelinfo": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } return(DirectoryHandler.GetParcelInfo(args)); case "getparcelbyowner": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(DirectoryHandler.GetParcelByOwner(args)); #endregion } } return(FailureResult()); }
public override byte[] Handle(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { byte[] result = new byte[0]; string[] p = SplitParams(path); if (p.Length == 0) { return(result); } IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, "Asset_Get", ThreatLevel.Low)) { return(new byte[0]); } } if (p.Length > 1 && p[1] == "data") { result = m_AssetService.GetData(p[0]); if (result == null) { httpResponse.StatusCode = (int)HttpStatusCode.NotFound; httpResponse.ContentType = "text/plain"; result = new byte[0]; } else { httpResponse.StatusCode = (int)HttpStatusCode.OK; httpResponse.ContentType = "application/octet-stream"; } } else if (p.Length > 1 && p[1] == "exists") { try { bool RetVal = m_AssetService.GetExists(p[0]); XmlSerializer xs = new XmlSerializer(typeof(AssetBase)); result = ServerUtils.SerializeResult(xs, RetVal); if (result == null) { httpResponse.StatusCode = (int)HttpStatusCode.NotFound; httpResponse.ContentType = "text/plain"; result = new byte[0]; } else { httpResponse.StatusCode = (int)HttpStatusCode.OK; httpResponse.ContentType = "application/octet-stream"; } } catch (Exception ex) { result = new byte[0]; MainConsole.Instance.Warn("[AssetServerGetHandler]: Error serializing the result for /exists for asset " + p[0] + ", " + ex); } } else { AssetBase asset = m_AssetService.Get(p[0]); if (asset != null) { XmlSerializer xs = new XmlSerializer(typeof(AssetBase)); result = Util.CompressBytes(ServerUtils.SerializeResult(xs, asset)); httpResponse.StatusCode = (int)HttpStatusCode.OK; httpResponse.ContentType = SLUtil.SLAssetTypeToContentType(asset.Type) + "/gzip"; } else { httpResponse.StatusCode = (int)HttpStatusCode.NotFound; httpResponse.ContentType = "text/plain"; result = new byte[0]; } } return(result); }
public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { StreamReader sr = new StreamReader(requestData); string body = sr.ReadToEnd(); sr.Close(); body = body.Trim(); //m_log.DebugFormat("[XXX]: query String: {0}", body); try { IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); OSDMap map = WebUtils.GetOSDMap(body); if (map != null) { if (map.ContainsKey("Method")) { if (map["Method"] == "GetUserInfo") { if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, map["Method"], ThreatLevel.None)) { return(FailureResult()); } } return(GetUserInfo(map)); } if (map["Method"] == "GetUserInfos") { if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, map["Method"], ThreatLevel.Low)) { return(FailureResult()); } } return(GetUserInfos(map)); } if (map["Method"] == "GetAgentsLocations") { if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, map["Method"], ThreatLevel.Low)) { return(FailureResult()); } } return(GetAgentsLocations(map)); } } } } catch (Exception e) { m_log.WarnFormat("[AGENT INFO HANDLER]: Exception {0}", e); } return(FailureResult()); }
public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { StreamReader sr = new StreamReader(requestData); string body = sr.ReadToEnd(); sr.Close(); body = body.Trim(); //MainConsole.Instance.DebugFormat("[XXX]: query String: {0}", body); try { Dictionary <string, object> request = WebUtils.ParseQueryString(body); if (!request.ContainsKey("METHOD")) { return(FailureResult()); } string method = request["METHOD"].ToString(); IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); switch (method) { case "getavatar": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } return(GetAvatar(request)); case "setavatar": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(SetAvatar(request)); case "resetavatar": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(ResetAvatar(request)); case "cachewearabledata": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(CacheWearableData(request)); } MainConsole.Instance.DebugFormat("[AVATAR HANDLER]: unknown method request: {0}", method); } catch (Exception e) { MainConsole.Instance.Debug("[AVATAR HANDLER]: Exception {0}" + e); } return(FailureResult()); }
public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { StreamReader sr = new StreamReader(requestData); string body = sr.ReadToEnd(); sr.Close(); body = body.Trim(); //MainConsole.Instance.DebugFormat("[XXX]: query String: {0}", body); try { Dictionary <string, object> request = WebUtils.ParseQueryString(body); if (!request.ContainsKey("METHOD")) { return(FailureResult()); } string method = request["METHOD"].ToString(); request.Remove("METHOD"); IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); switch (method) { case "GETROOTFOLDER": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetRootFolder(request)); case "GETFOLDERFORTYPE": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetFolderForType(request)); case "GETFOLDERCONTENT": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetFolderContent(request)); case "GETFOLDERITEMS": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetFolderItems(request)); case "ADDFOLDER": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleAddFolder(request)); case "UPDATEFOLDER": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(HandleUpdateFolder(request)); case "MOVEFOLDER": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleMoveFolder(request)); case "DELETEFOLDERS": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(HandleDeleteFolders(request)); case "PURGEFOLDER": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(HandlePurgeFolder(request)); case "ADDITEM": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleAddItem(request)); case "UPDATEITEM": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(HandleUpdateItem(request)); case "MOVEITEMS": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleMoveItems(request)); case "DELETEITEMS": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(HandleDeleteItems(request)); case "GETITEM": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetItem(request)); case "GETFOLDER": if (m_SessionID != "" && urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetFolder(request)); } MainConsole.Instance.DebugFormat("[XINVENTORY HANDLER]: unknown method request: {0}", method); } catch (Exception e) { MainConsole.Instance.Debug("[XINVENTORY HANDLER]: Exception {0}", e); } return(FailureResult()); }
public ServerHandler(string url, string SessionID, IRegistryCore registry) : base("POST", url) { m_SessionID = SessionID; m_registry = registry; m_capsService = m_registry.RequestModuleInterface<ICapsService>(); m_urlModule = m_registry.RequestModuleInterface<IGridRegistrationService>(); if (m_methods == null) { m_methods = new Dictionary<string, List<MethodImplementation>>(); List<string> alreadyRunPlugins = new List<string>(); foreach (ConnectorBase plugin in ConnectorRegistry.Connectors) { if (alreadyRunPlugins.Contains(plugin.PluginName)) continue; alreadyRunPlugins.Add(plugin.PluginName); foreach (MethodInfo method in plugin.GetType().GetMethods()) { CanBeReflected reflection = (CanBeReflected)Attribute.GetCustomAttribute(method, typeof(CanBeReflected)); if (reflection != null) { string methodName = reflection.RenamedMethod == "" ? method.Name : reflection.RenamedMethod; List<MethodImplementation> methods = new List<MethodImplementation>(); MethodImplementation imp = new MethodImplementation() { Method = method, Reference = plugin, Attribute = reflection }; if (!m_methods.TryGetValue(methodName, out methods)) m_methods.Add(methodName, (methods = new List<MethodImplementation>())); methods.Add(imp); } } } } }
public OSDMap GetUrlsForUser(GridRegion region, UUID userID) { IGridRegistrationService r = Registry.RequestModuleInterface <IGridRegistrationService>(); return(r.GetUrlForRegisteringClient(userID.ToString(), region.RegionHandle)); }
public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { StreamReader sr = new StreamReader(requestData); string body = sr.ReadToEnd(); sr.Close(); body = body.Trim(); // We need to check the authorization header //httpRequest.Headers["authorization"] ... //m_log.DebugFormat("[XXX]: query String: {0}", body); string method = string.Empty; try { Dictionary <string, object> request = WebUtils.ParseQueryString(body); if (!request.ContainsKey("METHOD")) { return(FailureResult()); } method = request["METHOD"].ToString(); IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); switch (method) { case "getaccount": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.None)) { return(new byte[0]); } } return(GetAccount(request)); case "getaccounts": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.None)) { return(new byte[0]); } } return(GetAccounts(request)); case "setaccount": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Full)) { return(new byte[0]); } } return(StoreAccount(request)); } m_log.DebugFormat("[USER SERVICE HANDLER]: unknown method request: {0}", method); } catch (Exception e) { m_log.DebugFormat("[USER SERVICE HANDLER]: Exception in method {0}: {1}", method, e); } return(FailureResult()); }
public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { StreamReader sr = new StreamReader(requestData); string body = sr.ReadToEnd(); sr.Close(); body = body.Trim(); //MainConsole.Instance.DebugFormat("[XXX]: query String: {0}", body); try { Dictionary <string, object> request = WebUtils.ParseQueryString(body); if (!request.ContainsKey("METHOD")) { //OSD map test OSDMap map = WebUtils.GetOSDMap(body); if (map != null) { if (map.ContainsKey("Method")) { if (map["Method"] == "Register") { return(NewRegister(map)); } else if (!m_secure) { return(null); } if (map["Method"] == "UpdateMap") { return(UpdateMap(map)); } } } else { return(FailureResult()); } } if (!m_secure) { return(null); } string method = request["METHOD"].ToString(); IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); switch (method) { case "register": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.None)) { return(FailureResult()); } } return(Register(request)); case "deregister": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.None)) { return(FailureResult()); } } return(Deregister(request)); case "get_region_by_uuid": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } return(GetRegionByUUID(request)); case "get_region_by_position": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } return(GetRegionByPosition(request)); case "get_region_by_name": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } return(GetRegionByName(request)); case "get_regions_by_name": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } return(GetRegionsByName(request)); case "get_region_range": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } return(GetRegionRange(request)); case "get_default_regions": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(GetDefaultRegions(request)); case "get_fallback_regions": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(GetFallbackRegions(request)); case "get_safe_regions": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(GetSafeRegions(request)); case "get_region_flags": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } return(GetRegionFlags(request)); case "getmapitems": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } return(GetMapItems(request)); case "removetelehub": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(RemoveTelehub(request)); case "addtelehub": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(AddTelehub(request)); case "findtelehub": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } return(FindTelehub(request)); } MainConsole.Instance.DebugFormat("[GRID HANDLER]: unknown method {0} request {1}", method.Length, method); } catch (Exception e) { MainConsole.Instance.WarnFormat("[GRID HANDLER]: Exception {0}", e); } return(FailureResult()); }
public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { StreamReader sr = new StreamReader(requestData); string body = sr.ReadToEnd(); sr.Close(); body = body.Trim(); OSDMap args = WebUtils.GetOSDMap(body); if (args.ContainsKey("Method")) { IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService> (); string method = args["Method"].AsString(); switch (method) { #region Profile case "getprofile": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.None)) { return(FailureResult()); } } return(ProfileHandler.GetProfile(args)); case "updateprofile": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.UpdateProfile(args)); case "getclassified": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.GetClassifed(args)); case "getclassifieds": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.GetClassifieds(args)); case "getpick": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.GetPick(args)); case "getpicks": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.GetPicks(args)); case "removepick": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.RemovePick(args)); case "removeclassified": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.RemoveClassified(args)); case "addclassified": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.AddClassified(args)); case "addpick": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(ProfileHandler.AddPick(args)); #endregion } } return(FailureResult()); }
public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { StreamReader sr = new StreamReader(requestData); string body = sr.ReadToEnd(); sr.Close(); body = body.Trim(); //MainConsole.Instance.DebugFormat("[XXX]: query String: {0}", body); try { Dictionary <string, object> request = WebUtils.ParseQueryString(body); if (!request.ContainsKey("METHOD")) { return(FailureResult()); } string method = request["METHOD"].ToString(); IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); switch (method) { case "getfriends": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } return(GetFriends(request)); case "storefriend": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(StoreFriend(request)); case "deletefriend": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(DeleteFriend(request)); } MainConsole.Instance.DebugFormat("[FRIENDS HANDLER]: unknown method {0} request {1}", method.Length, method); } catch (Exception e) { MainConsole.Instance.DebugFormat("[FRIENDS HANDLER]: Exception {0}", e); } return(FailureResult()); }
public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { StreamReader sr = new StreamReader(requestData); string body = sr.ReadToEnd(); sr.Close(); body = body.Trim(); //m_log.DebugFormat("[XXX]: query String: {0}", body); try { Dictionary <string, object> request = WebUtils.ParseQueryString(body); if (!request.ContainsKey("METHOD")) { return(FailureResult()); } string method = request["METHOD"].ToString(); request.Remove("METHOD"); IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); switch (method) { case "CREATEUSERINVENTORY": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Full)) { return(FailureResult()); } } return(HandleCreateUserInventory(request)); case "GETINVENTORYSKELETON": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetInventorySkeleton(request)); case "GETROOTFOLDER": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetRootFolder(request)); case "GETFOLDERFORTYPE": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetFolderForType(request)); case "GETFOLDERCONTENT": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetFolderContent(request)); case "GETFOLDERITEMS": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetFolderItems(request)); case "ADDFOLDER": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleAddFolder(request)); case "UPDATEFOLDER": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(HandleUpdateFolder(request)); case "MOVEFOLDER": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleMoveFolder(request)); case "DELETEFOLDERS": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(HandleDeleteFolders(request)); case "PURGEFOLDER": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(HandlePurgeFolder(request)); case "ADDITEM": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleAddItem(request)); case "UPDATEITEM": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(HandleUpdateItem(request)); case "MOVEITEMS": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleMoveItems(request)); case "DELETEITEMS": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(HandleDeleteItems(request)); case "GETITEM": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetItem(request)); case "GETFOLDER": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetFolder(request)); case "GETACTIVEGESTURES": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetActiveGestures(request)); case "GETASSETPERMISSIONS": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(HandleGetAssetPermissions(request)); } m_log.DebugFormat("[XINVENTORY HANDLER]: unknown method request: {0}", method); } catch (Exception e) { m_log.Debug("[XINVENTORY HANDLER]: Exception {0}", e); } return(FailureResult()); }