protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); //var configuration = new StatelessAuthenticationConfiguration(context => //{ // var token = context.AuthorizationHeaderToken(); // var authenticator = container.Resolve<IAuthenticateUser>(); // return string.IsNullOrWhiteSpace(token) ? null : authenticator != null ? authenticator.GetUserIdentity(token) : null; //}); //StatelessAuthentication.Enable(pipelines, configuration); pipelines.EnableStatelessAuthentication(container.Resolve<IAuthenticateUser>()); pipelines.EnableCors(); // cross origin resource sharing pipelines.EnableMonitoring(); //Make every request SSL based //pipelines.BeforeRequest += ctx => //{ // return (!ctx.Request.Url.Scheme.Equals("https", StringComparison.OrdinalIgnoreCase)) ? // (Response)HttpStatusCode.Unauthorized : // null; //}; }
/// <summary> /// Reads configuration settings, configures various plugins and wires up to platform specific exception handlers. /// </summary> /// <param name="client">The ExceptionlessClient.</param> /// <param name="pipelines">The IPipelines instance.</param> public static void RegisterNancy(this ExceptionlessClient client, IPipelines pipelines) { client.Startup(); client.Configuration.AddPlugin<ExceptionlessNancyPlugin>(); pipelines.OnError += OnError; pipelines.AfterRequest += AfterRequest; }
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); // Enable JavaScript Object Notation Jsonp.Enable(pipelines); }
protected override void RequestStartup(TinyIoCContainer container, IPipelines pipelines, NancyContext context) { var formsAuthConfiguration = new FormsAuthenticationConfiguration() { RedirectUrl = "~/login", UserMapper = container.Resolve<IUserMapper>(), }; FormsAuthentication.Enable(pipelines, formsAuthConfiguration); CookieBasedSessions.Enable(pipelines); pipelines.BeforeRequest.AddItemToStartOfPipeline(ctx => { if (Helper.Settings.Instance.Client.CanConnect) return null; else { if (String.Compare(ctx.Request.Path, "/notavailable", true) == 0) { return null; } return new RedirectResponse("/notavailable"); } }); base.RequestStartup(container, pipelines, context); }
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); // In reality you would use a pre-built authentication/claims provider pipelines.BeforeRequest += (ctx) => { // World's-worse-authentication (TM) // Pull the username out of the querystring if it exists // and build claims from it var username = ctx.Request.Query.username; if (username.HasValue) { ctx.CurrentUser = new DemoUserIdentity { UserName = username.ToString(), Claims = BuildClaims(username.ToString()) }; } return null; }; pipelines.AfterRequest += (ctx) => { // If status code comes back as Unauthorized then // forward the user to the login page if (ctx.Response.StatusCode == HttpStatusCode.Unauthorized) { ctx.Response = new RedirectResponse("/login?returnUrl=" + Uri.EscapeDataString(ctx.Request.Path)); } }; }
protected override void ApplicationStartup(ILifetimeScope container, IPipelines pipelines) { pipelines.EnableJsonErrorResponse(container.Resolve<IErrorMapper>()); pipelines.EnableCORS(); base.ApplicationStartup(container, pipelines); }
public void Initialize(IPipelines pipelines) { pipelines.BeforeRequest.AddItemToStartOfPipeline(RunCassetteHandler); pipelines.BeforeRequest.AddItemToStartOfPipeline(InitializeCassetteRequestState); pipelines.AfterRequest.AddItemToEndOfPipeline(RewriteResponseContents); }
/// <summary> /// 起動処理 /// </summary> /// <param name="container"></param> /// <param name="pipelines"></param> protected override void ApplicationStartup(IUnityContainer container, IPipelines pipelines) { // 認証設定 EnableBasicAuth(container, pipelines); EnableFormAuth(container, pipelines); // DBの初期化処理 container.Resolve<IDataBaseContextInitializer>().Initialize(); // コントローラー群を起動 //this.controllers = MakeControllers(container).ToArray(); // todo debug admin追加 var isNothingAdmin = from c in container.ToMaybe() from ev in c.Resolve<IDataBaseContext>().ToMaybe() let admin = ev.GetUser(u => u.Id == "admin").FirstOrNothing() where admin.IsNothing select ev; isNothingAdmin.On(ev => ev.AddUser(new User { Id = "admin", Name = "Admin", Password = "******", Role = UserRole.Admin })); Nancy.Json.JsonSettings.MaxJsonLength = int.MaxValue; base.ApplicationStartup(container, pipelines); }
/// <summary> /// Perform any initialisation tasks /// </summary> /// <param name="pipelines">Application pipelines</param> /// <param name="context">The current context</param> public void Initialize(IPipelines pipelines, NancyContext context) { // On each request, store the NancyContext in the LogicalCallContext CallContext.LogicalSetData(NancyConfiguration.NancyContextDataSlot, context); var nancyConfiguration = NancyConfiguration.Settings; if (nancyConfiguration == null) return; var name = nancyConfiguration.PipelineName.Value; var sharpRaven = new PipelineItem(name, (nancyContext, exception) => { if (nancyConfiguration.CaptureExceptionOnError.Value) { var guid = this.ravenClient.CaptureException(exception); if (guid != null) { context.Items.Add(NancyConfiguration.SentryEventGuidKey, guid); exception.Data.Add(NancyConfiguration.SentryEventGuidKey, guid); } } return null; }); pipelines.OnError.AddItemToStartOfPipeline(sharpRaven); }
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); StatelessAuthentication.Enable(pipelines, new StatelessAuthenticationConfiguration(AuthenticateUser)); Metric.Config .WithAllCounters() .WithReporting(r => r.WithConsoleReport(TimeSpan.FromSeconds(30)) //.WithReporter("Resetting Reporter", () => new SampleResettingReporter(), TimeSpan.FromSeconds(5)) ) .WithNancy(pipelines); // read remote metrics from NancySample //Metric.Advanced.AttachContext("Remote", // new RemoteMetricsContext( // new Uri("http://localhost:1234/v2/json"), // TimeSpan.FromSeconds(5), // s => JsonConvert.DeserializeObject<JsonMetricsContext>(s))); pipelines.AfterRequest += ctx => { if (ctx.Response != null) { ctx.Response .WithHeader("Access-Control-Allow-Origin", "*") .WithHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); } }; }
protected override void RequestStartup(TinyIoCContainer container, IPipelines pipelines, NancyContext context) { var formsAuthConfig = new FormsAuthenticationConfiguration { RedirectUrl = "~/login", UserMapper = container.Resolve<IUserMapper>() }; FormsAuthentication.Enable(pipelines, formsAuthConfig); pipelines.AfterRequest += ctx => { var dbContext = container.Resolve<SmartFlowContext>(); dbContext.SaveChanges(); }; pipelines.OnError += (ctx, ex) => { var logger = container.Resolve<TextFileLogger>(); logger.Write("Error", Enums.LogLevel.ApplicationError, ex); return ErrorResponse.FromException(ex); }; base.RequestStartup(container, pipelines, context); }
protected override void ApplicationStartup(ILifetimeScope container, IPipelines pipelines) { pipelines.OnError.AddItemToEndOfPipeline((context, exception) => { var message = string.Format("Exception: {0}", exception); new ElmahErrorHandler.LogEvent(message).Raise(); return null; }); pipelines.BeforeRequest.AddItemToEndOfPipeline(ctx => { var lang = ctx.Request.Headers.AcceptLanguage.FirstOrDefault(); if (lang != null) { // Accepted language can be something like "fi-FI", but it can also can be like fi-FI,fi;q=0.9,en;q=0.8 if (lang.Contains(",")) lang = lang.Substring(0, lang.IndexOf(",")); System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(lang); System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang); } return null; }); DoMigrations(); }
protected override void ApplicationStartup(TinyIoC.TinyIoCContainer container, IPipelines pipelines) { FormsAuthentication.Enable(pipelines, new FormsAuthenticationConfiguration { RedirectUrl = "~/login", UserMapper = _mocks[typeof(IUserRepository)] as IUserRepository }); }
/// <summary> /// Perform any initialisation tasks /// </summary> /// <param name="pipelines">Application pipelines</param> public void Initialize(IPipelines pipelines) { foreach (var viewEngine in viewEngines) { viewEngine.Initialize(CreateViewEngineStartupContext(viewEngine)); } }
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); var configuration = new BasicAuthenticationConfiguration(container.Resolve<IUserValidator>(), "test-realm"); BasicAuthentication.Enable(pipelines,configuration); var stateless = new StatelessAuthenticationConfiguration(c => { const string key = "X-Auth-Token"; string token = null; if (c.Request.Headers.Authorization == null || !c.Request.Headers.Authorization.Any()) { _log.ErrorFormat("No request headers are present in the request {0}", c); return null; } if (c.Request.Headers.FirstOrDefault(f => f.Key == key).Value == null || string.IsNullOrEmpty(c.Request.Headers.FirstOrDefault(f => f.Key == key).Value.First())) { _log.ErrorFormat("No Key present in the request headers"); return null; } token = c.Request.Headers.FirstOrDefault(f => f.Key == key).Value.First(); _log.InfoFormat("Token used {0}", token); var user = container.Resolve<IUserApiMapper>(); return user.GetUserFromToken(token); }); StatelessAuthentication.Enable(pipelines, stateless); }
protected override void RequestStartup(IWindsorContainer container, IPipelines pipelines, NancyContext context) { base.RequestStartup(container, pipelines, context); pipelines.BeforeRequest.AddItemToEndOfPipeline(nancyContext => { this.Info(() => "Monitoring API invoked at {0}[{1}]".FormatWith(nancyContext.Request.Method, nancyContext.Request.Url)); var token = ""; var cookie = nancyContext.Request.Headers.Cookie.FirstOrDefault(x => (x.Name + "").ToLower() == "token"); if (cookie != null) token = HttpUtility.UrlDecode(cookie.Value); nancyContext.Request.Headers.Authorization = "Token {0}".FormatWith(token); var user = container.Resolve<ITokenizer>().Detokenize(token, nancyContext, new DefaultUserIdentityResolver()); if (user != null) { nancyContext.CurrentUser = user; } return null; }); pipelines.OnError.AddItemToEndOfPipeline((nancyContext, exception) => { this.Error(() => "Error on Monitoring request {0}[{1}] => {2}".FormatWith(nancyContext.Request.Method, nancyContext.Request.Url, exception)); return ErrorResponse.FromException(exception); }); TokenAuthentication.Enable(pipelines, new TokenAuthenticationConfiguration(container.Resolve<ITokenizer>())); pipelines.OnError.AddItemToEndOfPipeline((nancyContext, exception) => { this.Error(() => "Error on Monitoring request {0}[{1}] => {2}".FormatWith(nancyContext.Request.Method, nancyContext.Request.Url, exception)); return ErrorResponse.FromException(exception); }); }
protected override void ApplicationStartup(ILifetimeScope container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); // register interfaces/implementations container.Update(builder => builder //.RegisterType<CouchDbTShirtRepository>() .RegisterType<MockedTShirtRepository>() .As<ITShirtRepository>()); // register MyCouchStore parameter for couchdb repo classes container.Update(builder => builder .RegisterType<MyCouchStore>() .As<IMyCouchStore>() .UsingConstructor(typeof (string), typeof (string)) .WithParameters(new [] { new NamedParameter("dbUri","http://*****:*****@localhost:5984/"), new NamedParameter("dbName","cshirts") }) ); // TODO: remove after implementing REST-Api & replacing razor with angular // display razor error messages StaticConfiguration.DisableErrorTraces = false; }
protected override void RequestStartup(TinyIoCContainer requestContainer, IPipelines pipelines, NancyContext context) { base.RequestStartup(requestContainer, pipelines, context); // At request startup we modify the request pipelines to // include forms authentication - passing in our now request // scoped user name mapper. // // The pipelines passed in here are specific to this request, // so we can add/remove/update items in them as we please. var loginService = requestContainer.Resolve<LoginService>(); var authConfiguration = new StatelessAuthenticationConfiguration(c => { var apiKeyFromRequest = ((DynamicDictionaryValue)c.Request.Query.ApiKey).Value as ApiKey ?? ((DynamicDictionaryValue)c.Request.Form.ApiKey).Value as ApiKey; if (apiKeyFromRequest == null) return null; if (loginService.IsApiKeyValid(apiKeyFromRequest)) { return new UserIdentity(apiKeyFromRequest.Username, new List<string>()); } return null; }); StatelessAuthentication.Enable(pipelines, authConfiguration); }
protected override void ApplicationStartup(IWindsorContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); TokenAuthentication.Enable(pipelines, new TokenAuthenticationConfiguration(container.Resolve<ITokenizer>())); StaticConfiguration.DisableErrorTraces = false; }
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); JsonSettings.RetainCasing = true; JsonSettings.MaxJsonLength = int.MaxValue; StaticConfiguration.CaseSensitive = false; var sessionManager = new SessionManager(new MemorySessionProvider("Encore", int.Parse(ConfigurationManager.AppSettings["Session.Timeout"]))); sessionManager.Run(pipelines); pipelines.OnError.AddItemToEndOfPipeline((ctx, ex) => { log.Error("Unhandled error on request: " + ctx.Request.Url, ex); ctx.Items["error"] = new Error { ErrorMessage = "An unhandled error occurred", StatusCode = HttpStatusCode.InternalServerError }; return null; }); ConfigureAutoMapper(); }
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); ExceptionlessClient.Default.Configuration.UseTraceLogger(); ExceptionlessClient.Default.RegisterNancy(pipelines); }
public void Initialize(IPipelines pipelines) { pipelines.OnError.AddItemToEndOfPipeline((ctx, ex) => { Debug.WriteLine($"Error on request {ex.Message}"); return null; }); }
protected override void ApplicationStartup(ILifetimeScope container, IPipelines pipelines) { StaticConfiguration.DisableErrorTraces = false; // Enable memory sessions, and secure them against session hijacking pipelines.EnableInProcSessions(); pipelines.BeforeRequest.AddItemToStartOfPipeline(ctx => { var antiSessionHijackLogic = container.Resolve<IAntiSessionHijackLogic>(); return antiSessionHijackLogic.InterceptHijackedSession(ctx.Request); }); pipelines.AfterRequest.AddItemToEndOfPipeline(ctx => { var antiSessionHijackLogic = container.Resolve<IAntiSessionHijackLogic>(); antiSessionHijackLogic.ProtectResponseFromSessionHijacking(ctx); }); // Load the user from the AspNet session. If one is found, create a Nancy identity and assign it. pipelines.BeforeRequest.AddItemToEndOfPipeline(ctx => { var identityAssigner = container.Resolve<INancyIdentityFromContextAssigner>(); identityAssigner.AssignNancyIdentityFromContext(ctx); return null; }); pipelines.OnError = pipelines.OnError + ErrorPipelines.HandleModelBindingException() + ErrorPipelines.HandleRequestValidationException() + ErrorPipelines.HandleSecurityException(); base.ApplicationStartup(container, pipelines); }
// The bootstrapper enables you to reconfigure the composition of the framework, // by overriding the various methods and properties. // For more information https://github.com/NancyFx/Nancy/wiki/Bootstrapper protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { container.Register<IStorage, Storage>().AsSingleton(); container.Register<CredentialsStorage>().AsSingleton(); var serverScheduler = new ServerScheduler(container.Resolve<IStorage>()); serverScheduler.Start(); }
/// <summary> /// Applications the startup. /// </summary> /// <param name="container">The container.</param> /// <param name="pipelines">The pipelines.</param> protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); pipelines.BeforeRequest += ctx => { var identity = (WindowsIdentity)HttpContext.Current.User.Identity; if (identity.IsAuthenticated) { // Resolve<UserManager> // Get from DB/Cache // Add user to ICurrentUSerProvider // Get Claims ctx.CurrentUser = new DemoUserIdentity { UserName = identity.Name, Claims = new[] { "Basic", "Finance" } }; } return null; }; pipelines.AfterRequest += ctx => { // If status code comes back as Unauthorized then // forward the user to the unauthorised page //if (ctx.Response.StatusCode == HttpStatusCode.Unauthorized // || ctx.Response.StatusCode == HttpStatusCode.Forbidden) //{ // ctx.Response = new RedirectResponse("/Unauthorised"); //} }; }
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); // Add an error handler to catch our entity not found exceptions pipelines.OnError += (context, exception) => { // If we've raised an EntityNotFound exception in our data layer if (exception is EntityNotFoundException) return new Response() { StatusCode = HttpStatusCode.NotFound, ContentType = "text/html", Contents = (stream) => { var errorMessage = Encoding.UTF8.GetBytes("A Data Entity with the requested ID was not found in the database."); stream.Write(errorMessage, 0, errorMessage.Length); } }; // If none of the above handles our exception, then pass it on as a 500 throw exception; }; // End error handler CookieBasedSessions.Enable(pipelines); }
protected override void RequestStartup(IWindsorContainer container, IPipelines pipelines, NancyContext context) { //var formsAuthConfiguration = new FormsAuthenticationConfiguration //{ // RedirectUrl = "/login", // UserMapper = container.Resolve<IUserMapper>(), //}; //FormsAuthentication.Enable(pipelines, formsAuthConfiguration); pipelines.BeforeRequest.AddItemToEndOfPipeline(ctx => { if (ctx.CurrentUser != null) ctx.ViewBag.UserName = ctx.CurrentUser.UserName; return null; }); pipelines.BeforeRequest.AddItemToStartOfPipeline(nancyContext => { //nancyContext.Request.Headers.UserAgent = "Lightstone"; var token = ""; var cookie = nancyContext.Request.Headers.Cookie.FirstOrDefault(x => (x.Name + "").ToLower() == "token"); if (cookie != null) token = HttpUtility.UrlDecode(cookie.Value); //nancyContext.Request.Headers.Authorization = "Token {0}".FormatWith(HttpUtility.UrlDecode(token.Value)); var user = container.Resolve<ITokenizer>().Detokenize(token, nancyContext, new DefaultUserIdentityResolver()); if (user != null) nancyContext.CurrentUser = user; return null; }); TokenAuthentication.Enable(pipelines, new TokenAuthenticationConfiguration(container.Resolve<ITokenizer>())); }
/// <summary> /// Enables forms authentication for the application /// </summary> /// <param name="pipelines">Pipelines to add handlers to (usually "this")</param> /// <param name="configuration">Forms authentication configuration</param> public static void Enable(IPipelines pipelines, FormsAuthenticationConfiguration configuration) { if (pipelines == null) { throw new ArgumentNullException("pipelines"); } if (configuration == null) { throw new ArgumentNullException("configuration"); } if (!configuration.IsValid) { throw new ArgumentException("Configuration is invalid", "configuration"); } currentConfiguration = configuration; pipelines.BeforeRequest.AddItemToStartOfPipeline(GetLoadAuthenticationHook(configuration)); if (!configuration.DisableRedirect) { pipelines.AfterRequest.AddItemToEndOfPipeline(GetRedirectToLoginHook(configuration)); } }
protected override void RequestStartup(ILifetimeScope container, IPipelines pipelines, NancyContext context) { // No registrations should be performed in here, however you may // resolve things that are needed during request startup. FormsAuthentication.Enable(pipelines, new FormsAuthenticationConfiguration() { RedirectUrl = "~/account/login", UserMapper = container.Resolve<IUserMapper>(), }); pipelines.BeforeRequest.AddItemToEndOfPipeline(c => { if (c.CurrentUser.IsAuthenticated()) { container.Resolve<ITenantContext>().SetTenantId(c.CurrentUser.AsAuthenticatedUser().Id, c.CurrentUser.HasClaim("Admin")); c.ViewBag.UserName = c.CurrentUser.AsAuthenticatedUser().FullName; c.ViewBag.IsAdmin = c.CurrentUser.HasClaim("Admin"); } else container.Resolve<ITenantContext>().SetTenantId(null, false); return null; }); }
protected override void ApplicationStartup(ILifetimeScope container, IPipelines pipelines) { pipelines.OnError.AddItemToEndOfPipeline(LogException); pipelines.BeforeRequest.AddItemToEndOfPipeline(DetectLanguage); DoMigrations(); }
protected override void ApplicationStartup(IWindsorContainer container, IPipelines pipelines) { // No registrations should be performed in here, however you may // resolve things that are needed during application startup. }
/// <summary> /// Enables the diagnostics dashboard and will intercept all requests that are passed to /// the condigured paths. /// </summary> public static void Enable(IPipelines pipelines, IEnumerable <IDiagnosticsProvider> providers, IRootPathProvider rootPathProvider, IRequestTracing requestTracing, NancyInternalConfiguration configuration, IModelBinderLocator modelBinderLocator, IEnumerable <IResponseProcessor> responseProcessors, IEnumerable <IRouteSegmentConstraint> routeSegmentConstraints, ICultureService cultureService, IRequestTraceFactory requestTraceFactory, IEnumerable <IRouteMetadataProvider> routeMetadataProviders, ITextResource textResource, INancyEnvironment environment, IRuntimeEnvironmentInformation runtimeEnvironmentInformation, ITypeCatalog typeCatalog) { var diagnosticsConfiguration = environment.GetValue <DiagnosticsConfiguration>(); var diagnosticsEnvironment = GetDiagnosticsEnvironment(); var diagnosticsModuleCatalog = new DiagnosticsModuleCatalog(providers, rootPathProvider, requestTracing, configuration, diagnosticsEnvironment, typeCatalog); var diagnosticsRouteCache = new RouteCache( diagnosticsModuleCatalog, new DefaultNancyContextFactory(cultureService, requestTraceFactory, textResource, environment), new DefaultRouteSegmentExtractor(), new DefaultRouteDescriptionProvider(), cultureService, routeMetadataProviders); var diagnosticsRouteResolver = new DefaultRouteResolver( diagnosticsModuleCatalog, new DiagnosticsModuleBuilder(rootPathProvider, modelBinderLocator, diagnosticsEnvironment, environment), diagnosticsRouteCache, new RouteResolverTrie(new TrieNodeFactory(routeSegmentConstraints)), environment); var serializer = new DefaultObjectSerializer(); pipelines.BeforeRequest.AddItemToStartOfPipeline( new PipelineItem <Func <NancyContext, Response> >( PipelineKey, ctx => { if (!ctx.ControlPanelEnabled) { return(null); } if (!ctx.Request.Path.StartsWith(diagnosticsConfiguration.Path, StringComparison.OrdinalIgnoreCase)) { return(null); } ctx.Items[ItemsKey] = true; var resourcePrefix = string.Concat(diagnosticsConfiguration.Path, "/Resources/"); if (ctx.Request.Path.StartsWith(resourcePrefix, StringComparison.OrdinalIgnoreCase)) { var resourceNamespace = "Nancy.Diagnostics.Resources"; var path = Path.GetDirectoryName(ctx.Request.Url.Path.Replace(resourcePrefix, string.Empty)) ?? string.Empty; if (!string.IsNullOrEmpty(path)) { resourceNamespace += string.Format(".{0}", path.Replace(Path.DirectorySeparatorChar, '.')); } return(new EmbeddedFileResponse( typeof(DiagnosticsHook).Assembly, resourceNamespace, Path.GetFileName(ctx.Request.Url.Path))); } RewriteDiagnosticsUrl(diagnosticsConfiguration, ctx); return(ValidateConfiguration(diagnosticsConfiguration) ? ExecuteDiagnostics(ctx, diagnosticsRouteResolver, diagnosticsConfiguration, serializer, diagnosticsEnvironment) : GetDiagnosticsHelpView(ctx, diagnosticsEnvironment, runtimeEnvironmentInformation)); })); }
public static void Disable(IPipelines pipelines) { pipelines.BeforeRequest.RemoveByName(PipelineKey); }
/// <summary> /// Initialise the request - can be used for adding pre/post hooks and /// any other per-request initialisation tasks that aren't specifically container setup /// related /// </summary> /// <param name="container">Container</param> /// <param name="pipelines">Current pipelines</param> /// <param name="context">Current context</param> protected virtual void RequestStartup(TContainer container, IPipelines pipelines, NancyContext context) { }
/// <summary> /// Initialise the bootstrapper - can be used for adding pre/post hooks and /// any other initialisation tasks that aren't specifically container setup /// related /// </summary> /// <param name="container">Container instance for resolving types if required.</param> protected virtual void ApplicationStartup(TContainer container, IPipelines pipelines) { }
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); container.Register(this.log); }
public void Register(IPipelines pipelines) { pipelines.BeforeRequest.AddItemToStartOfPipeline(LogStart); pipelines.AfterRequest.AddItemToEndOfPipeline(LogEnd); pipelines.OnError.AddItemToEndOfPipeline(LogError); }
public void Register(IPipelines pipelines) { pipelines.AfterRequest.AddItemToStartOfPipeline((Action <NancyContext>)Handle); }
/////// <summary>Gets the internal configuration.</summary> ////protected override NancyInternalConfiguration InternalConfiguration ////{ //// get //// { //// return NancyInternalConfiguration.WithOverrides(x => x.ViewLocationProvider = typeof(ResourceViewLocationProvider)); //// } ////} #endregion #region Methods /// <summary>The application startup.</summary> /// <param name="container">The container.</param> /// <param name="pipelines">The pipelines.</param> protected override void ApplicationStartup(ILifetimeScope container, IPipelines pipelines) { BundleConfig.RegisterBundles(BundleTable.Bundles); }
protected override void RequestStartup(IWindsorContainer container, IPipelines pipelines, NancyContext context) { // No registrations should be performed in here, however you may // resolve things that are needed during request startup. }
public BasicAuthenticationFixture() { this.config = new BasicAuthenticationConfiguration(A.Fake <IUserValidator>(), "realm", UserPromptBehaviour.Always); this.hooks = new Pipelines(); BasicAuthentication.Enable(this.hooks, this.config); }
protected override void RequestStartup(ILifetimeScope container, IPipelines pipelines, NancyContext context) { pipelines.SetupTokenAuthentication(container.Resolve <IJwtTokenHandler>()); }
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); ConfigureStatelessAuth(container, pipelines); }
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { JsonSettings.MaxJsonLength = Int32.MaxValue; }
public static MetricsConfig WithHapper(this MetricsConfig metricsConfig, IPipelines pipelines) { return(metricsConfig .WithHapper(pipelines, hpc => hpc.WithHapperMetrics(m => m.WithAllMetrics()).WithMetricsModule())); }
protected override void ApplicationStartup(TinyIoC.TinyIoCContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); StaticConfiguration.DisableCaches = false; StaticConfiguration.DisableErrorTraces = false; this.Conventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("moo", "Content")); CookieBasedSessions.Enable(pipelines); pipelines.AfterRequest += (ctx) => { var username = ctx.Request.Query.pirate; if (username.HasValue) { ctx.Response = new HereBeAResponseYouScurvyDog(ctx.Response); } }; }
public static void RegisterCompressionCheck(this IPipelines pipelines) { pipelines.AfterRequest.AddItemToEndOfPipeline(CheckForCompression); }
public static IPipelines WithMetrics(this IPipelines pipelines) { Metric.Config.WithAllCounters().WithHapper(pipelines); return(pipelines); }
protected override void ApplicationStartup(ILifetimeScope container, IPipelines pipelines) { pipelines.OnError += OnErrorHook.OnError; }
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); TinyIoCContainer.Current.Register(new SqlServerConnection(), "sqlConn"); }
public static void AddRequestId(this IPipelines pipelines) { pipelines.BeforeRequest += SetRequestId; pipelines.AfterRequest += SetHostName; pipelines.AfterRequest += AddCORSSupport; }
protected override void RequestStartup(TinyIoCContainer container, IPipelines pipelines, NancyContext context) { base.RequestStartup(container, pipelines, context); }
/// <summary> /// Perform any initialisation tasks /// </summary> /// <param name="pipelines">Application pipelines</param> public void Initialize(IPipelines pipelines) { }
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { StaticConfiguration.EnableRequestTracing = true; }
public void Hook(IPipelines p) { p.BeforeRequest.AddItemToEndOfPipeline((ctx) => { if (_GeoIP == null) { var path = Path.Combine(ctx.GetRootPath(), "App_Data", "GeoLite2-Country.mmdb"); if (File.Exists(path)) { var fi = new FileInfo(path); if (DateTime.Now.Subtract(fi.LastWriteTime).TotalDays > 40) { File.Delete(path); } } if (File.Exists(path) == false) { // Download Geolite 2 First var url = "http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz"; using (WebClient client = new WebClient()) { client.DownloadFile(url, path + ".tar.gz"); } using (Stream inStream = File.OpenRead(path + ".tar.gz")) { using (Stream gzipStream = new GZipInputStream(inStream)) { TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream); tarArchive.ExtractContents(Path.Combine(ctx.GetRootPath(), "App_Data")); tarArchive.Close(); gzipStream.Close(); } inStream.Close(); } // the database is stored in folder var geoliteDir = Directory.GetDirectories(Path.Combine(ctx.GetRootPath(), "App_Data")).Where(d => d.Contains("GeoLite2-Country")).FirstOrDefault(); File.Copy(Path.Combine(geoliteDir, "GeoLite2-Country.mmdb"), path); File.Delete(path + ".tar.gz"); Directory.Delete(geoliteDir, true); } _GeoIP = new DatabaseReader(path); } CountryResponse country; if (_GeoIP.TryCountry(ctx.Request.UserHostAddress, out country)) { ctx.Items["Country"] = country.Country.Name; ctx.Items["CountryISO"] = country.Country.IsoCode.ToLowerInvariant(); } else { ctx.Items["Country"] = "Thailand"; ctx.Items["CountryISO"] = "th"; } // Gets the language from hostname var hostnameParts = ctx.Request.Url.HostName.Split('.'); if (hostnameParts[0].Length == 2) { ctx.Items["Language"] = hostnameParts[0]; } // try setting from the settings if (ctx.Items.ContainsKey("Language") == false) { var settings = ctx.GetSiteSettings(); if (settings.multilanguage != null && settings.multilanguage.defaultLanguage != null) { ctx.Items["Language"] = settings.multilanguage.defaultLanguage; } } if (ctx.Items.ContainsKey("Language") == false) { ctx.Items["Language"] = string.Empty; } return(null); }); }
public void Initialize(IPipelines pipelines) { pipelines.AfterRequest += CheckForCompression; }
public IWire EnableCsrf(IPipelines pipelines) { NancyStackWiring.ConfigurationOptions.CsrfEnabled = true; Csrf.Enable(pipelines); return(this); }
/// <summary> /// Module requires basic authentication /// </summary> /// <param name="pipeline">Bootstrapper to enable</param> /// <param name="configuration">Basic authentication configuration</param> public static void EnableBasicAuthentication(this IPipelines pipeline, BasicAuthenticationConfiguration configuration) { BasicAuthentication.Enable(pipeline, configuration); }
public void Register(IPipelines pipelines) { pipelines.BeforeRequest.AddItemToStartOfPipeline((Func <NancyContext, Response>)Handle); }
/// <summary> /// Use cors module /// </summary> /// <param name="pipelines"></param> /// <returns></returns> public static IPipelines UseCors(this IPipelines pipelines) { return(UseCors(pipelines, null)); }