public static void Generate(IServiceScopeFactory serviceScopeFactory, GeneratorConfig config, string basePath, bool generateSearchDocuments, string searchIndex)
        {
            Console.WriteLine("Generate 404 Page");
            var notFoundContent = ErrorPageBuilder.RenderPage(serviceScopeFactory, 404, config).Result;

            FileHelper.WriteToFile(FileHelper.GetActualFilePath(basePath, "output/html/404.html"), notFoundContent);
        }
Exemple #2
0
    private RequestDelegate BuildApplication()
    {
        Debug.Assert(_applicationServices != null, "Initialize must be called first.");

        try
        {
            _applicationServicesException?.Throw();
            EnsureServer();

            var builderFactory = _applicationServices.GetRequiredService <IApplicationBuilderFactory>();
            var builder        = builderFactory.CreateBuilder(Server.Features);
            builder.ApplicationServices = _applicationServices;

            var startupFilters = _applicationServices.GetService <IEnumerable <IStartupFilter> >();
            Action <IApplicationBuilder> configure = _startup !.Configure;
            if (startupFilters != null)
            {
                foreach (var filter in startupFilters.Reverse())
                {
                    configure = filter.Configure(configure);
                }
            }

            configure(builder);

            return(builder.Build());
        }
        catch (Exception ex)
        {
            if (!_options.SuppressStatusMessages)
            {
                // Write errors to standard out so they can be retrieved when not in development mode.
                Console.WriteLine("Application startup exception: " + ex.ToString());
            }
            var logger = _applicationServices.GetRequiredService <ILogger <WebHost> >();
            _logger.ApplicationError(ex);

            if (!_options.CaptureStartupErrors)
            {
                throw;
            }

            EnsureServer();

            // Generate an HTML error page.
            var hostingEnv         = _applicationServices.GetRequiredService <IHostEnvironment>();
            var showDetailedErrors = hostingEnv.IsDevelopment() || _options.DetailedErrors;

            return(ErrorPageBuilder.BuildErrorPageApplication(hostingEnv.ContentRootFileProvider, logger, showDetailedErrors, ex));
        }
    }
        public ResponseDTO DefineResponseType(RequestDTO requestDto)
        {
            ResponseDTO responseDto = new ResponseDTO();

            if (CheckRequestPath(requestDto.Path))
            {
                responseDto = _fileResponseBuilder.CreateFileResponse(requestDto);
            }
            else if (requestDto.Path == "\\auth")
            {
                AuthenticationPageBuilder authenticationPage = new AuthenticationPageBuilder(
                    _statusCodeResponse.GetResponseCode(StatusCode.OK));
                responseDto = authenticationPage.CreateStaticResponse();
            }
            else if (requestDto.Path == "\\auth\\challenge")
            {
                bool isValidUser = _userController.IsValidUser(requestDto.BodyValues);
                if (!isValidUser)
                {
                    ErrorPageBuilder errorPage = new ErrorPageBuilder(
                        _statusCodeResponse.GetResponseCode(StatusCode.UNAUTHORIZED));
                    responseDto = errorPage.CreateStaticResponse();
                }
                else
                {
                    AuthenticationResponsePageBuilder authenticationResponsePage =
                        new AuthenticationResponsePageBuilder(
                            _statusCodeResponse.GetResponseCode(StatusCode.OK));
                    responseDto             = authenticationResponsePage.CreateStaticResponse();
                    responseDto.UserName    = requestDto.BodyValues.FirstOrDefault(x => x.Key == "user").Value;
                    responseDto.CookieValue = Guid.NewGuid().ToString();
                }
            }
            else
            {
                ErrorPageBuilder errorPage = new ErrorPageBuilder(
                    _statusCodeResponse.GetResponseCode(StatusCode.NOT_FOUND));
                responseDto = errorPage.CreateStaticResponse();
            }

            return(responseDto);
        }
        public ResponseDTO CreateFileResponse(RequestDTO requestDto)
        {
            ResponseDTO responseDto = new ResponseDTO()
            {
                IsStreamResponse = true
            };

            string physicalPath = _fileService.GetFilePath(requestDto.Path);


            if (_fileService.CheckIfExists(physicalPath))
            {
                if (!requestDto.isAuthenticated)
                {
                    ErrorPageBuilder errorPage = new ErrorPageBuilder(
                        _statusCodeResponse.GetResponseCode(StatusCode.UNAUTHORIZED));
                    responseDto = errorPage.CreateStaticResponse();
                }
                else
                {
                    responseDto.IsStreamResponse = true;
                    responseDto.FileStream       = _fileService.ReadFile(physicalPath);
                    responseDto.ContentType      = _fileService.GetFileMimeType(requestDto.Path);
                    responseDto.ContentLength    = Convert.ToInt32(responseDto.FileStream.Length);
                    responseDto.Code             = _statusCodeResponse.GetResponseCode(StatusCode.OK);
                }
            }
            else
            {
                ErrorPageBuilder errorPage = new ErrorPageBuilder(
                    _statusCodeResponse.GetResponseCode(StatusCode.NOT_FOUND));
                responseDto = errorPage.CreateStaticResponse();
            }

            return(responseDto);
        }
Exemple #5
0
    public async Task StartAsync(CancellationToken cancellationToken)
    {
        HostingEventSource.Log.HostStart();

        var serverAddressesFeature = Server.Features.Get <IServerAddressesFeature>();
        var addresses = serverAddressesFeature?.Addresses;

        if (addresses != null && !addresses.IsReadOnly && addresses.Count == 0)
        {
            var urls = Configuration[WebHostDefaults.ServerUrlsKey];
            if (!string.IsNullOrEmpty(urls))
            {
                serverAddressesFeature !.PreferHostingUrls = WebHostUtilities.ParseBool(Configuration, WebHostDefaults.PreferHostingUrlsKey);

                foreach (var value in urls.Split(';', StringSplitOptions.RemoveEmptyEntries))
                {
                    addresses.Add(value);
                }
            }
        }

        RequestDelegate?application = null;

        try
        {
            var configure = Options.ConfigureApplication;

            if (configure == null)
            {
                throw new InvalidOperationException($"No application configured. Please specify an application via IWebHostBuilder.UseStartup, IWebHostBuilder.Configure, or specifying the startup assembly via {nameof(WebHostDefaults.StartupAssemblyKey)} in the web host configuration.");
            }

            var builder = ApplicationBuilderFactory.CreateBuilder(Server.Features);

            foreach (var filter in StartupFilters.Reverse())
            {
                configure = filter.Configure(configure);
            }

            configure(builder);

            // Build the request pipeline
            application = builder.Build();
        }
        catch (Exception ex)
        {
            Logger.ApplicationError(ex);

            if (!Options.WebHostOptions.CaptureStartupErrors)
            {
                throw;
            }

            var showDetailedErrors = HostingEnvironment.IsDevelopment() || Options.WebHostOptions.DetailedErrors;

            application = ErrorPageBuilder.BuildErrorPageApplication(HostingEnvironment.ContentRootFileProvider, Logger, showDetailedErrors, ex);
        }

        var httpApplication = new HostingApplication(application, Logger, DiagnosticListener, ActivitySource, Propagator, HttpContextFactory);

        await Server.StartAsync(httpApplication, cancellationToken);

        if (addresses != null)
        {
            foreach (var address in addresses)
            {
                Log.ListeningOnAddress(LifetimeLogger, address);
            }
        }

        if (Logger.IsEnabled(LogLevel.Debug))
        {
            foreach (var assembly in Options.WebHostOptions.GetFinalHostingStartupAssemblies())
            {
                Log.StartupAssemblyLoaded(Logger, assembly);
            }
        }

        if (Options.HostingStartupExceptions != null)
        {
            foreach (var exception in Options.HostingStartupExceptions.InnerExceptions)
            {
                Logger.HostingStartupAssemblyError(exception);
            }
        }
    }