public void ProcessRequest(HttpApplication context) { if (_host == null) { return; } if (context.Request.ContentType == ContentType.XForm) { string command = context.Request.Params[Messaging.Endpoints.StreamingAmfEndpoint.CommandParameterName]; if (!Messaging.Endpoints.StreamingAmfEndpoint.OpenCommand.Equals(command) && !Messaging.Endpoints.StreamingAmfEndpoint.CloseCommand.Equals(command)) { return; } if (context.Request.UrlReferrer != null && !context.Request.UrlReferrer.ToString().EndsWith(".swf")) { return; } context.Response.Clear(); //ThreadContext.Properties["ClientIP"] = HttpContext.Current.Request.UserHostAddress; // NOTE TODO Common.Logging push ip into ClientIP variable if (Log.IsDebugEnabled) { Log.Debug(__Res.GetString(__Res.Amf_Begin)); } try { FluorineWebContext.Initialize(); if (_host.MessageServer != null) { _host.MessageServer.Service(); } else { if (Log.IsFatalEnabled) { Log.Fatal(__Res.GetString(__Res.MessageServer_AccessFail)); } } if (Log.IsDebugEnabled) { Log.Debug(__Res.GetString(__Res.Amf_End)); } // Causes ASP.NET to bypass all events and filtering in the HTTP pipeline chain of execution and directly execute the EndRequest event context.CompleteRequest(); } catch (Exception ex) { Log.Fatal(__Res.GetString(__Res.Amf_Fatal), ex); context.Response.Clear(); context.Response.ClearHeaders();//FluorineHttpApplicationContext modifies headers context.Response.Status = __Res.GetString(__Res.Amf_Fatal404) + " " + ex.Message; // Causes ASP.NET to bypass all events and filtering in the HTTP pipeline chain of execution and directly execute the EndRequest event context.CompleteRequest(); } } }
/// <summary> /// Occurs as the first event in the HTTP pipeline chain of execution when ASP.NET responds to a request. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void ApplicationBeginRequest(object sender, EventArgs e) { HttpApplication httpApplication = (HttpApplication)sender; HttpRequest httpRequest = httpApplication.Request; for (int i = 0; i < _handlers.Count; i++) { _handlers[i].BeginRequest(httpApplication); } if (_serviceBrowserRenderer != null) { if (_serviceBrowserRenderer.CanRender(httpRequest)) { CompressContent(httpApplication); FluorineWebContext.Initialize(); httpApplication.Response.Clear(); //httpApplication.Response.ClearHeaders(); _serviceBrowserRenderer.Render(httpApplication); httpApplication.CompleteRequest(); return; } } }
public void BeginRequest(HttpApplication context) { if (_host == null) { return; } if (context.Request.ContentType == ContentType.RTMPT) { context.Response.Clear(); context.Response.ContentType = ContentType.RTMPT; //ThreadContext.Properties["ClientIP"] = HttpContext.Current.Request.UserHostAddress; // NOTE TODO Common.Logging push ip into ClientIP variable if (Log.IsDebugEnabled) { Log.Debug(__Res.GetString(__Res.Rtmpt_Begin)); } try { FluorineWebContext.Initialize(); if (context.Request.Headers["RTMPT-command"] != null) { Log.Debug(string.Format("ISAPI rewrite, original URL {0}", context.Request.Headers["RTMPT-command"])); } if (_host.MessageServer != null) { _host.MessageServer.ServiceRtmpt(); } else { if (Log.IsFatalEnabled) { Log.Fatal(__Res.GetString(__Res.MessageServer_AccessFail)); } } if (Log.IsDebugEnabled) { Log.Debug(__Res.GetString(__Res.Rtmpt_End)); } // Causes ASP.NET to bypass all events and filtering in the HTTP pipeline chain of execution and directly execute the EndRequest event context.CompleteRequest(); } catch (Exception ex) { Log.Fatal(__Res.GetString(__Res.Rtmpt_Fatal), ex); context.Response.Clear(); context.Response.ClearHeaders(); context.Response.Status = __Res.GetString(__Res.Rtmpt_Fatal404) + " " + ex.Message; // Causes ASP.NET to bypass all events and filtering in the HTTP pipeline chain of execution and directly execute the EndRequest event context.CompleteRequest(); } } }
internal void HandleRtmpt(HttpApplication httpApplication) { if (httpApplication.Request.ContentType == "application/x-fcs") { httpApplication.Response.Clear(); httpApplication.Response.ContentType = "application/x-fcs"; ILog logger = null; try { logger = LogManager.GetLogger(typeof(FluorineGateway)); GlobalContext.get_Properties().set_Item("ClientIP", HttpContext.Current.Request.UserHostAddress); } catch { } if ((logger != null) && logger.get_IsDebugEnabled()) { logger.Debug(__Res.GetString("Rtmpt_Begin")); } try { FluorineWebContext.Initialize(); if (httpApplication.Request.Headers["RTMPT-command"] != null) { logger.Debug(string.Format("ISAPI rewrite, original URL {0}", httpApplication.Request.Headers["RTMPT-command"])); } if (messageServer != null) { messageServer.ServiceRtmpt(); } else if (logger != null) { logger.Fatal(__Res.GetString("MessageServer_AccessFail")); } if ((logger != null) && logger.get_IsDebugEnabled()) { logger.Debug(__Res.GetString("Rtmpt_End")); } httpApplication.CompleteRequest(); } catch (Exception exception) { if (logger != null) { logger.Fatal(__Res.GetString("Rtmpt_Fatal"), exception); } httpApplication.Response.Clear(); httpApplication.Response.ClearHeaders(); httpApplication.Response.Status = __Res.GetString("Rtmpt_Fatal404") + " " + exception.Message; httpApplication.CompleteRequest(); } } }
public void ProcessRequest(HttpApplication context) { if (_host == null) { return; } if (context.Request.ContentType == ContentType.AMF) { _host.CompressContent(context); context.Response.Clear(); context.Response.ContentType = ContentType.AMF; //ThreadContext.Properties["ClientIP"] = HttpContext.Current.Request.UserHostAddress; // NOTE TODO Common.Logging push ip into ClientIP variable if (Log.IsDebugEnabled) { Log.Debug(__Res.GetString(__Res.Amf_Begin)); } try { FluorineWebContext.Initialize(); if (_host.MessageServer != null) { _host.MessageServer.Service(); } else { if (Log.IsFatalEnabled) { Log.Fatal(__Res.GetString(__Res.MessageServer_AccessFail)); } } if (Log.IsDebugEnabled) { Log.Debug(__Res.GetString(__Res.Amf_End)); } // Causes ASP.NET to bypass all events and filtering in the HTTP pipeline chain of execution and directly execute the EndRequest event context.CompleteRequest(); } catch (Exception ex) { Log.Fatal(__Res.GetString(__Res.Amf_Fatal), ex); context.Response.Clear(); context.Response.ClearHeaders();//FluorineHttpApplicationContext modifies headers context.Response.Status = __Res.GetString(__Res.Amf_Fatal404) + " " + ex.Message; // Causes ASP.NET to bypass all events and filtering in the HTTP pipeline chain of execution and directly execute the EndRequest event context.CompleteRequest(); } } }
internal void HandleXAmfEx(HttpApplication httpApplication) { if (httpApplication.Request.ContentType == "application/x-amf") { this.CompressContent(httpApplication); httpApplication.Response.Clear(); httpApplication.Response.ContentType = "application/x-amf"; ILog logger = null; try { logger = LogManager.GetLogger(typeof(FluorineGateway)); GlobalContext.get_Properties().set_Item("ClientIP", HttpContext.Current.Request.UserHostAddress); } catch { } if ((logger != null) && logger.get_IsDebugEnabled()) { logger.Debug(__Res.GetString("Amf_Begin")); } try { FluorineWebContext.Initialize(); if (messageServer != null) { messageServer.Service(); } else if (logger != null) { logger.Fatal(__Res.GetString("MessageServer_AccessFail")); } if ((logger != null) && logger.get_IsDebugEnabled()) { logger.Debug(__Res.GetString("Amf_End")); } httpApplication.CompleteRequest(); } catch (Exception exception) { if (logger != null) { logger.Fatal(__Res.GetString("Amf_Fatal"), exception); } httpApplication.Response.Clear(); httpApplication.Response.ClearHeaders(); httpApplication.Response.Status = __Res.GetString("Amf_Fatal404") + " " + exception.Message; httpApplication.CompleteRequest(); } } }
private void application_BeginRequest(object sender, EventArgs e) { HttpApplication httpApplication = (HttpApplication)sender; HttpRequest httpRequest = httpApplication.Request; if ((serviceBrowserRenderer != null) && serviceBrowserRenderer.CanRender(httpRequest)) { this.CompressContent(httpApplication); FluorineWebContext.Initialize(); httpApplication.Response.Clear(); serviceBrowserRenderer.Render(httpApplication); httpApplication.CompleteRequest(); } else if (httpApplication.Request.ContentType == "application/x-amf") { httpApplication.Context.SkipAuthorization = true; } }
public void ProcessRequest(HttpApplication context) { if (_host == null) { return; } string page = GetPageName(context.Request.RawUrl); if (page.ToLower() == "jsongateway.aspx") { context.Response.Clear(); //ThreadContext.Properties["ClientIP"] = HttpContext.Current.Request.UserHostAddress; // NOTE TODO Common.Logging push ip into ClientIP variable if (Log.IsDebugEnabled) { Log.Debug(__Res.GetString(__Res.Json_Begin)); } try { FluorineWebContext.Initialize(); Json.Rpc.JsonRpcHandler handler = new Json.Rpc.JsonRpcHandler(context.Context); handler.ProcessRequest(); if (Log.IsDebugEnabled) { Log.Debug(__Res.GetString(__Res.Json_End)); } // Causes ASP.NET to bypass all events and filtering in the HTTP pipeline chain of execution and directly execute the EndRequest event context.CompleteRequest(); } catch (Exception ex) { Log.Fatal(__Res.GetString(__Res.Json_Fatal), ex); context.Response.Clear(); context.Response.ClearHeaders(); context.Response.Status = __Res.GetString(__Res.Json_Fatal404) + " " + ex.Message; // Causes ASP.NET to bypass all events and filtering in the HTTP pipeline chain of execution and directly execute the EndRequest event context.CompleteRequest(); } } }
public void ProcessRequest(HttpContext context) { HttpApplication applicationInstance = context.ApplicationInstance; if (applicationInstance.Request.ContentType == "application/x-fcs") { applicationInstance.Response.Clear(); applicationInstance.Response.ContentType = "application/x-fcs"; GlobalContext.get_Properties().set_Item("ClientIP", HttpContext.Current.Request.UserHostAddress); if (log.get_IsDebugEnabled()) { log.Debug(__Res.GetString("Amf_Begin")); } try { FluorineWebContext.Initialize(); MessageServer messageServer = this.GetMessageServer(context); if (messageServer != null) { messageServer.ServiceRtmpt(); } else { log.Fatal(__Res.GetString("MessageServer_AccessFail")); } if (log.get_IsDebugEnabled()) { log.Debug(__Res.GetString("Amf_End")); } applicationInstance.CompleteRequest(); } catch (Exception exception) { log.Fatal(__Res.GetString("Amf_Fatal"), exception); applicationInstance.Response.Clear(); applicationInstance.Response.ClearHeaders(); applicationInstance.Response.Status = __Res.GetString("Amf_Fatal404") + " " + exception.Message; applicationInstance.CompleteRequest(); } } }
internal void HandleSWX(HttpApplication httpApplication) { if (GetPageName(httpApplication.Request.RawUrl).ToLower() == "swxgateway.aspx") { httpApplication.Response.Clear(); ILog logger = null; try { logger = LogManager.GetLogger(typeof(FluorineGateway)); GlobalContext.get_Properties().set_Item("ClientIP", HttpContext.Current.Request.UserHostAddress); } catch { } if ((logger != null) && logger.get_IsDebugEnabled()) { logger.Debug(__Res.GetString("Swx_Begin")); } try { FluorineWebContext.Initialize(); new SwxHandler().Handle(httpApplication); if ((logger != null) && logger.get_IsDebugEnabled()) { logger.Debug(__Res.GetString("Swx_End")); } httpApplication.CompleteRequest(); } catch (Exception exception) { if (logger != null) { logger.Fatal(__Res.GetString("Swx_Fatal"), exception); } httpApplication.Response.Clear(); httpApplication.Response.ClearHeaders(); httpApplication.Response.Status = __Res.GetString("Swx_Fatal404") + " " + exception.Message; httpApplication.CompleteRequest(); } } }
/// <summary> /// Initializes the module and prepares it to handle requests. /// </summary> /// <param name="application">An HttpApplication that provides access to the methods, properties, and events common to all application objects within an ASP.NET application.</param> public void Init(HttpApplication application) { //http://support.microsoft.com/kb/911816 // Do this one time for each AppDomain. if (!_initialized) { lock (_objLock) { if (!_initialized) { if (Log.IsInfoEnabled) { Log.Info("************************************"); Log.Info(__Res.GetString(__Res.Fluorine_Start)); Log.Info(__Res.GetString(__Res.Fluorine_Version, Assembly.GetExecutingAssembly().GetName().Version)); Log.Info(string.Format("Common language runtime version {0}", Environment.Version)); Log.Info("************************************"); Log.Info(__Res.GetString(__Res.MessageServer_Create)); } try { // See if we're running in full trust new PermissionSet(PermissionState.Unrestricted).Demand(); //LinkDemands and InheritenceDemands Occur at JIT Time //http://blogs.msdn.com/shawnfa/archive/2006/01/11/511716.aspx WireAppDomain(); RegisterObject(); } catch (MethodAccessException) {} catch (SecurityException) {} FluorineWebContext.Initialize(); Log.Info(__Res.GetString(__Res.ServiceBrowser_Aquire)); try { Type type = ObjectFactory.Locate("FluorineFx.ServiceBrowser.ServiceBrowserRenderer"); if (type != null) { _serviceBrowserRenderer = Activator.CreateInstance(type) as IServiceBrowserRenderer; if (_serviceBrowserRenderer != null) { Log.Info(__Res.GetString(__Res.ServiceBrowser_Aquired)); } } } catch (Exception ex) { Log.Fatal(__Res.GetString(__Res.ServiceBrowser_AquireFail), ex); } try { _messageServer = new MessageServer(); string[] possibleConfigFolderPaths = new string[PossibleConfigFolderNames.Length]; for (int i = 0; i < PossibleConfigFolderNames.Length; i++) { string configPath = Path.Combine(HttpRuntime.AppDomainAppPath, PossibleConfigFolderNames[i]); possibleConfigFolderPaths[i] = configPath; } _messageServer.Init(possibleConfigFolderPaths, _serviceBrowserRenderer != null); _messageServer.Start(); Log.Info(__Res.GetString(__Res.MessageServer_Started)); HttpContext.Current.Application[FluorineMessageServerKey] = _messageServer; } catch (Exception ex) { Log.Fatal(__Res.GetString(__Res.MessageServer_StartError), ex); } _handlers.Add(new AmfRequestHandler(this)); _handlers.Add(new StreamingAmfRequestHandler(this)); _handlers.Add(new RtmptRequestHandler(this)); _handlers.Add(new JsonRpcRequestHandler(this)); _initialized = true; } } } //Wire up the HttpApplication events. // //BeginRequest //AuthenticateRequest //AuthorizeRequest //ResolveRequestCache //A handler (a page corresponding to the request URL) is created at this point. //AcquireRequestState ** Session State ** //PreRequestHandlerExecute //[The handler is executed.] //PostRequestHandlerExecute //ReleaseRequestState //Response filters, if any, filter the output. //UpdateRequestCache //EndRequest application.BeginRequest += ApplicationBeginRequest; if (!FluorineConfiguration.Instance.FluorineSettings.Runtime.AsyncHandler) { application.PreRequestHandlerExecute += ApplicationPreRequestHandlerExecute; } else { application.AddOnPreRequestHandlerExecuteAsync(BeginPreRequestHandlerExecute, EndPreRequestHandlerExecute); } application.AuthenticateRequest += ApplicationAuthenticateRequest; //This implementation hooks the ReleaseRequestState and PreSendRequestHeaders events to //figure out as late as possible if we should install the filter. //The Post Release Request State is the event most fitted for the task of adding a filter //Everything else is too soon or too late. At this point in the execution phase the entire //response content is created and the page has fully executed but still has a few modules to go through //from an ASP.NET perspective. We filter the content here and all of the javascript renders correctly. //application.PostReleaseRequestState += new EventHandler(this.CompressContent); application.ReleaseRequestState += ApplicationReleaseRequestState; application.PreSendRequestHeaders += ApplicationPreSendRequestHeaders; application.EndRequest += ApplicationEndRequest; }
public void Init(HttpApplication application) { Exception exception; object obj2; if (!_initialized) { lock ((obj2 = _objLock)) { if (!_initialized) { try { new PermissionSet(PermissionState.Unrestricted).Demand(); this.WireAppDomain(); } catch (SecurityException) { } _initialized = true; } } } application.BeginRequest += new EventHandler(this.application_BeginRequest); if (!FluorineConfiguration.Instance.FluorineSettings.Runtime.AsyncHandler) { application.PreRequestHandlerExecute += new EventHandler(this.application_PreRequestHandlerExecute); } else { application.AddOnPreRequestHandlerExecuteAsync(new BeginEventHandler(this.BeginPreRequestHandlerExecute), new EndEventHandler(this.EndPreRequestHandlerExecute)); } application.AuthenticateRequest += new EventHandler(this.application_AuthenticateRequest); application.ReleaseRequestState += new EventHandler(this.application_ReleaseRequestState); application.PreSendRequestHeaders += new EventHandler(this.application_PreSendRequestHeaders); application.EndRequest += new EventHandler(this.application_EndRequest); FluorineWebContext.Initialize(); if (serviceBrowserRenderer == null) { lock ((obj2 = _objLock)) { if (serviceBrowserRenderer == null) { try { LogManager.GetLogger(typeof(FluorineGateway)).Info(__Res.GetString("ServiceBrowser_Aquire")); } catch { } try { Type type = ObjectFactory.Locate("FluorineFx.ServiceBrowser.ServiceBrowserRenderer"); if (type != null) { serviceBrowserRenderer = Activator.CreateInstance(type) as IServiceBrowserRenderer; if (serviceBrowserRenderer != null) { try { LogManager.GetLogger(typeof(FluorineGateway)).Info(__Res.GetString("ServiceBrowser_Aquired")); } catch { } } } } catch (Exception exception2) { exception = exception2; try { LogManager.GetLogger(typeof(FluorineGateway)).Fatal(__Res.GetString("ServiceBrowser_AquireFail"), exception); } catch { } } } } } if (messageServer == null) { lock ((obj2 = _objLock)) { if (messageServer == null) { try { ILog logger = LogManager.GetLogger(typeof(FluorineGateway)); logger.Info("************************************"); logger.Info(__Res.GetString("Fluorine_Start")); logger.Info(__Res.GetString("Fluorine_Version", new object[] { Assembly.GetExecutingAssembly().GetName().Version })); logger.Info("************************************"); logger.Info(__Res.GetString("MessageServer_Create")); } catch { } messageServer = new MessageServer(); try { string configPath = Path.Combine(Path.Combine(HttpRuntime.AppDomainAppPath, "WEB-INF"), "flex"); messageServer.Init(configPath, serviceBrowserRenderer != null); messageServer.Start(); try { LogManager.GetLogger(typeof(FluorineGateway)).Info(__Res.GetString("MessageServer_Started")); } catch { } HttpContext.Current.Application["__@fluorinemessageserver"] = messageServer; } catch (Exception exception3) { exception = exception3; try { LogManager.GetLogger(typeof(FluorineGateway)).Fatal(__Res.GetString("MessageServer_StartError"), exception); } catch { } } } } } }