public void MakeAccessible(bool passive) { if (OsInfo.IsWindows) { if (_runtimeInfo.IsAdmin) { _firewallAdapter.MakeAccessible(); } else if (!passive) { throw new RemoteAccessException("Failed to register URLs for Readarr. Readarr will not be accessible remotely"); } } }
public void StartServer() { IgnoreCertErrorPolicy.Register(); if (OsInfo.IsWindows) { if (_runtimeInfo.IsAdmin) { _firewallAdapter.MakeAccessible(); _sslAdapter.Register(); } _urlAclAdapter.ConfigureUrl(); } var options = new StartOptions(_urlAclAdapter.Url) { ServerFactory = "Microsoft.Owin.Host.HttpListener" }; if (_configFileProvider.EnableSsl) { _logger.Trace("SSL enabled, listening on: {0}", _urlAclAdapter.HttpsUrl); options.Urls.Add(_urlAclAdapter.HttpsUrl); } _logger.Info("starting server on {0}", _urlAclAdapter.Url); try { _host = WebApp.Start(OwinServiceProviderFactory.Create(), options, BuildApp); } catch (TargetInvocationException ex) { if (ex.InnerException == null) { throw; } if (ex.InnerException is HttpListenerException) { throw new PortInUseException("Port {0} is already in use, please ensure NzbDrone is not already running.", ex, _configFileProvider.Port); } throw ex.InnerException; } }
public void StartServer() { IgnoreCertErrorPolicy.Register(); if (OsInfo.IsWindows) { if (_runtimeInfo.IsAdmin) { _firewallAdapter.MakeAccessible(); _sslAdapter.Register(); } } _urlAclAdapter.ConfigureUrl(); var options = new StartOptions() { ServerFactory = "Microsoft.Owin.Host.HttpListener" }; _urlAclAdapter.Urls.ForEach(options.Urls.Add); _logger.Info("Listening on the following URLs:"); foreach (var url in options.Urls) { _logger.Info(" {0}", url); } try { _host = WebApp.Start(OwinServiceProviderFactory.Create(), options, BuildApp); } catch (TargetInvocationException ex) { if (ex.InnerException == null) { throw; } if (ex.InnerException is HttpListenerException) { throw new PortInUseException("Port {0} is already in use, please ensure NzbDrone is not already running.", ex, _configFileProvider.Port); } throw ex.InnerException; } }
public void MakeAccessible(bool passive) { if (OsInfo.IsWindows) { if (_runtimeInfo.IsAdmin) { _firewallAdapter.MakeAccessible(); _sslAdapter.Register(); } else if (!passive) { throw new RemoteAccessException("Failed to register URLs for Gamearr. Gamearr will not be accessible remotely"); } } _urlAclAdapter.ConfigureUrls(); }
public void StartServer() { if (OsInfo.IsWindows) { if (_runtimeInfo.IsAdmin) { _firewallAdapter.MakeAccessible(); _sslAdapter.Register(); } } _urlAclAdapter.ConfigureUrls(); _logger.Info("Listening on the following URLs:"); foreach (var url in _urlAclAdapter.Urls) { _logger.Info(" {0}", url); } _owinApp = _owinAppFactory.CreateApp(_urlAclAdapter.Urls); }
public void StartServer() { if (OsInfo.IsWindows) { if (_runtimeInfo.IsAdmin) { _firewallAdapter.MakeAccessible(); } } var bindAddress = _configFileProvider.BindAddress; var enableSsl = _configFileProvider.EnableSsl; var sslCertPath = _configFileProvider.SslCertPath; var urls = new List <string>(); urls.Add(BuildUrl("http", bindAddress, _configFileProvider.Port)); if (enableSsl && sslCertPath.IsNotNullOrWhiteSpace()) { urls.Add(BuildUrl("https", bindAddress, _configFileProvider.SslPort)); } _host = new WebHostBuilder() .UseUrls(urls.ToArray()) .UseKestrel(options => { if (enableSsl && sslCertPath.IsNotNullOrWhiteSpace()) { options.ConfigureHttpsDefaults(configureOptions => { X509Certificate2 certificate; try { certificate = new X509Certificate2(sslCertPath, _configFileProvider.SslCertPassword, X509KeyStorageFlags.DefaultKeySet); } catch (CryptographicException ex) { if (ex.HResult == 0x2 || ex.HResult == 0x2006D080) { throw new RadarrStartupException(ex, $"The SSL certificate file {sslCertPath} does not exist"); } throw new RadarrStartupException(ex); } configureOptions.ServerCertificate = certificate; }); } }) .ConfigureKestrel(serverOptions => { serverOptions.AllowSynchronousIO = true; }) .ConfigureLogging(logging => { logging.AddProvider(new NLogLoggerProvider()); logging.SetMinimumLevel(LogLevel.Warning); }) .ConfigureServices(services => { services .AddSignalR() #if !NETCOREAPP .AddJsonProtocol(options => { options.PayloadSerializerSettings = Json.GetSerializerSettings(); }); #else .AddNewtonsoftJsonProtocol(options => { options.PayloadSerializerSettings = Json.GetSerializerSettings(); }); #endif })
public void StartServer() { if (OsInfo.IsWindows && _runtimeInfo.IsAdmin) { _firewallAdapter.MakeAccessible(); } var bindAddress = _configFileProvider.BindAddress; var enableSsl = _configFileProvider.EnableSsl; var sslCertPath = _configFileProvider.SslCertPath; var urls = new List <string>(); urls.Add(BuildUrl("http", bindAddress, _configFileProvider.Port)); if (enableSsl && sslCertPath.IsNotNullOrWhiteSpace()) { urls.Add(BuildUrl("https", bindAddress, _configFileProvider.SslPort)); } _host = new WebHostBuilder() .UseUrls(urls.ToArray()) .UseKestrel(options => { if (enableSsl && sslCertPath.IsNotNullOrWhiteSpace()) { options.ConfigureHttpsDefaults(configureOptions => { var certificate = new X509Certificate2(); certificate.Import(_configFileProvider.SslCertPath, _configFileProvider.SslCertPassword, X509KeyStorageFlags.DefaultKeySet); configureOptions.ServerCertificate = certificate; }); } }) .ConfigureKestrel(serverOptions => { serverOptions.AllowSynchronousIO = true; }) .ConfigureLogging(logging => { logging.AddProvider(new NLogLoggerProvider()); logging.SetMinimumLevel(LogLevel.Warning); }) .ConfigureServices(services => { services .AddSignalR() #if !NETCOREAPP .AddJsonProtocol( options => { options.PayloadSerializerSettings = Json.GetSerializerSettings(); }); #else .AddNewtonsoftJsonProtocol( options => { options.PayloadSerializerSettings = Json.GetSerializerSettings(); }); #endif })
public void Configure(IApplicationBuilder app, IStartupContext startupContext, Lazy <IMainDatabase> mainDatabaseFactory, Lazy <ILogDatabase> logDatabaseFactory, Lazy <ICacheDatabase> cacheDatabaseFactory, DatabaseTarget dbTarget, ISingleInstancePolicy singleInstancePolicy, InitializeLogger initializeLogger, ReconfigureLogging reconfigureLogging, IAppFolderFactory appFolderFactory, IProvidePidFile pidFileProvider, IConfigFileProvider configFileProvider, IRuntimeInfo runtimeInfo, IFirewallAdapter firewallAdapter, ReadarrErrorPipeline errorHandler) { initializeLogger.Initialize(); appFolderFactory.Register(); pidFileProvider.Write(); reconfigureLogging.Reconfigure(); EnsureSingleInstance(false, startupContext, singleInstancePolicy); // instantiate the databases to initialize/migrate them _ = mainDatabaseFactory.Value; _ = logDatabaseFactory.Value; _ = cacheDatabaseFactory.Value; dbTarget.Register(); if (OsInfo.IsNotWindows) { Console.CancelKeyPress += (sender, eventArgs) => NLog.LogManager.Configuration = null; } if (OsInfo.IsWindows && runtimeInfo.IsAdmin) { firewallAdapter.MakeAccessible(); } app.UseMiddleware <LoggingMiddleware>(); app.UsePathBase(new PathString(configFileProvider.UrlBase)); app.UseExceptionHandler(new ExceptionHandlerOptions { AllowStatusCode404Response = true, ExceptionHandler = errorHandler.HandleException }); app.UseRouting(); app.UseCors(); app.UseAuthentication(); app.UseAuthorization(); app.UseResponseCompression(); app.Properties["host.AppName"] = BuildInfo.AppName; app.UseMiddleware <VersionMiddleware>(); app.UseMiddleware <UrlBaseMiddleware>(configFileProvider.UrlBase); app.UseMiddleware <CacheHeaderMiddleware>(); app.UseMiddleware <IfModifiedMiddleware>(); app.UseMiddleware <BufferingMiddleware>(new List <string> { "/api/v1/command" }); app.UseWebSockets(); app.UseEndpoints(x => { x.MapHub <MessageHub>("/signalr/messages").RequireAuthorization("SignalR"); x.MapControllers(); }); }
public void StartServer() { if (OsInfo.IsWindows && _runtimeInfo.IsAdmin) { _firewallAdapter.MakeAccessible(); } var bindAddress = _configFileProvider.BindAddress; var enableSsl = _configFileProvider.EnableSsl; var sslCertPath = _configFileProvider.SslCertPath; var urls = new List <string>(); urls.Add(BuildUrl("http", bindAddress, _configFileProvider.Port)); if (enableSsl && sslCertPath.IsNotNullOrWhiteSpace()) { urls.Add(BuildUrl("https", bindAddress, _configFileProvider.SslPort)); } _host = new WebHostBuilder() .UseUrls(urls.ToArray()) .UseKestrel(options => { if (enableSsl && sslCertPath.IsNotNullOrWhiteSpace()) { options.ConfigureHttpsDefaults(configureOptions => { var certificate = new X509Certificate2(); certificate.Import(_configFileProvider.SslCertPath, _configFileProvider.SslCertPassword, X509KeyStorageFlags.DefaultKeySet); configureOptions.ServerCertificate = certificate; }); } }) .ConfigureKestrel(serverOptions => { serverOptions.AllowSynchronousIO = true; serverOptions.Limits.MaxRequestBodySize = null; }) .ConfigureLogging(logging => { logging.AddProvider(new NLogLoggerProvider()); logging.SetMinimumLevel(LogLevel.Warning); }) .ConfigureServices(services => { services .AddSignalR() .AddJsonProtocol(options => { options.PayloadSerializerOptions = STJson.GetSerializerSettings(); }); }) .Configure(app => { app.UseRouting(); app.Properties["host.AppName"] = BuildInfo.AppName; app.UsePathBase(_configFileProvider.UrlBase); foreach (var middleWare in _middlewares.OrderBy(c => c.Order)) { _logger.Debug("Attaching {0} to host", middleWare.GetType().Name); middleWare.Attach(app); } }) .UseContentRoot(Directory.GetCurrentDirectory()) .Build(); _logger.Info("Listening on the following URLs:"); foreach (var url in urls) { _logger.Info(" {0}", url); } _host.Start(); }