Пример #1
0
        /// <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());
        }
Пример #2
0
        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());
        }
Пример #3
0
        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());
        }
Пример #4
0
 // 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();
 }
Пример #5
0
        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());
        }
Пример #6
0
        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());
        }
Пример #7
0
        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));
        }
Пример #8
0
        /// <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());
        }