Beispiel #1
0
        public IList <ConfigParameterDefinition> GetConfigParameters(
            KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            var configParametersDefinitions = new List <ConfigParameterDefinition>();

            if (page == ConfigParameterPage.Global)
            {
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateCheckBoxParameter("Use mockup data"));
            }

            IList <ConfigParameterDefinition> customParameters = GetEzmaConfigParameters(configParameters, page);

            if (customParameters != null)
            {
                configParametersDefinitions.AddRange(customParameters);
            }

            //NOTE: need this because ezmas are seemingly requierd to have at least one connection attribute
            if (page == ConfigParameterPage.Connectivity && configParametersDefinitions.Count == 0)
            {
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("RequiredEmptyParameter", null, "IgnoreThisValue"));
            }

            return(configParametersDefinitions);
        }
Beispiel #2
0
        internal static void AddBuiltInLoggingParameters(ConfigParameterPage page, List <ConfigParameterDefinition> configParameterDefinitions)
        {
            if (page == ConfigParameterPage.Connectivity)
            {
                ISettingsProvider settings = InterfaceManager.GetProviderOrDefault <ISettingsProvider>();

                if (!settings?.HandleOwnLogConfiguration ?? false)
                {
                    configParameterDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Logging.LogFileParameterName, string.Empty));
                    configParameterDefinitions.Add(ConfigParameterDefinition.CreateDropDownParameter(Logging.LogLevelParameterName, LogLevel.AllLevels.Reverse().Select(t => t.Name).ToArray(), false, "Info"));
                    configParameterDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Logging.LogDaysParameterName, string.Empty));
                    configParameterDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                }
            }
        }
        /// <summary>
        /// Get an array of values indicating the configuration parameter definitions supported by the
        /// management agent. This method is called to display the parameters user interface page for
        /// configuring Connectivity, Global, Partitions, and Run-Step parameters.
        /// </summary>
        /// <param name="configParameters">A collection of <see cref="ConfigParameter"/> objects.</param>
        /// <param name="page">The <see cref="ConfigParameterPage"/> which contains the parameters.</param>
        /// <returns>A list of child <see cref="ConfigParameterDefinition"/> objects.</returns>
        public IList <ConfigParameterDefinition> GetConfigParameters(
            KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            List <ConfigParameterDefinition> parameterDefinitionList = new List <ConfigParameterDefinition>();

            if (page == ConfigParameterPage.Connectivity)
            {
                parameterDefinitionList.Add(
                    ConfigParameterDefinition.CreateStringParameter("AppId", string.Empty));
                parameterDefinitionList.Add(
                    ConfigParameterDefinition.CreateEncryptedStringParameter("AppSecret", string.Empty));
                parameterDefinitionList.Add(
                    ConfigParameterDefinition.CreateStringParameter("Username", string.Empty));
                parameterDefinitionList.Add(
                    ConfigParameterDefinition.CreateEncryptedStringParameter("Password", string.Empty));
            }

            return(parameterDefinitionList);
        }
        /// <summary>
        /// Validates the configurations parameters.
        /// </summary>
        /// <param name="configParameters">Contains a collection of <see cref="ConfigParameter"/> objects.</param>
        /// <param name="page">The <see cref="ConfigParameterPage"/> which contains the parameters</param>
        /// <returns>An aptly populated instance of <see cref="ParameterValidationResult"/>.</returns>
        public ParameterValidationResult ValidateConfigParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            InitializeConnector(configParameters);

            return(new ParameterValidationResult());
        }
        public ParameterValidationResult ValidateConfigParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            ManagementAgentParameters parameters = new ManagementAgentParameters(configParameters);

            return(parameters.ValidateParameters(page));
        }
Beispiel #6
0
        public IList <ConfigParameterDefinition> GetConfigParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            List <ConfigParameterDefinition> configParametersDefinitions = new List <ConfigParameterDefinition>();

            switch (page)
            {
            case ConfigParameterPage.Connectivity:
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(_BASE_URI, "", "https://api.themoviedb.org/3/"));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(_API_KEY, ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(_LANG, "", "en-GB"));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(_NOPAGESRTN, "", "40"));
                break;

            default:
                break;
            }
            return(configParametersDefinitions);
        }
 public ParameterValidationResult ValidateConfigParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
 {
     return(new ParameterValidationResult());
 }
Beispiel #8
0
 ParameterValidationResult IMAExtensible2GetParameters.ValidateConfigParameters(System.Collections.ObjectModel.KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
 {
     try
     {
         Tracer.Enter("validateconfigparameters");
         if (page == ConfigParameterPage.Connectivity)
         {
             string schemaScriptFilename = Path.GetFullPath(configParameters[Constants.Parameters.SchemaScript].Value);
             if (!File.Exists(schemaScriptFilename))
             {
                 return(new ParameterValidationResult(ParameterValidationResultCode.Failure, string.Format("Can not find or access Schema script '{0}'. Please make sure that the FIM Synchronization Service service account can read and access this file.", schemaScriptFilename), Constants.Parameters.SchemaScript));
             }
         }
         if (page == ConfigParameterPage.Global)
         {
             string importScriptFilename = Path.GetFullPath(configParameters[Constants.Parameters.ImportScript].Value);
             if (!File.Exists(importScriptFilename))
             {
                 return(new ParameterValidationResult(ParameterValidationResultCode.Failure, string.Format("Can not find or access Import script '{0}'. Please make sure that the FIM Synchronization Service service account can read and access this file.", importScriptFilename), Constants.Parameters.ImportScript));
             }
             string exportScriptFilename = Path.GetFullPath(configParameters[Constants.Parameters.ExportScript].Value);
             if (!File.Exists(exportScriptFilename))
             {
                 return(new ParameterValidationResult(ParameterValidationResultCode.Failure, string.Format("Can not find or access Export script '{0}'. Please make sure that the FIM Synchronization Service service account can read and access this file.", exportScriptFilename), Constants.Parameters.ExportScript));
             }
             string passwordManagementScriptFilename = Path.GetFullPath(configParameters[Constants.Parameters.PasswordManagementScript].Value);
             if (!File.Exists(passwordManagementScriptFilename))
             {
                 return(new ParameterValidationResult(ParameterValidationResultCode.Failure, string.Format("Can not find or access Password Management script '{0}'. Please make sure that the FIM Synchronization Service service account can read and access this file.", passwordManagementScriptFilename), Constants.Parameters.PasswordManagementScript));
             }
         }
     }
     catch (Exception ex)
     {
         Tracer.TraceError("validateconfigparameters", ex);
         throw;
     }
     finally
     {
         Tracer.Exit("validateconfigparameters");
     }
     return(new ParameterValidationResult(ParameterValidationResultCode.Success, "", ""));
 }
Beispiel #9
0
        /// <summary>
        /// Gets the list of configuration parameters for the management agent
        /// </summary>
        /// <param name="configParameters">The list of configuration parameters</param>
        /// <param name="page">The page to get the configuration parameters for</param>
        /// <returns>A list of ConfigParameterDefinition objects</returns>
        public IList <ConfigParameterDefinition> GetConfigParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            List <ConfigParameterDefinition> configParametersDefinitions = new List <ConfigParameterDefinition>();

            switch (page)
            {
            case ConfigParameterPage.Connectivity:
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(MAParameterNames.LogPath, string.Empty));
                break;

            case ConfigParameterPage.Global:
                break;

            case ConfigParameterPage.Partition:
                break;

            case ConfigParameterPage.RunStep:
                break;

            case ConfigParameterPage.Capabilities:
                break;
            }

            return(configParametersDefinitions);
        }
        public static IList <ConfigParameterDefinition> GetParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            List <ConfigParameterDefinition> parameters = new List <ConfigParameterDefinition>();

            switch (page)
            {
            case ConfigParameterPage.Capabilities:
                break;

            case ConfigParameterPage.Connectivity:
                parameters.Add(ConfigParameterDefinition.CreateLabelParameter("Credentials"));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.CustomerIDParameter, null, "my_customer"));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.DomainParameter, null, null));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.ServiceAccountEmailAddressParameter, null, null));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.UserEmailAddressParameter, null, null));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.KeyFilePathParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateEncryptedStringParameter(ManagementAgentParametersBase.KeyFilePasswordParameter, null, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.LogFilePathParameter, null));
                break;

            case ConfigParameterPage.Global:
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.UserRegexFilterParameter, null, null));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.GroupRegexFilterParameter, null, null));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.ContactRegexFilterParameter, null, null));
                parameters.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ManagementAgentParametersBase.ExcludeUserCreatedGroupsParameter, false));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateLabelParameter("The Google API supports filtering users based on query parameters. For example, to filter on org unit, type 'orgUnitPath=/MyOrgUnit'. Refer to the API documentation at https://developers.google.com/admin-sdk/directory/v1/guides/search-users for more information"));
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.UserQueryFilterParameter, null, null));

                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ManagementAgentParametersBase.InheritGroupRolesParameter, false));
                parameters.Add(ConfigParameterDefinition.CreateLabelParameter("Inheriting group roles forces the MA to include owners in the managers list, and managers in the members list"));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ManagementAgentParametersBase.CalendarSendNotificationOnPermissionChangeParameter, false));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateStringParameter(ManagementAgentParametersBase.ContactsPrefixParameter, null, "contact:"));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ManagementAgentParametersBase.SkipMemberImportOnArchivedCoursesParameter, false));
                parameters.Add(ConfigParameterDefinition.CreateLabelParameter("Skipping import of students and teachers on ARCHIVED Courses can speed up import if you have many Archived course objects."));

                break;

            case ConfigParameterPage.Partition:
                break;

            case ConfigParameterPage.RunStep:
                parameters.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ManagementAgentParametersBase.DoNotGenerateDeltaParameter, false));

                break;

            case ConfigParameterPage.Schema:
                parameters.Add(ConfigParameterDefinition.CreateLabelParameter("The values from the following objects are flattened based on the type of object specified. Enter the types you wish to expose, each on a separate line (ctrl-enter for a new line). For example, entering 'work' and 'home' in the phone numbers text box will expose the attributes phones_work and phones_home"));
                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.PhonesFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.OrganizationsFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.IMsFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.ExternalIDsFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.RelationsFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.AddressesFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.EmailsFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.WebsitesFixedTypeFormatParameter, null));
                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());

                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateDropDownParameter(ManagementAgentParametersBase.CalendarBuildingAttributeTypeParameter, new string[] { "String", "Reference" }, false, "String"));
                parameters.Add(ConfigParameterDefinition.CreateDropDownParameter(ManagementAgentParametersBase.CalendarFeatureAttributeTypeParameter, new string[] { "String", "Reference" }, false, "String"));
                parameters.Add(ConfigParameterDefinition.CreateDropDownParameter(ManagementAgentParametersBase.GroupMemberAttributeTypeParameter, new string[] { "String", "Reference" }, false, "Reference"));

                parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                parameters.Add(ConfigParameterDefinition.CreateLabelParameter("Specify additional custom user object classes to expose. (Press ctrl+enter for each new line)"));
                parameters.Add(ConfigParameterDefinition.CreateTextParameter(ManagementAgentParametersBase.CustomUserObjectClassesParameter, null));

                var config = new ManagementAgentParameters(configParameters);

                if (config.KeyFilePath != null && !string.IsNullOrEmpty(config.KeyFilePassword) && config.Certificate != null)
                {
                    parameters.Add(ConfigParameterDefinition.CreateDividerParameter());
                    parameters.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ManagementAgentParametersBase.EnableAdvancedUserAttributesParameter, false));
                    parameters.Add(ConfigParameterDefinition.CreateLabelParameter("Enabling advanced user attributes enables managing delegate and send-as settings, however this can significantly slow down the speed of full imports. A separate API call must be made for every user during the import process for each of these selected attributes."));
                    parameters.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ManagementAgentParametersBase.MakeNewSendAsAddressesDefaultParameter, false));
                }

                break;

            default:
                break;
            }

            return(parameters);
        }
Beispiel #11
0
        public void GetConfigParameters(KeyedCollection <string, ConfigParameter> existingParameters, IList <ConfigParameterDefinition> newDefinitions, ConfigParameterPage page)
        {
            switch (page)
            {
            case ConfigParameterPage.Connectivity:
                newDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(ConfigParameterNames.TenantDomain, string.Empty));
                newDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(ConfigParameterNames.ClientId, string.Empty));
                newDefinitions.Add(ConfigParameterDefinition.CreateEncryptedStringParameter(ConfigParameterNames.Secret, string.Empty));
                break;

            case ConfigParameterPage.Global:
                newDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter(ConfigParameterNames.FilterQueryDescription));
                newDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(ConfigParameterNames.FilterQuery, string.Empty));
                newDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                newDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter(ConfigParameterNames.ChannelNameFilterDescription));
                newDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(ConfigParameterNames.ChannelNameFilter, string.Empty));
                newDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                newDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter(ConfigParameterNames.RandomizeChannelNameOnDeleteDecription));
                newDefinitions.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ConfigParameterNames.RandomizeChannelNameOnDelete, false));
                newDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                newDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter(ConfigParameterNames.UsersToIgnoreDescription));
                newDefinitions.Add(ConfigParameterDefinition.CreateTextParameter(ConfigParameterNames.UsersToIgnore));
                newDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                newDefinitions.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ConfigParameterNames.SetSpoReadOnly, false));
                break;

            case ConfigParameterPage.Partition:
                break;

            case ConfigParameterPage.RunStep:
                break;
            }
        }
Beispiel #12
0
        IList <ConfigParameterDefinition> IMAExtensible2GetParameters.GetConfigParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            Tracer.Enter(nameof(IMAExtensible2GetParameters.GetConfigParameters));
            try
            {
                List <ConfigParameterDefinition> configParametersDefinitions = new List <ConfigParameterDefinition>();
                switch (page)
                {
                case ConfigParameterPage.Connectivity:
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateTextParameter(Configuration.Parameters.ConnectionString, Configuration.ConnectionString));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter("Authentication (optional): These credentials are replaced in the connection string."));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateDropDownParameter(Configuration.Parameters.TypeOfAuthentication, Configuration.Parameters.AuthenticationTypeSQL + "," + Configuration.Parameters.AuthenticationTypeWindows, false, Configuration.Parameters.AuthenticationTypeSQL));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.Username, "", Configuration.UserName));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateEncryptedStringParameter(Configuration.Parameters.Password, "", ""));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.Domain, "", Configuration.Domain));

                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.TableNameSingleValue, "", Configuration.TableNameSingle));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.TableNameMultiValue, "", ""));

                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateDropDownParameter(Configuration.Parameters.TypeOfObjectClass, "Column,Fixed", false, ObjectClassType.Column.ToString()));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.ColumnOrValueObjectClass, "", Configuration.ObjectClass));

                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.ColumnAnchor, "", Configuration.AnchorColumn));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.ColumnDN, "", Configuration.DNColumn));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.ColumnIsDeleted, "", ""));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.ColumnMVAnchorReference, "", ""));

                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateDropDownParameter(Configuration.Parameters.TypeOfDelta, "Rowversion,DateTime", false, DeltaColumnType.Rowversion.ToString()));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.ColumnDelta, "", ""));

                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.DateFormat, "", Configuration.DateFormat));

                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter("Below you can specify SQL schema related XML configuration."));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateTextParameter(Configuration.Parameters.SchemaConfiguration, DefaultSchemaXml));
                    break;

                case ConfigParameterPage.Global:
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter("Optionally, you can specify the names of Stored Procedures to run before and after imports and exports. If a parameter is left blank, no action is taken for that step."));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter("Import Stored Procedures"));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.ImportCommandBefore, Configuration.ImportCommandBefore));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.ImportCommandAfter, Configuration.ImportCommandAfter));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter("Export Stored Procedures"));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.ExportCommandBefore, Configuration.ExportCommandBefore));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.ExportCommandAfter, Configuration.ExportCommandAfter));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.ExportObjectCommandBefore, Configuration.ExportObjectCommandBefore));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Configuration.Parameters.ExportObjectCommandAfter, Configuration.ExportObjectCommandAfter));

                    break;

                case ConfigParameterPage.Partition:
                    break;

                case ConfigParameterPage.RunStep:
                    break;
                }
                return(configParametersDefinitions);
            }
            catch (Exception ex)
            {
                Tracer.TraceError(nameof(IMAExtensible2GetParameters.GetConfigParameters), ex);
                throw;
            }
            finally
            {
                Tracer.Exit(nameof(IMAExtensible2GetParameters.GetConfigParameters));
            }
        }
Beispiel #13
0
 ParameterValidationResult IMAExtensible2GetParameters.ValidateConfigParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
 {
     Tracer.Enter(nameof(IMAExtensible2GetParameters.ValidateConfigParameters));
     try
     {
         if (page == ConfigParameterPage.Capabilities)
         {
             return(new ParameterValidationResult(ParameterValidationResultCode.Success, "", ""));
         }
         if (page == ConfigParameterPage.Connectivity)
         {
             return(new ParameterValidationResult(ParameterValidationResultCode.Success, "", ""));
         }
         if (page == ConfigParameterPage.Global)
         {
             return(new ParameterValidationResult(ParameterValidationResultCode.Success, "", ""));
         }
         if (page == ConfigParameterPage.Partition)
         {
             return(new ParameterValidationResult(ParameterValidationResultCode.Success, "", ""));
         }
         if (page == ConfigParameterPage.RunStep)
         {
             return(new ParameterValidationResult(ParameterValidationResultCode.Success, "", ""));
         }
     }
     catch (Exception ex)
     {
         Tracer.TraceError(nameof(IMAExtensible2GetParameters.ValidateConfigParameters), ex);
         throw;
     }
     finally
     {
         Tracer.Exit(nameof(IMAExtensible2GetParameters.ValidateConfigParameters));
     }
     return(new ParameterValidationResult(ParameterValidationResultCode.Success, "", ""));
 }
Beispiel #14
0
        internal static ParameterValidationResult ValidateBuiltInLoggingParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            if (page == ConfigParameterPage.Connectivity)
            {
                ISettingsProvider settings = InterfaceManager.GetProviderOrDefault <ISettingsProvider>();

                if (!settings?.HandleOwnLogConfiguration ?? false)
                {
                    if (!string.IsNullOrWhiteSpace(configParameters[Logging.LogDaysParameterName].Value) && !int.TryParse(configParameters[Logging.LogDaysParameterName].Value, out int _))
                    {
                        return(new ParameterValidationResult(ParameterValidationResultCode.Failure, "The value for log retention needs to be a number", Logging.LogDaysParameterName));
                    }

                    if (!string.IsNullOrWhiteSpace(configParameters[Logging.LogLevelParameterName].Value))
                    {
                        try
                        {
                            LogLevel.FromString(configParameters[Logging.LogLevelParameterName].Value);
                        }
                        catch (Exception)
                        {
                            return(new ParameterValidationResult(ParameterValidationResultCode.Failure, "The value for log level was unknown", Logging.LogLevelParameterName));
                        }
                    }
                }
            }

            return(null);
        }
        public IList <ConfigParameterDefinition> GetConfigParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            List <ConfigParameterDefinition> configParametersDefinitions = new List <ConfigParameterDefinition>();

            switch (page)
            {
            case ConfigParameterPage.Connectivity:
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("imUrl", ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("exUrl", ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("webServiceUsername", ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("webServicePassword", ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("enableLogging", ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("loggingLevel", ""));
                break;
                //case ConfigParameterPage.Global:
                //    break;
                //case ConfigParameterPage.Partition:
                //    break;
                //case ConfigParameterPage.RunStep:
                //    break;
            }
            return(configParametersDefinitions);
        }
Beispiel #16
0
        // Get Parameters
        public IList <ConfigParameterDefinition> GetConfigParameters(KeyedCollection <string, ConfigParameter> _configParameters, ConfigParameterPage _page)
        {
            utils.Logger(TraceEventType.Information,
                         ConstDefinition.ID0200_START_GETCONFIGPARAMETERS,
                         ConstDefinition.MSG0200_START_GETCONFIGPARAMETERS);
            var _configParametersDefinitions = new List <ConfigParameterDefinition>();

            try
            {
                switch (_page)
                {
                case ConfigParameterPage.Capabilities:
                    break;

                case ConfigParameterPage.Connectivity:
                    _configParametersDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter("Connection parameters"));
                    _configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(ConstDefinition.CFG_RESOURCE_URI, ""));
                    _configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(ConstDefinition.CFG_AUTH_TOKEN, ""));
                    break;

                case ConfigParameterPage.Global:
                    break;

                case ConfigParameterPage.Partition:
                    break;

                case ConfigParameterPage.RunStep:
                    break;

                case ConfigParameterPage.Schema:
                    break;
                }
            }
            catch (Exception ex)
            {
                utils.Logger(TraceEventType.Error,
                             ConstDefinition.ID0299_ERROR_GETCONFIGPARAMETERS,
                             ConstDefinition.MSG0299_ERROR_GETCONFIGPARAMETERS + ex.Message);
                throw new ExtensibleExtensionException(ConstDefinition.MSG0299_ERROR_GETCONFIGPARAMETERS + ex.Message);
            }
            return(_configParametersDefinitions);
        }
Beispiel #17
0
        // Validate Parameters
        public ParameterValidationResult ValidateConfigParameters(KeyedCollection <string, ConfigParameter> _configParameters, ConfigParameterPage _page)
        {
            utils.Logger(TraceEventType.Information,
                         ConstDefinition.ID0300_START_VALIDATECONFIGPARAMETERS,
                         ConstDefinition.MSG0300_START_VALIDATECONFIGPARAMETERS);
            try
            {
                switch (_page)
                {
                case ConfigParameterPage.Connectivity:
                    break;

                case ConfigParameterPage.Global:
                    break;

                case ConfigParameterPage.Partition:
                    break;

                case ConfigParameterPage.RunStep:
                    break;

                case ConfigParameterPage.Schema:
                    break;
                }
                return(new ParameterValidationResult());
            }
            catch (Exception ex)
            {
                utils.Logger(TraceEventType.Error,
                             ConstDefinition.ID0399_ERROR_VALIDATECONFIGPARAMETERS,
                             ConstDefinition.MSG0300_START_VALIDATECONFIGPARAMETERS + ex.Message);
                throw new ExtensibleExtensionException(ConstDefinition.MSG0399_ERROR_VALIDATECONFIGPARAMETERS + ex.Message);
            }
        }
        public ParameterValidationResult ValidateParameters(ConfigParameterPage page)
        {
            ParameterValidationResult result = new ParameterValidationResult {
                Code = ParameterValidationResultCode.Success
            };

            switch (page)
            {
            case ConfigParameterPage.Capabilities:
                break;

            case ConfigParameterPage.Connectivity:
                if (string.IsNullOrWhiteSpace(this.ServiceAccountEmailAddress))
                {
                    result.Code           = ParameterValidationResultCode.Failure;
                    result.ErrorMessage   = "A service account email address is required";
                    result.ErrorParameter = ManagementAgentParametersBase.ServiceAccountEmailAddressParameter;
                    return(result);
                }

                if (string.IsNullOrWhiteSpace(this.UserEmailAddress))
                {
                    result.Code           = ParameterValidationResultCode.Failure;
                    result.ErrorMessage   = "A user email address is required";
                    result.ErrorParameter = ManagementAgentParametersBase.UserEmailAddressParameter;
                    return(result);
                }

                if (string.IsNullOrWhiteSpace(this.Domain))
                {
                    result.Code           = ParameterValidationResultCode.Failure;
                    result.ErrorMessage   = "The primary domain is required";
                    result.ErrorParameter = ManagementAgentParametersBase.DomainParameter;
                    return(result);
                }

                if (string.IsNullOrWhiteSpace(this.KeyFilePath))
                {
                    result.Code           = ParameterValidationResultCode.Failure;
                    result.ErrorMessage   = "A key file is required";
                    result.ErrorParameter = ManagementAgentParametersBase.KeyFilePathParameter;
                    return(result);
                }
                else
                {
                    if (!File.Exists(this.KeyFilePath))
                    {
                        result.Code           = ParameterValidationResultCode.Failure;
                        result.ErrorMessage   = "The specified key file could not be found";
                        result.ErrorParameter = ManagementAgentParametersBase.KeyFilePathParameter;
                        return(result);
                    }
                    else
                    {
                        try
                        {
                            X509Certificate2 cert = this.Certificate;
                        }
                        catch (Exception ex)
                        {
                            result.Code           = ParameterValidationResultCode.Failure;
                            result.ErrorMessage   = "The specified key file could not be opened. " + ex.Message;
                            result.ErrorParameter = ManagementAgentParametersBase.KeyFilePathParameter;
                            return(result);
                        }
                    }
                }

                if (!string.IsNullOrWhiteSpace(this.GroupRegexFilter))
                {
                    try
                    {
                        Regex r = new Regex(this.GroupRegexFilter);
                    }
                    catch (Exception ex)
                    {
                        result.Code           = ParameterValidationResultCode.Failure;
                        result.ErrorMessage   = "The specified group regular expression was not valid. " + ex.Message;
                        result.ErrorParameter = ManagementAgentParametersBase.GroupRegexFilterParameter;
                        return(result);
                    }
                }

                if (!string.IsNullOrWhiteSpace(this.ContactRegexFilter))
                {
                    try
                    {
                        Regex r = new Regex(this.ContactRegexFilter);
                    }
                    catch (Exception ex)
                    {
                        result.Code           = ParameterValidationResultCode.Failure;
                        result.ErrorMessage   = "The specified contact regular expression was not valid. " + ex.Message;
                        result.ErrorParameter = ManagementAgentParametersBase.ContactRegexFilterParameter;
                        return(result);
                    }
                }

                if (!string.IsNullOrWhiteSpace(this.UserRegexFilter))
                {
                    try
                    {
                        Regex r = new Regex(this.UserRegexFilter);
                    }
                    catch (Exception ex)
                    {
                        result.Code           = ParameterValidationResultCode.Failure;
                        result.ErrorMessage   = "The specified user regular expression was not valid. " + ex.Message;
                        result.ErrorParameter = ManagementAgentParametersBase.UserRegexFilterParameter;
                        return(result);
                    }
                }

                break;

            case ConfigParameterPage.Global:
                break;

            case ConfigParameterPage.Partition:
                break;

            case ConfigParameterPage.RunStep:
                break;

            case ConfigParameterPage.Schema:


                if (this.OrganizationsAttributeFixedTypes.Any())
                {
                    if (!this.OrganizationsAttributeFixedTypes.All(new HashSet <string>().Add))
                    {
                        result.Code           = ParameterValidationResultCode.Failure;
                        result.ErrorMessage   = "The organization types cannot contain duplicates";
                        result.ErrorParameter = ManagementAgentParametersBase.OrganizationsFixedTypeFormatParameter;
                        return(result);
                    }
                }

                if (this.IMsAttributeFixedTypes.Any())
                {
                    if (!this.IMsAttributeFixedTypes.All(new HashSet <string>().Add))
                    {
                        result.Code           = ParameterValidationResultCode.Failure;
                        result.ErrorMessage   = "The IM types cannot contain duplicates";
                        result.ErrorParameter = ManagementAgentParametersBase.IMsFixedTypeFormatParameter;
                        return(result);
                    }
                }

                if (this.AddressesAttributeFixedTypes.Any())
                {
                    if (!this.AddressesAttributeFixedTypes.All(new HashSet <string>().Add))
                    {
                        result.Code           = ParameterValidationResultCode.Failure;
                        result.ErrorMessage   = "The address types cannot contain duplicates";
                        result.ErrorParameter = ManagementAgentParametersBase.AddressesFixedTypeFormatParameter;
                        return(result);
                    }
                }

                if (this.WebsitesAttributeFixedTypes.Any())
                {
                    if (!this.WebsitesAttributeFixedTypes.All(new HashSet <string>().Add))
                    {
                        result.Code           = ParameterValidationResultCode.Failure;
                        result.ErrorMessage   = "The website types cannot contain duplicates";
                        result.ErrorParameter = ManagementAgentParametersBase.WebsitesFixedTypeFormatParameter;
                        return(result);
                    }
                }

                if (this.ExternalIDsAttributeFixedTypes.Any())
                {
                    if (!this.ExternalIDsAttributeFixedTypes.All(new HashSet <string>().Add))
                    {
                        result.Code           = ParameterValidationResultCode.Failure;
                        result.ErrorMessage   = "The external ID types cannot contain duplicates";
                        result.ErrorParameter = ManagementAgentParametersBase.ExternalIDsFixedTypeFormatParameter;
                        return(result);
                    }
                }

                if (this.RelationsAttributeFixedTypes.Any())
                {
                    if (!this.RelationsAttributeFixedTypes.All(new HashSet <string>().Add))
                    {
                        result.Code           = ParameterValidationResultCode.Failure;
                        result.ErrorMessage   = "The relations types field cannot contain duplicates";
                        result.ErrorParameter = ManagementAgentParametersBase.RelationsFixedTypeFormatParameter;
                        return(result);
                    }
                }

                if (this.PhonesAttributeFixedTypes.Any())
                {
                    if (!this.PhonesAttributeFixedTypes.All(new HashSet <string>().Add))
                    {
                        result.Code           = ParameterValidationResultCode.Failure;
                        result.ErrorMessage   = "The phone types cannot contain duplicates";
                        result.ErrorParameter = ManagementAgentParametersBase.PhonesFixedTypeFormatParameter;
                        return(result);
                    }
                }
                break;

            default:
                break;
            }

            return(result);
        }
        public IList <ConfigParameterDefinition> GetConfigParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            List <ConfigParameterDefinition> configParametersDefinitions = new List <ConfigParameterDefinition>();

            switch (page)
            {
            case ConfigParameterPage.Connectivity:

                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("RSA Server", ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("Administrative User Name", ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateEncryptedStringParameter("Administrative Password", string.Empty));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("Command Client User Name", ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateEncryptedStringParameter("Command Client Password", string.Empty));

                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("RSA Realm", ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("Default Shell", ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("Identity Source", ""));

                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("Other Token Receivers", ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("Sender", ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("Errors Mail", ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("SMTP Host", ""));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter("Token File Path", ""));

                break;

            case ConfigParameterPage.Global:
                break;

            case ConfigParameterPage.Partition:
                break;

            case ConfigParameterPage.RunStep:
                break;
            }

            return(configParametersDefinitions);
        }
 public IList <ConfigParameterDefinition> GetConfigParametersEx(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page, int pageNumber)
 {
     if (pageNumber == 1)
     {
         return(ManagementAgentParameters.GetParameters(configParameters, page));
     }
     else
     {
         return(new List <ConfigParameterDefinition>());
     }
 }
Beispiel #21
0
        IList <ConfigParameterDefinition> IMAExtensible2GetParameters.GetConfigParameters(System.Collections.ObjectModel.KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            Tracer.Enter("getconfigparameters");
            try
            {
                List <ConfigParameterDefinition> configParametersDefinitions = new List <ConfigParameterDefinition>();
                switch (page)
                {
                case ConfigParameterPage.Connectivity:
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter("The Schema script is called to retrieve the object and attribute definitions. This script should be accessible to the FIM Synchronization Service service account during configuration and refreshes of the schema."));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Constants.Parameters.SchemaScript, ""));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter("Authentication (optional): These credentials are passed as parameters to all scripts."));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Constants.Parameters.Username, ""));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateEncryptedStringParameter(Constants.Parameters.Password, ""));

                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter("Impersonation (optional): If username and password below are specified (domain optional), the specified user is used to run all scripts. If not specified,  the scripts are run in the security context of the FIM Synchronization Service service account."));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Constants.Parameters.ImpersonationDomain, ""));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Constants.Parameters.ImpersonationUsername, ""));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateEncryptedStringParameter(Constants.Parameters.ImpersonationPassword, ""));

                    break;

                case ConfigParameterPage.Global:
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter("Scripts"));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter("These are the PowerShell scripts that are run on the different operations. You should specify the full path of the scripts. Path cannot include spaces or similar whitespaces."));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Constants.Parameters.ImportScript, ""));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Constants.Parameters.ExportScript, ""));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateCheckBoxParameter(Constants.Parameters.UsePagedImport, false));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter("If you enable Password Management, this script is called for both password change and set (requires PCNS)."));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(Constants.Parameters.PasswordManagementScript, ""));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter("The objects piped to the export script will normally be of type PSCustomObject. If you uncheck this, you will get objects of more complex type CSEntryChange instead (legacy behaviour). For more information on the CSEntryChange object type, please see MSDN Library."));
                    configParametersDefinitions.Add(ConfigParameterDefinition.CreateCheckBoxParameter(Constants.Parameters.ExportSimpleObjects, true));
                    break;

                case ConfigParameterPage.Partition:
                    break;

                case ConfigParameterPage.RunStep:
                    break;
                }

                return(configParametersDefinitions);
            }
            catch (Exception ex)
            {
                Tracer.TraceError("getconfigparameters", ex);
                throw;
            }
            finally
            {
                Tracer.Exit("getconfigparameters");
            }
        }
 public ParameterValidationResult ValidateConfigParametersEx(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page, int pageNumber)
 {
     if (pageNumber == 1)
     {
         ManagementAgentParameters parameters = new ManagementAgentParameters(configParameters);
         return(parameters.ValidateParameters(page));
     }
     else
     {
         return(new ParameterValidationResult(ParameterValidationResultCode.Success, null, null));
     }
 }
        public IList <ConfigParameterDefinition> GetConfigParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
        {
            List <ConfigParameterDefinition> configParametersDefinitions = new List <ConfigParameterDefinition>();

            switch (page)
            {
            case ConfigParameterPage.Connectivity:
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(ConfigParameterNames.TenantUrl, string.Empty));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateEncryptedStringParameter(ConfigParameterNames.ApiKey, string.Empty));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(ConfigParameterNames.LogFileName, string.Empty));
                break;

            case ConfigParameterPage.Global:
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ConfigParameterNames.IncludeBuiltInGroups, false));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ConfigParameterNames.IncludeAppGroups, false));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateDividerParameter());
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateDropDownParameter(ConfigParameterNames.UserDeprovisioningAction, new string[] { "Delete", "Deactivate" }, false, "Deactivate"));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ConfigParameterNames.ActivateNewUsers, false));
                configParametersDefinitions.Add(ConfigParameterDefinition.CreateCheckBoxParameter(ConfigParameterNames.SendActivationEmailToNewUsers, false));

                break;

            case ConfigParameterPage.Partition:
                break;

            case ConfigParameterPage.RunStep:
                break;
            }

            return(configParametersDefinitions);
        }
 public IList <ConfigParameterDefinition> GetConfigParameters(KeyedCollection <string, ConfigParameter> configParameters, ConfigParameterPage page)
 {
     return(ManagementAgentParameters.GetParameters(configParameters, page));
 }