/// <summary> /// Configure dependency injection /// </summary> /// <param name="args"></param> /// <returns></returns> internal static IContainer GlobalScope(string[] args) { var builder = new ContainerBuilder(); var logger = new LogService(); if (args.Contains("--verbose")) { logger.SetVerbose(); } var pluginService = new PluginService(logger); var argumentsParser = new ArgumentsParser(logger, pluginService, args); var argumentsService = new ArgumentsService(logger, argumentsParser); if (!argumentsService.Valid) { return(null); } var settingsService = new SettingsService(logger, argumentsService); if (!settingsService.Valid) { return(null); } logger.SetDiskLoggingPath(settingsService.Client.LogPath); _ = builder.RegisterInstance(argumentsService); _ = builder.RegisterInstance(argumentsParser); _ = builder.RegisterInstance(logger).As <ILogService>(); _ = builder.RegisterInstance(settingsService).As <ISettingsService>(); _ = builder.RegisterInstance(argumentsService).As <IArgumentsService>(); _ = builder.RegisterInstance(pluginService).As <IPluginService>(); _ = builder.RegisterType <UserRoleService>().SingleInstance(); _ = builder.RegisterType <InputService>().As <IInputService>().SingleInstance(); _ = builder.RegisterType <ProxyService>().SingleInstance(); _ = builder.RegisterType <PasswordGenerator>().SingleInstance(); _ = builder.RegisterType <RenewalStoreDisk>().As <IRenewalStore>().SingleInstance(); pluginService.Configure(builder); _ = builder.RegisterType <DomainParseService>().SingleInstance(); _ = builder.RegisterType <IISClient>().As <IIISClient>().SingleInstance(); _ = builder.RegisterType <IISHelper>().SingleInstance(); _ = builder.RegisterType <ExceptionHandler>().SingleInstance(); _ = builder.RegisterType <UnattendedResolver>(); _ = builder.RegisterType <InteractiveResolver>(); _ = builder.RegisterType <AutofacBuilder>().As <IAutofacBuilder>().SingleInstance(); _ = builder.RegisterType <AcmeClient>().SingleInstance(); _ = builder.RegisterType <PemService>().SingleInstance(); _ = builder.RegisterType <EmailClient>().SingleInstance(); _ = builder.RegisterType <ScriptClient>().SingleInstance(); _ = builder.RegisterType <LookupClientProvider>().SingleInstance(); _ = builder.RegisterType <CertificateService>().As <ICertificateService>().SingleInstance(); _ = builder.RegisterType <TaskSchedulerService>().SingleInstance(); _ = builder.RegisterType <NotificationService>().SingleInstance(); _ = builder.RegisterType <RenewalExecutor>().SingleInstance(); _ = builder.RegisterType <RenewalManager>().SingleInstance(); _ = builder.Register(c => c.Resolve <IArgumentsService>().MainArguments).SingleInstance(); return(builder.Build()); }
internal static IContainer Global(string[] args, PluginService pluginService) { var builder = new ContainerBuilder(); builder.RegisterType <LogService>(). As <ILogService>(). SingleInstance(); builder.RegisterType <OptionsService>(). As <IOptionsService>(). WithParameter(new TypedParameter(typeof(string[]), args)). SingleInstance(); builder.RegisterType <SettingsService>(). SingleInstance(); builder.RegisterType <InputService>(). As <IInputService>(). SingleInstance(); builder.RegisterType <ProxyService>(). SingleInstance(); // Check where to load Renewals from var hive = Registry.CurrentUser; var key = hive.OpenSubKey($"Software\\letsencrypt-win-simple"); if (key == null) { hive = Registry.LocalMachine; key = hive.OpenSubKey($"Software\\letsencrypt-win-simple"); } if (key != null) { builder.RegisterType <RegistryRenewalService>(). As <IRenewalService>(). WithParameter(new NamedParameter("hive", hive.Name)). SingleInstance(); } else { builder.RegisterType <FileRenewalService>(). As <IRenewalService>(). SingleInstance(); } builder.RegisterType <DotNetVersionService>(). SingleInstance(); pluginService.Configure(builder); builder.Register(c => new DomainParser(new WebTldRuleProvider())).SingleInstance(); builder.RegisterType <IISClient>().SingleInstance(); builder.RegisterType <UnattendedResolver>(); builder.RegisterType <InteractiveResolver>(); builder.RegisterInstance(pluginService); return(builder.Build()); }
internal static IContainer GlobalScope(string[] args) { var builder = new ContainerBuilder(); var logger = new LogService(); var pluginService = new PluginService(logger); builder.RegisterInstance(logger). As <ILogService>(). SingleInstance(); builder.RegisterType <ArgumentsParser>(). SingleInstance(). WithParameter(new TypedParameter(typeof(string[]), args)); builder.RegisterType <ArgumentsService>(). As <IArgumentsService>(). SingleInstance(); builder.RegisterType <SettingsService>(). As <ISettingsService>(). SingleInstance(); builder.RegisterType <InputService>(). As <IInputService>(). SingleInstance(); builder.RegisterType <ProxyService>(). SingleInstance(); builder.RegisterType <PasswordGenerator>(). SingleInstance(); builder.RegisterType <RenewalService>(). As <IRenewalService>(). SingleInstance(); builder.RegisterType <DotNetVersionService>(). SingleInstance(); pluginService.Configure(builder); builder.RegisterType <DomainParseService>().SingleInstance(); builder.RegisterType <IISClient>().As <IIISClient>().InstancePerLifetimeScope(); builder.RegisterType <IISBindingHelper>().SingleInstance(); builder.RegisterType <IISSiteHelper>().SingleInstance(); builder.RegisterType <UnattendedResolver>(); builder.RegisterType <InteractiveResolver>(); builder.RegisterType <AutofacBuilder>().SingleInstance(); builder.RegisterType <AcmeClient>().SingleInstance(); builder.RegisterType <PemService>().SingleInstance(); builder.RegisterType <EmailClient>().SingleInstance(); builder.RegisterType <LookupClientProvider>().SingleInstance(); builder.RegisterType <CertificateService>().As <ICertificateService>().SingleInstance(); builder.RegisterType <TaskSchedulerService>().SingleInstance(); builder.RegisterType <NotificationService>().SingleInstance(); builder.RegisterInstance(pluginService); return(builder.Build()); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddCors(options => options.AddPolicy("Relaxed", builder => builder.AllowAnyOrigin())); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); services.AddTransient <IWebSocketHandler, WebSocketHandler>(); services.AddTransient <IPluginService, PluginService>(); PluginService.Configure(); }
internal static IContainer GlobalScope(string[] args) { var builder = new ContainerBuilder(); var logger = new LogService(); var pluginService = new PluginService(logger); builder.RegisterInstance(logger). As <ILogService>(). SingleInstance(); builder.RegisterType <ArgumentsParser>(). SingleInstance(). WithParameter(new TypedParameter(typeof(string[]), args)); builder.RegisterType <OptionsService>(). As <IOptionsService>(). SingleInstance(); builder.RegisterType <SettingsService>(). As <ISettingsService>(). SingleInstance(); builder.RegisterType <InputService>(). As <IInputService>(). SingleInstance(); builder.RegisterType <ProxyService>(). SingleInstance(); builder.RegisterType <PasswordGenerator>(). SingleInstance(); builder.RegisterType <RenewalService>(). As <IRenewalService>(). SingleInstance(); builder.RegisterType <DotNetVersionService>(). SingleInstance(); pluginService.Configure(builder); builder.Register(c => new DomainParser(new WebTldRuleProvider())).SingleInstance(); builder.RegisterType <IISClient>().As <IIISClient>().SingleInstance(); builder.RegisterType <IISBindingHelper>().SingleInstance(); builder.RegisterType <IISSiteHelper>().SingleInstance(); builder.RegisterType <UnattendedResolver>(); builder.RegisterType <InteractiveResolver>(); builder.RegisterType <AutofacBuilder>(); builder.RegisterInstance(pluginService); return(builder.Build()); }
internal static IContainer Global(string[] args, string clientName, PluginService pluginService) { var builder = new ContainerBuilder(); builder.RegisterType <LogService>(). As <ILogService>(). SingleInstance(); builder.RegisterType <OptionsService>(). As <IOptionsService>(). WithParameter(new TypedParameter(typeof(string[]), args)). SingleInstance(); builder.RegisterType <SettingsService>(). As <ISettingsService>(). WithParameter(new TypedParameter(typeof(string), clientName)). SingleInstance(); builder.RegisterType <InputService>(). As <IInputService>(). SingleInstance(); builder.RegisterType <ProxyService>(). SingleInstance(); builder.RegisterType <RenewalService>(). WithParameter(new TypedParameter(typeof(string), clientName)). SingleInstance(); builder.RegisterType <TaskSchedulerService>(). WithParameter(new TypedParameter(typeof(string), clientName)). SingleInstance(); builder.RegisterType <DotNetVersionService>(). SingleInstance(); pluginService.Configure(builder); builder.Register(c => new DomainParser(new WebTldRuleProvider())).SingleInstance(); builder.RegisterType <IISClient>().SingleInstance(); builder.RegisterType <UnattendedResolver>(); builder.RegisterType <InteractiveResolver>(); builder.RegisterInstance(pluginService); return(builder.Build()); }
public void Regular() { var commandLine = "--installation iis"; var types = new List <Type>() { typeof(CertificateStore) }; var chosen = new List <IInstallationPluginOptionsFactory>(); var builder = new ContainerBuilder(); builder.RegisterInstance(plugins). As <PluginService>(). SingleInstance(); builder.RegisterInstance(log). As <ILogService>(). SingleInstance(); builder.RegisterType <Mock.Clients.MockIISClient>(). As <IIISClient>(). SingleInstance(); builder.RegisterType <ArgumentsParser>(). SingleInstance(). WithParameter(new TypedParameter(typeof(string[]), commandLine.Split(' '))); builder.RegisterType <ArgumentsService>(). As <IArgumentsService>(). SingleInstance(); builder.RegisterType <UnattendedResolver>().As <IResolver>(); plugins.Configure(builder); var scope = builder.Build(); var resolver = scope.Resolve <IResolver>(); var first = resolver.GetInstallationPlugin(scope, types, chosen); Assert.IsNotNull(first); Assert.IsInstanceOfType(first, typeof(IISWebOptionsFactory)); chosen.Add(first); var second = resolver.GetInstallationPlugin(scope, types, chosen); Assert.IsNotNull(second); Assert.IsInstanceOfType(second, typeof(NullInstallationOptionsFactory)); }
/// <summary> /// Configure dependency injection /// </summary> /// <param name="args"></param> /// <returns></returns> internal static IContainer?GlobalScope(string[] args) { var builder = new ContainerBuilder(); var logger = new LogService(); if (Verbose) { logger.SetVerbose(); } // Not used but should be called anyway because it // checks if we're not running as dotnet.exe and also // prints some verbose messages that are interesting // to know very early in the start up process _ = new VersionService(logger); var pluginService = new PluginService(logger); var argumentsParser = new ArgumentsParser(logger, pluginService, args); if (!argumentsParser.Validate()) { return(null); } var mainArguments = argumentsParser.GetArguments <MainArguments>(); if (mainArguments == null) { return(null); } var accountArguments = argumentsParser.GetArguments <AccountArguments>(); var settingsService = new SettingsService(logger, mainArguments, accountArguments); if (!settingsService.Valid) { return(null); } logger.SetDiskLoggingPath(settingsService.Client.LogPath !); _ = builder.RegisterInstance(argumentsParser); _ = builder.RegisterInstance(mainArguments); _ = builder.RegisterInstance(logger).As <ILogService>(); _ = builder.RegisterInstance(settingsService).As <ISettingsService>(); _ = builder.RegisterInstance(pluginService).As <IPluginService>(); _ = builder.RegisterType <UserRoleService>().As <IUserRoleService>().SingleInstance(); _ = builder.RegisterType <InputService>().As <IInputService>().SingleInstance(); _ = builder.RegisterType <ProxyService>().As <IProxyService>().SingleInstance(); _ = builder.RegisterType <UpdateClient>().SingleInstance(); _ = builder.RegisterType <PasswordGenerator>().SingleInstance(); _ = builder.RegisterType <RenewalStoreDisk>().As <IRenewalStore>().SingleInstance(); pluginService.Configure(builder); _ = builder.RegisterType <DomainParseService>().SingleInstance(); _ = builder.RegisterType <IISClient>().As <IIISClient>().InstancePerLifetimeScope(); _ = builder.RegisterType <IISHelper>().SingleInstance(); _ = builder.RegisterType <ExceptionHandler>().SingleInstance(); _ = builder.RegisterType <UnattendedResolver>(); _ = builder.RegisterType <InteractiveResolver>(); _ = builder.RegisterType <AutofacBuilder>().As <IAutofacBuilder>().SingleInstance(); _ = builder.RegisterType <AccountManager>().SingleInstance(); _ = builder.RegisterType <AcmeClient>().SingleInstance(); _ = builder.RegisterType <ZeroSsl>().SingleInstance(); _ = builder.RegisterType <OrderManager>().SingleInstance(); _ = builder.RegisterType <PemService>().SingleInstance(); _ = builder.RegisterType <EmailClient>().SingleInstance(); _ = builder.RegisterType <ScriptClient>().SingleInstance(); _ = builder.RegisterType <LookupClientProvider>().SingleInstance(); _ = builder.RegisterType <CertificateService>().As <ICertificateService>().SingleInstance(); _ = builder.RegisterType <SecretServiceManager>().SingleInstance(); _ = builder.RegisterType <JsonSecretService>().As <ISecretService>().SingleInstance(); _ = builder.RegisterType <TaskSchedulerService>().SingleInstance(); _ = builder.RegisterType <NotificationService>().SingleInstance(); _ = builder.RegisterType <RenewalExecutor>().SingleInstance(); _ = builder.RegisterType <RenewalValidator>().SingleInstance(); _ = builder.RegisterType <RenewalManager>().SingleInstance(); _ = builder.RegisterType <RenewalCreator>().SingleInstance(); _ = builder.RegisterType <ArgumentsInputService>().SingleInstance(); _ = builder.RegisterType <Wacs>(); return(builder.Build()); }