Esempio n. 1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GetChocolatey"/> class.
 /// </summary>
 public GetChocolatey()
 {
     Log4NetAppenderConfiguration.configure(null, excludeLoggerNames: ChocolateyLoggers.Trace.to_string());
     Bootstrap.initialize();
     _license   = License.validate_license();
     _container = SimpleInjectorContainer.Container;
 }
Esempio n. 2
0
        private static void add_or_remove_licensed_source(ChocolateyLicense license, Container container)
        {
            var addOrUpdate = license.IsValid;
            var config = new ChocolateyConfiguration {
                    RegularOutput = false,
                    QuietOutput = true,
                };

            var sourceService = container.GetInstance<IChocolateyConfigSettingsService>();
            var sources = sourceService.source_list(config);

            config.SourceCommand.Name = ApplicationParameters.ChocolateyLicensedFeedSourceName;
            config.Sources = ApplicationParameters.ChocolateyLicensedFeedSource;
            config.SourceCommand.Username = "******";
            config.SourceCommand.Password = license.Id;
            config.SourceCommand.Priority = 10;

            if (addOrUpdate && !sources.Any(s =>
                    s.Id.is_equal_to(ApplicationParameters.ChocolateyLicensedFeedSourceName)
                    && s.Authenticated)
                )
            {
                sourceService.source_add(config);
            }

            if (!addOrUpdate)
            {
                sourceService.source_remove(config);
            }
        }
Esempio n. 3
0
        private static void add_or_remove_licensed_source(ChocolateyLicense license, ConfigFileSettings configFileSettings)
        {
            // do not enable or disable the source, in case the user has disabled it
            var addOrUpdate = license.IsValid;
            var sources     = configFileSettings.Sources.or_empty_list_if_null().ToList();

            var configSource = new ConfigFileSourceSetting
            {
                Id                  = ApplicationParameters.ChocolateyLicensedFeedSourceName,
                Value               = ApplicationParameters.ChocolateyLicensedFeedSource,
                UserName            = "******",
                Password            = NugetEncryptionUtility.EncryptString(license.Id),
                Priority            = 10,
                BypassProxy         = false,
                AllowSelfService    = false,
                VisibleToAdminsOnly = false,
            };

            if (addOrUpdate && !sources.Any(s =>
                                            s.Id.is_equal_to(ApplicationParameters.ChocolateyLicensedFeedSourceName) &&
                                            NugetEncryptionUtility.DecryptString(s.Password).is_equal_to(license.Id)
                                            )
                )
            {
                configFileSettings.Sources.Add(configSource);
            }

            if (!addOrUpdate)
            {
                configFileSettings.Sources.RemoveWhere(s => s.Id.is_equal_to(configSource.Id));
            }

            // ensure only one licensed source - helpful when moving between licenses
            configFileSettings.Sources.RemoveWhere(s => s.Id.is_equal_to(configSource.Id) && !NugetEncryptionUtility.DecryptString(s.Password).is_equal_to(license.Id));
        }
Esempio n. 4
0
        private static void add_or_remove_licensed_source(ChocolateyLicense license, Container container)
        {
            var addOrUpdate = license.IsValid;
            var config      = new ChocolateyConfiguration {
                RegularOutput = false,
                QuietOutput   = true,
            };

            var sourceService = container.GetInstance <IChocolateyConfigSettingsService>();
            var sources       = sourceService.source_list(config);

            config.SourceCommand.Name     = ApplicationParameters.ChocolateyLicensedFeedSourceName;
            config.Sources                = ApplicationParameters.ChocolateyLicensedFeedSource;
            config.SourceCommand.Username = "******";
            config.SourceCommand.Password = license.Id;
            config.SourceCommand.Priority = 10;

            if (addOrUpdate && !sources.Any(s =>
                                            s.Id.is_equal_to(ApplicationParameters.ChocolateyLicensedFeedSourceName) &&
                                            s.Authenticated)
                )
            {
                sourceService.source_add(config);
            }

            if (!addOrUpdate)
            {
                sourceService.source_remove(config);
            }
        }
Esempio n. 5
0
        private static void add_or_remove_licensed_source(ChocolateyLicense license, ConfigFileSettings configFileSettings)
        {
            // do not enable or disable the source, in case the user has disabled it
            var addOrUpdate = license.IsValid;
            var sources     = configFileSettings.Sources.Where(s => !s.Disabled).or_empty_list_if_null().ToList();

            var configSource = new ConfigFileSourceSetting
            {
                Id       = ApplicationParameters.ChocolateyLicensedFeedSourceName,
                Value    = ApplicationParameters.ChocolateyLicensedFeedSource,
                UserName = "******",
                Password = NugetEncryptionUtility.EncryptString(license.Id),
                Priority = 10
            };

            if (addOrUpdate && !sources.Any(s =>
                                            s.Id.is_equal_to(ApplicationParameters.ChocolateyLicensedFeedSourceName) &&
                                            NugetEncryptionUtility.DecryptString(s.Password).is_equal_to(license.Id)
                                            )
                )
            {
                configFileSettings.Sources.Add(configSource);
            }

            if (!addOrUpdate)
            {
                configFileSettings.Sources.RemoveWhere(s => s.Id.is_equal_to(configSource.Id));
            }
        }
Esempio n. 6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GetChocolatey"/> class.
 /// </summary>
 public GetChocolatey()
 {
     Log4NetAppenderConfiguration.configure();
     Bootstrap.initialize();
     _license   = License.validate_license();
     _container = SimpleInjectorContainer.Container;
 }
Esempio n. 7
0
        private static void set_licensed_options(ChocolateyConfiguration config, ChocolateyLicense license, ConfigFileSettings configFileSettings)
        {
            config.Information.IsLicensedVersion = license.is_licensed_version();
            config.Information.LicenseType       = license.LicenseType.get_description_or_value();

            if (license.AssemblyLoaded)
            {
                Type licensedConfigBuilder = license.Assembly.GetType(ApplicationParameters.LicensedConfigurationBuilder, throwOnError: false, ignoreCase: true);

                if (licensedConfigBuilder == null)
                {
                    if (config.RegularOutput)
                    {
                        "chocolatey".Log().Warn(ChocolateyLoggers.Important,
                                                @"Unable to set licensed configuration. Please upgrade to a newer 
 licensed version (choco upgrade chocolatey.extension).");
                    }
                    return;
                }
                try
                {
                    object componentClass = Activator.CreateInstance(licensedConfigBuilder);

                    licensedConfigBuilder.InvokeMember(
                        SET_CONFIGURATION_METHOD,
                        BindingFlags.InvokeMethod,
                        null,
                        componentClass,
                        new Object[] { config, configFileSettings }
                        );
                }
                catch (Exception ex)
                {
                    var isDebug = ApplicationParameters.is_debug_mode_cli_primitive();
                    if (config.Debug)
                    {
                        isDebug = true;
                    }
                    var message = isDebug ? ex.ToString() : ex.Message;

                    if (isDebug && ex.InnerException != null)
                    {
                        message += "{0}{1}".format_with(Environment.NewLine, ex.ToString());
                    }

                    "chocolatey".Log().Error(
                        ChocolateyLoggers.Important,
                        @"Error when setting configuration for '{0}':{1} {2}".format_with(
                            licensedConfigBuilder.FullName,
                            Environment.NewLine,
                            message
                            ));
                }
            }
        }
Esempio n. 8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GetChocolatey"/> class.
 /// </summary>
 public GetChocolatey()
 {
     Log4NetAppenderConfiguration.configure(null, excludeLoggerNames: ChocolateyLoggers.Trace.to_string());
     Bootstrap.initialize();
     Log.InitializeWith(new AggregateLog(new List <ILog>()
     {
         new Log4NetLog(), _logSinkLogger
     }));
     _license   = License.validate_license();
     _container = SimpleInjectorContainer.Container;
 }
Esempio n. 9
0
 /// <summary>
 ///   Sets up the configuration based on arguments passed in, config file, and environment
 /// </summary>
 /// <param name="args">The arguments.</param>
 /// <param name="config">The configuration.</param>
 /// <param name="container">The container.</param>
 /// <param name="license">The license.</param>
 /// <param name="notifyWarnLoggingAction">Notify warn logging action</param>
 public static void set_up_configuration(IList<string> args, ChocolateyConfiguration config, Container container, ChocolateyLicense license, Action<string> notifyWarnLoggingAction)
 {
     var fileSystem = container.GetInstance<IFileSystem>();
     var xmlService = container.GetInstance<IXmlService>();
     set_file_configuration(config, fileSystem, xmlService, notifyWarnLoggingAction);
     ConfigurationOptions.reset_options();
     set_global_options(args, config, container);
     set_environment_options(config);
     set_license_options(config, license);
     set_environment_variables(config);
 }
Esempio n. 10
0
        private static void set_license_options(ChocolateyConfiguration config, ChocolateyLicense license)
        {
            config.Information.LicenseExpirationDate = license.ExpirationDate;
            config.Information.LicenseIsValid        = license.IsValid;
            config.Information.LicenseVersion        = license.Version ?? string.Empty;
            config.Information.LicenseType           = license.is_licensed_version() ? license.LicenseType.get_description_or_value() : string.Empty;

            var licenseName = license.Name.to_string();

            if (licenseName.Contains("@"))
            {
                licenseName = licenseName.Remove(licenseName.IndexOf("@", StringComparison.InvariantCulture)) + "[at REDACTED])";
            }
            config.Information.LicenseUserName = licenseName;
        }
Esempio n. 11
0
 /// <summary>
 ///   Sets up the configuration based on arguments passed in, config file, and environment
 /// </summary>
 /// <param name="args">The arguments.</param>
 /// <param name="config">The configuration.</param>
 /// <param name="container">The container.</param>
 /// <param name="license">The license.</param>
 /// <param name="notifyWarnLoggingAction">Notify warn logging action</param>
 public static void set_up_configuration(IList<string> args, ChocolateyConfiguration config, Container container, ChocolateyLicense license, Action<string> notifyWarnLoggingAction)
 {
     var fileSystem = container.GetInstance<IFileSystem>();
     var xmlService = container.GetInstance<IXmlService>();
     var configFileSettings = get_config_file_settings(fileSystem, xmlService);
     // must be done prior to setting the file configuration
     add_or_remove_licensed_source(license, configFileSettings);
     set_file_configuration(config, configFileSettings, fileSystem, notifyWarnLoggingAction);
     ConfigurationOptions.reset_options();
     set_global_options(args, config, container);
     set_environment_options(config);
     set_environment_variables(config);
     // must be done last for overrides
     set_licensed_options(config, license, configFileSettings);
     // save all changes if there are any
     set_config_file_settings(configFileSettings, xmlService);
 }
Esempio n. 12
0
        public GetChocolatey(bool initializeLogging)
        {
            _container = SimpleInjectorContainer.Container;
            if (initializeLogging)
            {
                string loggingLocation = ApplicationParameters.LoggingLocation;
                var    fileSystem      = _container.GetInstance <IFileSystem>();
                fileSystem.create_directory_if_not_exists(loggingLocation);

                Log4NetAppenderConfiguration.configure(loggingLocation, excludeLoggerNames: ChocolateyLoggers.Trace.to_string());
                Log.InitializeWith(new AggregateLog(new List <ILog>()
                {
                    new Log4NetLog(), _logSinkLogger
                }));
                "chocolatey".Log().Debug("XmlConfiguration is now operational");
            }
            _license = License.validate_license();
        }
Esempio n. 13
0
        private static void set_licensed_options(ChocolateyConfiguration config, ChocolateyLicense license, ConfigFileSettings configFileSettings)
        {
            config.Information.IsLicensedVersion = license.is_licensed_version();

            if (license.AssemblyLoaded)
            {
                Type licensedConfigBuilder = license.Assembly.GetType(ApplicationParameters.LicensedConfigurationBuilder, throwOnError: false, ignoreCase: true);

                if (licensedConfigBuilder == null)
                {
                    if (config.RegularOutput)
                    {
                        "chocolatey".Log().Warn(ChocolateyLoggers.Important,
                                                @"Unable to set licensed configuration. Please upgrade to a newer 
 licensed version.");
                    }
                    return;
                }
                try
                {
                    object componentClass = Activator.CreateInstance(licensedConfigBuilder);

                    licensedConfigBuilder.InvokeMember(
                        SET_CONFIGURATION_METHOD,
                        BindingFlags.InvokeMethod,
                        null,
                        componentClass,
                        new Object[] { config, configFileSettings }
                        );
                }
                catch (Exception ex)
                {
                    "chocolatey".Log().Error(
                        ChocolateyLoggers.Important,
                        @"Error when setting configuration for '{0}':{1} {2}".format_with(
                            licensedConfigBuilder.FullName,
                            Environment.NewLine,
                            ex.Message
                            ));
                }
            }
        }
Esempio n. 14
0
        private static void set_licensed_options(ChocolateyConfiguration config, ChocolateyLicense license, ConfigFileSettings configFileSettings)
        {
            if (license.AssemblyLoaded)
            {
                Type licensedConfigBuilder = license.Assembly.GetType(ApplicationParameters.LicensedConfigurationBuilder, throwOnError: true, ignoreCase: true);

                if (licensedConfigBuilder == null)
                {
                    "chocolatey".Log().Error(
                        @"Type expected for registering components was null. Unable to provide 
 name due to it being null.");
                    return;
                }
                try
                {
                    object componentClass = Activator.CreateInstance(licensedConfigBuilder);

                    licensedConfigBuilder.InvokeMember(
                        SET_CONFIGURATION_METHOD,
                        BindingFlags.InvokeMethod,
                        null,
                        componentClass,
                        new Object[] { config, configFileSettings }
                        );
                }
                catch (Exception ex)
                {
                    "chocolatey".Log().Error(
                        ChocolateyLoggers.Important,
                        @"Error when setting configuration for '{0}':{1} {2}".format_with(
                            licensedConfigBuilder.FullName,
                            Environment.NewLine,
                            ex.Message
                            ));
                }
            }
        }
Esempio n. 15
0
        private static void set_license_options(ChocolateyConfiguration config, ChocolateyLicense license)
        {
            config.Information.LicenseExpirationDate = license.ExpirationDate;
            config.Information.LicenseIsValid = license.IsValid;
            config.Information.LicenseVersion = license.Version ?? string.Empty;
            config.Information.LicenseType = license.is_licensed_version() ? license.LicenseType.get_description_or_value() : string.Empty;

            var licenseName = license.Name.to_string();
            if (licenseName.Contains("@"))
            {
                licenseName = licenseName.Remove(licenseName.IndexOf("@", StringComparison.InvariantCulture)) + "[at REDACTED])";
            }
            config.Information.LicenseUserName = licenseName;
        }
Esempio n. 16
0
        /// <summary>
        ///   Sets up the configuration based on arguments passed in, config file, and environment
        /// </summary>
        /// <param name="args">The arguments.</param>
        /// <param name="config">The configuration.</param>
        /// <param name="container">The container.</param>
        /// <param name="license">The license.</param>
        /// <param name="notifyWarnLoggingAction">Notify warn logging action</param>
        public static void set_up_configuration(IList <string> args, ChocolateyConfiguration config, Container container, ChocolateyLicense license, Action <string> notifyWarnLoggingAction)
        {
            var fileSystem         = container.GetInstance <IFileSystem>();
            var xmlService         = container.GetInstance <IXmlService>();
            var configFileSettings = get_config_file_settings(fileSystem, xmlService);

            // must be done prior to setting the file configuration
            add_or_remove_licensed_source(license, configFileSettings);
            set_file_configuration(config, configFileSettings, fileSystem, notifyWarnLoggingAction);
            ConfigurationOptions.reset_options();
            set_global_options(args, config, container);
            set_environment_options(config);
            set_environment_variables(config);
            // must be done last for overrides
            set_licensed_options(config, license, configFileSettings);
            // save all changes if there are any
            set_config_file_settings(configFileSettings, xmlService);
        }
Esempio n. 17
0
        private static void set_licensed_options(ChocolateyConfiguration config, ChocolateyLicense license, ConfigFileSettings configFileSettings)
        {
            config.Information.IsLicensedVersion = license.is_licensed_version();
            config.Information.LicenseType = license.LicenseType.get_description_or_value();

            if (license.AssemblyLoaded)
            {
                Type licensedConfigBuilder = license.Assembly.GetType(ApplicationParameters.LicensedConfigurationBuilder, throwOnError: false, ignoreCase: true);

                if (licensedConfigBuilder == null)
                {
                    if (config.RegularOutput) "chocolatey".Log().Warn(ChocolateyLoggers.Important,
                        @"Unable to set licensed configuration. Please upgrade to a newer
             licensed version.");
                    return;
                }
                try
                {
                    object componentClass = Activator.CreateInstance(licensedConfigBuilder);

                    licensedConfigBuilder.InvokeMember(
                        SET_CONFIGURATION_METHOD,
                        BindingFlags.InvokeMethod,
                        null,
                        componentClass,
                        new Object[] { config, configFileSettings }
                        );
                }
                catch (Exception ex)
                {
                    "chocolatey".Log().Error(
                        ChocolateyLoggers.Important,
                        @"Error when setting configuration for '{0}':{1} {2}".format_with(
                            licensedConfigBuilder.FullName,
                            Environment.NewLine,
                            ex.Message
                            ));
                }
            }
        }
Esempio n. 18
0
        private static void add_or_remove_licensed_source(ChocolateyLicense license, ConfigFileSettings configFileSettings)
        {
            // do not enable or disable the source, in case the user has disabled it
            var addOrUpdate = license.IsValid;
            var sources = configFileSettings.Sources.or_empty_list_if_null().ToList();

            var configSource = new ConfigFileSourceSetting
            {
                Id = ApplicationParameters.ChocolateyLicensedFeedSourceName,
                Value = ApplicationParameters.ChocolateyLicensedFeedSource,
                UserName = "******",
                Password = NugetEncryptionUtility.EncryptString(license.Id),
                Priority = 10
            };

            if (addOrUpdate && !sources.Any(s =>
                    s.Id.is_equal_to(ApplicationParameters.ChocolateyLicensedFeedSourceName)
                    && NugetEncryptionUtility.DecryptString(s.Password).is_equal_to(license.Id)
                    )
                )
            {
                configFileSettings.Sources.Add(configSource);
            }

            if (!addOrUpdate)
            {
                configFileSettings.Sources.RemoveWhere(s => s.Id.is_equal_to(configSource.Id));
            }
        }
Esempio n. 19
0
        // ReSharper disable InconsistentNaming
        private static void Main(string[] args)
        // ReSharper restore InconsistentNaming
        {
            ChocolateyConfiguration config  = null;
            ChocolateyLicense       license = null;

            try
            {
                add_assembly_resolver();

                string loggingLocation = ApplicationParameters.LoggingLocation;
                //no file system at this point
                if (!Directory.Exists(loggingLocation))
                {
                    Directory.CreateDirectory(loggingLocation);
                }

                Log4NetAppenderConfiguration.configure(loggingLocation, excludeLoggerNames: ChocolateyLoggers.Trace.to_string());
                Bootstrap.initialize();
                Bootstrap.startup();
                license = License.validate_license();
                var container = SimpleInjectorContainer.Container;

                "LogFileOnly".Log().Info(() => "".PadRight(60, '='));

                config = Config.get_configuration_settings();
                var fileSystem = container.GetInstance <IFileSystem>();

                var warnings = new List <string>();

                ConfigurationBuilder.set_up_configuration(
                    args,
                    config,
                    container,
                    license,
                    warning => { warnings.Add(warning); }
                    );

                if (license.is_licensed_version() && !license.IsCompatible && !config.DisableCompatibilityChecks)
                {
                    write_warning_for_incompatible_versions();
                }

                if (config.Features.LogWithoutColor)
                {
                    ApplicationParameters.Log4NetConfigurationResource = @"chocolatey.infrastructure.logging.log4net.nocolor.config.xml";
                    Log4NetAppenderConfiguration.configure(loggingLocation, excludeLoggerNames: ChocolateyLoggers.Trace.to_string());
                }

                if (!string.IsNullOrWhiteSpace(config.AdditionalLogFileLocation))
                {
                    Log4NetAppenderConfiguration.configure_additional_log_file(fileSystem.get_full_path(config.AdditionalLogFileLocation));
                }

                report_version_and_exit_if_requested(args, config);

                trap_exit_scenarios(config);

                warn_on_nuspec_or_nupkg_usage(args, config);

                if (config.RegularOutput)
                {
#if DEBUG
                    "chocolatey".Log().Info(ChocolateyLoggers.Important, () => "{0} v{1}{2} (DEBUG BUILD)".format_with(ApplicationParameters.Name, config.Information.ChocolateyProductVersion, license.is_licensed_version() ? " {0}".format_with(license.LicenseType) : string.Empty));
#else
                    "chocolatey".Log().Info(ChocolateyLoggers.Important, () => "{0} v{1}{2}".format_with(ApplicationParameters.Name, config.Information.ChocolateyProductVersion, license.is_licensed_version() ? " {0}".format_with(license.LicenseType) : string.Empty));
#endif
                    if (args.Length == 0)
                    {
                        "chocolatey".Log().Info(ChocolateyLoggers.Important, () => "Please run 'choco -?' or 'choco <command> -?' for help menu.");
                    }
                }

                if (warnings.Count != 0 && config.RegularOutput)
                {
                    foreach (var warning in warnings.or_empty_list_if_null())
                    {
                        "chocolatey".Log().Warn(ChocolateyLoggers.Important, warning);
                    }
                }

                if (config.HelpRequested || config.UnsuccessfulParsing)
                {
                    pause_execution_if_debug();
                    Environment.Exit(config.UnsuccessfulParsing ? 1 : 0);
                }

                var verboseAppenderName = "{0}LoggingColoredConsoleAppender".format_with(ChocolateyLoggers.Verbose.to_string());
                var traceAppenderName   = "{0}LoggingColoredConsoleAppender".format_with(ChocolateyLoggers.Trace.to_string());
                Log4NetAppenderConfiguration.set_logging_level_debug_when_debug(config.Debug, verboseAppenderName, traceAppenderName);
                Log4NetAppenderConfiguration.set_verbose_logger_when_verbose(config.Verbose, config.Debug, verboseAppenderName);
                Log4NetAppenderConfiguration.set_trace_logger_when_trace(config.Trace, traceAppenderName);
                "chocolatey".Log().Debug(() => "{0} is running on {1} v {2}".format_with(ApplicationParameters.Name, config.Information.PlatformType, config.Information.PlatformVersion.to_string()));
                //"chocolatey".Log().Debug(() => "Command Line: {0}".format_with(Environment.CommandLine));

                remove_old_chocolatey_exe(fileSystem);

                AssemblyFileExtractor.extract_all_resources_to_relative_directory(fileSystem, Assembly.GetAssembly(typeof(Program)), ApplicationParameters.InstallLocation, new List <string>(), "chocolatey.console", throwError: false);
                //refactor - thank goodness this is temporary, cuz manifest resource streams are dumb
                IList <string> folders = new List <string>
                {
                    "helpers",
                    "functions",
                    "redirects",
                    "tools"
                };
#if !NoResources
                AssemblyFileExtractor.extract_all_resources_to_relative_directory(fileSystem, Assembly.GetAssembly(typeof(ChocolateyResourcesAssembly)), ApplicationParameters.InstallLocation, folders, ApplicationParameters.ChocolateyFileResources, throwError: false);
#endif
                var application = new ConsoleApplication();
                application.run(args, config, container);
            }
            catch (Exception ex)
            {
                if (ApplicationParameters.is_debug_mode_cli_primitive())
                {
                    "chocolatey".Log().Error(() => "{0} had an error occur:{1}{2}".format_with(
                                                 ApplicationParameters.Name,
                                                 Environment.NewLine,
                                                 ex.ToString()));
                }
                else
                {
                    "chocolatey".Log().Error(ChocolateyLoggers.Important, () => "{0}".format_with(ex.Message));
                    "chocolatey".Log().Error(ChocolateyLoggers.LogFileOnly, () => "More Details: {0}".format_with(ex.ToString()));
                }

                if (Environment.ExitCode == 0)
                {
                    Environment.ExitCode = 1;
                }
            }
            finally
            {
                if (license != null && license.is_licensed_version() && !license.IsCompatible && config != null && !config.DisableCompatibilityChecks)
                {
                    write_warning_for_incompatible_versions();
                }

                "chocolatey".Log().Debug(() => "Exiting with {0}".format_with(Environment.ExitCode));
#if DEBUG
                "chocolatey".Log().Info(() => "Exiting with {0}".format_with(Environment.ExitCode));
#endif
                pause_execution_if_debug();
                Bootstrap.shutdown();
                Environment.Exit(Environment.ExitCode);
            }
        }
Esempio n. 20
0
        /// <summary>
        ///   Sets up the configuration based on arguments passed in, config file, and environment
        /// </summary>
        /// <param name="args">The arguments.</param>
        /// <param name="config">The configuration.</param>
        /// <param name="container">The container.</param>
        /// <param name="license">The license.</param>
        /// <param name="notifyWarnLoggingAction">Notify warn logging action</param>
        public static void set_up_configuration(IList <string> args, ChocolateyConfiguration config, Container container, ChocolateyLicense license, Action <string> notifyWarnLoggingAction)
        {
            var fileSystem = container.GetInstance <IFileSystem>();
            var xmlService = container.GetInstance <IXmlService>();

            set_file_configuration(config, fileSystem, xmlService, notifyWarnLoggingAction);
            ConfigurationOptions.reset_options();
            set_global_options(args, config, container);
            set_environment_options(config);
            set_license_options(config, license);
            set_environment_variables(config);
        }
Esempio n. 21
0
        /// <summary>
        ///   Sets up the configuration based on arguments passed in, config file, and environment
        /// </summary>
        /// <param name="args">The arguments.</param>
        /// <param name="config">The configuration.</param>
        /// <param name="container">The container.</param>
        /// <param name="license">The license.</param>
        /// <param name="notifyWarnLoggingAction">Notify warn logging action</param>
        public static void set_up_configuration(IList <string> args, ChocolateyConfiguration config, Container container, ChocolateyLicense license, Action <string> notifyWarnLoggingAction)
        {
            var fileSystem         = container.GetInstance <IFileSystem>();
            var xmlService         = container.GetInstance <IXmlService>();
            var configFileSettings = get_config_file_settings(fileSystem, xmlService);

            // must be done prior to setting the file configuration
            add_or_remove_licensed_source(license, configFileSettings);
            set_file_configuration(config, configFileSettings, fileSystem, notifyWarnLoggingAction);
            ConfigurationOptions.reset_options();
            set_global_options(args, config, container);
            set_environment_options(config);
            set_environment_variables(config);
            // must be done last for overrides
            set_licensed_options(config, license, configFileSettings);
            // save all changes if there are any
            set_config_file_settings(configFileSettings, xmlService);

            if (!config.Features.UseFipsCompliantChecksums)
            {
                var hashprovider = container.GetInstance <IHashProvider>();
                try
                {
                    hashprovider.set_hash_algorithm(CryptoHashProviderType.Md5);
                }
                catch (Exception ex)
                {
                    if (!config.CommandName.is_equal_to("feature"))
                    {
                        if (ex.InnerException != null && ex.InnerException.Message.contains("FIPS"))
                        {
                            "chocolatey".Log().Warn(ChocolateyLoggers.Important, @"
FIPS Mode detected - run 'choco feature enable -n {0}' 
 to use Chocolatey.".format_with(ApplicationParameters.Features.UseFipsCompliantChecksums));
                            throw new ApplicationException("When FIPS Mode is enabled, Chocolatey requires {0} feature also be enabled.".format_with(ApplicationParameters.Features.UseFipsCompliantChecksums));
                        }

                        throw;
                    }
                }
            }
        }
Esempio n. 22
0
        private static void set_licensed_options(ChocolateyConfiguration config, ChocolateyLicense license, ConfigFileSettings configFileSettings)
        {
            if (license.AssemblyLoaded)
            {
                Type licensedConfigBuilder = license.Assembly.GetType(ApplicationParameters.LicensedConfigurationBuilder, throwOnError: false, ignoreCase: true);

                if (licensedConfigBuilder == null)
                {
                    "chocolatey".Log().Warn(ChocolateyLoggers.Important,
            @"Unable to set licensed configuration. This is likely related to a
             missing or outdated licensed DLL.");
                    return;
                }
                try
                {
                    object componentClass = Activator.CreateInstance(licensedConfigBuilder);

                    licensedConfigBuilder.InvokeMember(
                        SET_CONFIGURATION_METHOD,
                        BindingFlags.InvokeMethod,
                        null,
                        componentClass,
                        new Object[] { config, configFileSettings }
                        );
                }
                catch (Exception ex)
                {
                    "chocolatey".Log().Error(
                        ChocolateyLoggers.Important,
                        @"Error when setting configuration for '{0}':{1} {2}".format_with(
                            licensedConfigBuilder.FullName,
                            Environment.NewLine,
                            ex.Message
                            ));
                }
            }
        }
Esempio n. 23
0
        private static void set_licensed_options(ChocolateyConfiguration config, ChocolateyLicense license, ConfigFileSettings configFileSettings)
        {
            if (license.AssemblyLoaded)
            {
                Type licensedConfigBuilder = license.Assembly.GetType(ApplicationParameters.LicensedConfigurationBuilder, throwOnError: true, ignoreCase: true);

                if (licensedConfigBuilder == null)
                {
                    "chocolatey".Log().Error(
                        @"Type expected for registering components was null. Unable to provide
             name due to it being null.");
                    return;
                }
                try
                {
                    object componentClass = Activator.CreateInstance(licensedConfigBuilder);

                    licensedConfigBuilder.InvokeMember(
                        SET_CONFIGURATION_METHOD,
                        BindingFlags.InvokeMethod,
                        null,
                        componentClass,
                        new Object[] { config, configFileSettings }
                        );
                }
                catch (Exception ex)
                {
                    "chocolatey".Log().Error(
                        ChocolateyLoggers.Important,
                        @"Error when setting configuration for '{0}':{1} {2}".format_with(
                            licensedConfigBuilder.FullName,
                            Environment.NewLine,
                            ex.Message
                            ));
                }
            }
        }