protected void FillConnectorPasswordManagementConfigurationDataSet()

in src/MIMConfigDocumenter/ConnectorDocumenter.cs [2715:2769]


        protected void FillConnectorPasswordManagementConfigurationDataSet(bool pilotConfig)
        {
            Logger.Instance.WriteMethodEntry("Pilot Config: '{0}'.", pilotConfig);

            try
            {
                var config = pilotConfig ? this.PilotXml : this.ProductionXml;
                var dataSet = pilotConfig ? this.PilotDataSet : this.ProductionDataSet;

                var table = dataSet.Tables[0];

                var connector = config.XPathSelectElement(Documenter.GetConnectorXmlRootXPath(pilotConfig) + "/ma-data[name ='" + this.ConnectorName + "']");

                if (connector != null)
                {
                    var enablePasswordSync = !((string)connector.XPathSelectElement("password-sync-allowed") ?? string.Empty).Equals("1", StringComparison.OrdinalIgnoreCase) ? "No" : "Yes";

                    Documenter.AddRow(table, new object[] { 0, "Enable password management", enablePasswordSync });

                    if (enablePasswordSync.Equals("Yes", StringComparison.OrdinalIgnoreCase))
                    {
                        if (connector.XPathSelectElement("private-configuration/*/password-extension-config[password-extension-enabled = '1']") != null)
                        {
                            Documenter.AddRow(table, new object[] { 1, "Extension name", (string)connector.XPathSelectElement("private-configuration/*/password-extension-config/dll") });

                            var connectionInfo = connector.XPathSelectElement("private-configuration/*/password-extension-config/connection-info");

                            if (connectionInfo != null)
                            {
                                Documenter.AddRow(table, new object[] { 2, "Connect To", (string)connectionInfo.Element("connect-to") });
                                Documenter.AddRow(table, new object[] { 3, "User", (string)connectionInfo.Element("user") });
                                Documenter.AddRow(table, new object[] { 4, "Password", "******" });
                            }

                            Documenter.AddRow(table, new object[] { 5, "Connection timeout (seconds)", (string)connector.XPathSelectElement("private-configuration/*/password-extension-config/timeout") });

                            var passwordSetEnabled = ((string)connector.XPathSelectElement("private-configuration/*/password-extension-config/password-set-enabled")).Equals("1", StringComparison.OrdinalIgnoreCase);
                            var passwordChangeEnabled = ((string)connector.XPathSelectElement("private-configuration/*/password-extension-config/password-change-enabled")).Equals("1", StringComparison.OrdinalIgnoreCase);
                            Documenter.AddRow(table, new object[] { 6, "Supported password operations", passwordSetEnabled && passwordChangeEnabled ? "Set and change" : passwordSetEnabled ? "Set" : passwordChangeEnabled ? "Change" : string.Empty });
                        }

                        // Password sync target settings
                        Documenter.AddRow(table, new object[] { 11, "Maximum retry count", (string)connector.XPathSelectElement("password-sync/maximum-retry-count") });
                        Documenter.AddRow(table, new object[] { 12, "Retry interval (seconds)", (string)connector.XPathSelectElement("password-sync/retry-interval") });
                        Documenter.AddRow(table, new object[] { 13, "Require secure connection for password synchronization options", !((string)connector.XPathSelectElement("password-sync/allow-low-security") ?? string.Empty).Equals("1", StringComparison.OrdinalIgnoreCase) ? "Yes" : "No" });
                    }

                    table.AcceptChanges();
                }
            }
            finally
            {
                Logger.Instance.WriteMethodExit("Pilot Config: '{0}'.", pilotConfig);
            }
        }