Beispiel #1
0
        /// <summary>
        /// This is used to set the inspector behaviors for the proxies, so that we can grab the soap requests and responses when we make service calls.
        /// </summary>
        /// <param name="endpointBehaviors"></param>
        protected void SetInspectorBehavior(System.Collections.ObjectModel.KeyedCollection <Type, System.ServiceModel.Description.IEndpointBehavior> endpointBehaviors)
        {
            InspectorBehavior inspectorBehavior = new InspectorBehavior();

            inspectorBehavior.ReturnMessageXml += ReturnMessageXMLHandler;
            endpointBehaviors.Add(inspectorBehavior);
        }
Beispiel #2
0
 protected internal override MsgPack.Serialization.AbstractClassCollectionKnownType UnpackFromCore(MsgPack.Unpacker unpacker)
 {
     MsgPack.Serialization.AbstractClassCollectionKnownType result = default(MsgPack.Serialization.AbstractClassCollectionKnownType);
     result = new MsgPack.Serialization.AbstractClassCollectionKnownType();
     if (unpacker.IsArrayHeader)
     {
         int unpacked   = default(int);
         int itemsCount = default(int);
         itemsCount = MsgPack.Serialization.UnpackHelpers.GetItemsCount(unpacker);
         System.Collections.ObjectModel.KeyedCollection <string, string> nullable = default(System.Collections.ObjectModel.KeyedCollection <string, string>);
         if ((unpacked < itemsCount))
         {
             if ((unpacker.Read() == false))
             {
                 throw MsgPack.Serialization.SerializationExceptions.NewMissingItem(0);
             }
             if (((unpacker.IsArrayHeader == false) &&
                  (unpacker.IsMapHeader == false)))
             {
                 nullable = this._serializer1.UnpackFrom(unpacker);
             }
             else
             {
                 MsgPack.Unpacker disposable = default(MsgPack.Unpacker);
                 disposable = unpacker.ReadSubtree();
                 try {
                     nullable = this._serializer1.UnpackFrom(disposable);
                 }
                 finally {
                     if (((disposable == null)
                          == false))
                     {
                         disposable.Dispose();
                     }
                 }
             }
         }
         if (((nullable == null)
              == false))
         {
             result.Value = nullable;
         }
         unpacked = (unpacked + 1);
     }
     else
     {
         int itemsCount0 = default(int);
         itemsCount0 = MsgPack.Serialization.UnpackHelpers.GetItemsCount(unpacker);
         for (int i = 0; (i < itemsCount0); i = (i + 1))
         {
             string key       = default(string);
             string nullable0 = default(string);
             nullable0 = MsgPack.Serialization.UnpackHelpers.UnpackStringValue(unpacker, typeof(MsgPack.Serialization.AbstractClassCollectionKnownType), "MemberName");
             if (((nullable0 == null)
                  == false))
             {
                 key = nullable0;
             }
             else
             {
                 throw MsgPack.Serialization.SerializationExceptions.NewNullIsProhibited("MemberName");
             }
             if ((key == "Value"))
             {
                 System.Collections.ObjectModel.KeyedCollection <string, string> nullable1 = default(System.Collections.ObjectModel.KeyedCollection <string, string>);
                 if ((unpacker.Read() == false))
                 {
                     throw MsgPack.Serialization.SerializationExceptions.NewMissingItem(i);
                 }
                 if (((unpacker.IsArrayHeader == false) &&
                      (unpacker.IsMapHeader == false)))
                 {
                     nullable1 = this._serializer1.UnpackFrom(unpacker);
                 }
                 else
                 {
                     MsgPack.Unpacker disposable0 = default(MsgPack.Unpacker);
                     disposable0 = unpacker.ReadSubtree();
                     try {
                         nullable1 = this._serializer1.UnpackFrom(disposable0);
                     }
                     finally {
                         if (((disposable0 == null)
                              == false))
                         {
                             disposable0.Dispose();
                         }
                     }
                 }
                 if (((nullable1 == null)
                      == false))
                 {
                     result.Value = nullable1;
                 }
             }
             else
             {
                 unpacker.Skip();
             }
         }
     }
     return(result);
 }
 private void SetUnpackedValueOfValue(MsgPack.Serialization.AbstractClassCollectionKnownType unpackingContext, System.Collections.ObjectModel.KeyedCollection <string, string> unpackedValue)
 {
     unpackingContext.Value = unpackedValue;
 }
Beispiel #4
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");
            }
        }
Beispiel #5
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 #6
0
        public void InitializeConfigParameters(System.Collections.ObjectModel.KeyedCollection <string, ConfigParameter> configParameters)
        {
            Tracer.Enter("initializeconfigparameters");
            try
            {
                if (configParameters != null)
                {
                    foreach (ConfigParameter cp in configParameters)
                    {
                        Tracer.TraceInformation("{0}: '{1}'", cp.Name, cp.IsEncrypted ? "*** secret ***" : cp.Value);
                        if (cp.Name.Equals(Constants.Parameters.Username))
                        {
                            Username = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.Password))
                        {
                            Password             = configParameters[cp.Name].SecureValue.ConvertToUnsecureString();
                            SecureStringPassword = configParameters[cp.Name].SecureValue;
                        }

                        if (cp.Name.Equals(Constants.Parameters.ImpersonationDomain))
                        {
                            impersonationUserDomain = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.ImpersonationUsername))
                        {
                            impersonationUsername = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.ImpersonationPassword))
                        {
                            impersonationUserPassword = configParameters[cp.Name].SecureValue.ConvertToUnsecureString();
                        }

                        if (cp.Name.Equals(Constants.Parameters.SchemaScript))
                        {
                            SchemaScript = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.ImportScript))
                        {
                            ImportScript = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.ExportScript))
                        {
                            ExportScript = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.PasswordManagementScript))
                        {
                            PasswordManagementScript = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.ExportSimpleObjects))
                        {
                            ExportSimpleObjects = configParameters[cp.Name].Value == "0" ? false : true;
                        }
                        if (cp.Name.Equals(Constants.Parameters.UsePagedImport))
                        {
                            UsePagedImport = configParameters[cp.Name].Value == "0" ? false : true;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Tracer.TraceError("initializeconfigparameters", ex);
                throw;
            }
            finally
            {
                Tracer.Exit("initializeconfigparameters");
            }
        }
Beispiel #7
0
        public OpenImportConnectionResults OpenImportConnection(System.Collections.ObjectModel.KeyedCollection <string, ConfigParameter> configParameters, Schema types, OpenImportConnectionRunStep openImportRunStep)
        {
            Tracer.Enter("openimportconnection");
            try
            {
                Tracer.TraceInformation("getting-schema");
                try
                {
                    foreach (SchemaType type in types.Types)
                    {
                        foreach (SchemaAttribute attr in type.AnchorAttributes)
                        {
                            //Tracer.TraceInformation("{0}-anchor-attribute {1} [{2}]", type.Name, attr.Name, attr.DataType);
                            objectTypeAnchorAttributeNames.Add(type.Name, attr.Name);
                        }
                        foreach (SchemaAttribute attr in type.Attributes)
                        {
                            //Tracer.TraceInformation("{0}-attribute {1} [{2}]", type.Name, attr.Name, attr.DataType);
                        }
                    }
                    InitializeSchemaVariables(types);
                }
                catch (Exception ex)
                {
                    Tracer.TraceError("getting-schema", ex);
                }
                finally
                {
                    Tracer.TraceInformation("got-schema");
                }

                InitializeConfigParameters(configParameters);

                //SetupImpersonationToken();

                OpenRunspace();

                Tracer.TraceInformation("resetting-pipeline-results-and-counters");
                importResults = new List <PSObject>();
                pageToken     = "";

                OpenImportConnectionResults oicr = new OpenImportConnectionResults();
                ImportRunStepPageSize = openImportRunStep.PageSize;
                Tracer.TraceInformation("openimportrunstep-pagesize '{0}'", ImportRunStepPageSize);

                oicr.CustomData = openImportRunStep.ImportType == OperationType.Full ? "" : openImportRunStep.CustomData;
                Tracer.TraceInformation("openimportrunstep-customdata '{0}'", oicr.CustomData);

                importOperationType = openImportRunStep.ImportType;
                Tracer.TraceInformation("openimportrunstep-importtype '{0}'", importOperationType);

                return(oicr);
            }
            catch (Exception ex)
            {
                Tracer.TraceError("openimportconnection", ex);
                throw;
            }
            finally
            {
                Tracer.Exit("openimportconnection");
            }
        }
        public void GetDeltaImport()
        {
            using (SQLManagementAgent ma = new SQLManagementAgent())
            {
                Configuration.Schema = ma.DefaultSchemaXml.XmlDeserializeFromString <SchemaConfiguration>();
                Schema schema = ma.GetSchemaDetached();

                // first get full data to get deltawatermark
                ma.Schema     = schema;
                ma.ImportType = OperationType.Delta;
                ma.CustomData = "140180";
                ma.PageSize   = 1;

                System.Collections.ObjectModel.KeyedCollection <string, ConfigParameter> configParams = null;
                ma.OpenImportConnectionDetached(configParams, schema, null);

                GetImportEntriesRunStep rs = new GetImportEntriesRunStep();

                GetImportEntriesResults rest = new GetImportEntriesResults();
                rest.MoreToImport = true;
                while (rest.MoreToImport)
                {
                    rest = ma.GetImportEntriesDetached(rs);
                }

                CloseImportConnectionRunStep dummyCloseImportRunStep = null;
                ma.CloseImportConnectionDetached(dummyCloseImportRunStep);
            }
        }
Beispiel #9
0
        public void InitializeConfigParameters(System.Collections.ObjectModel.KeyedCollection <string, ConfigParameter> configParameters)
        {
            Tracer.Enter("initializeconfigparameters");
            try
            {
                if (configParameters != null)
                {
                    foreach (ConfigParameter cp in configParameters)
                    {
                        Tracer.TraceInformation("{0}: '{1}'", cp.Name, cp.IsEncrypted ? "*** secret ***" : cp.Value);
                        if (cp.Name.Equals(Constants.Parameters.Username))
                        {
                            Username = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.Password))
                        {
                            Password             = configParameters[cp.Name].SecureValue.ConvertToUnsecureString();
                            SecureStringPassword = configParameters[cp.Name].SecureValue;
                        }

                        if (cp.Name.Equals(Constants.Parameters.UsernameAux))
                        {
                            UsernameAux = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.PasswordAux))
                        {
                            PasswordAux             = configParameters[cp.Name].SecureValue.ConvertToUnsecureString();
                            SecureStringPasswordAux = configParameters[cp.Name].SecureValue;
                        }
                        if (cp.Name.Equals(Constants.Parameters.ConfigurationParameters))
                        {
                            string[] result = Regex.Split(configParameters[cp.Name].Value, "\r\n|\r|\n");
                            if (result != null)
                            {
                                foreach (string s in result)
                                {
                                    string key   = null;
                                    string value = null;
                                    if (getConfigurationParameter(s, out key, out value))
                                    {
                                        Tracer.TraceInformation($"configuration-parameter key: '{key}', value: '{value}'");
                                        if (ConfigurationParameter.ContainsKey(key))
                                        {
                                            Tracer.TraceWarning($"duplicate-configuration key: {key}");
                                        }
                                        else
                                        {
                                            ConfigurationParameter.Add(key, value);
                                        }
                                    }
                                }
                            }
                        }

                        if (cp.Name.Equals(Constants.Parameters.ImpersonationDomain))
                        {
                            impersonationUserDomain = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.ImpersonationUsername))
                        {
                            impersonationUsername = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.ImpersonationPassword))
                        {
                            impersonationUserPassword = configParameters[cp.Name].SecureValue.ConvertToUnsecureString();
                        }

                        if (cp.Name.Equals(Constants.Parameters.SchemaScript))
                        {
                            SchemaScript = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.ImportScript))
                        {
                            ImportScript = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.ExportScript))
                        {
                            ExportScript = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.PasswordManagementScript))
                        {
                            PasswordManagementScript = configParameters[cp.Name].Value;
                        }
                        if (cp.Name.Equals(Constants.Parameters.ExportSimpleObjects))
                        {
                            ExportSimpleObjects = configParameters[cp.Name].Value == "0" ? false : true;
                        }
                        if (cp.Name.Equals(Constants.Parameters.UsePagedImport))
                        {
                            UsePagedImport = configParameters[cp.Name].Value == "0" ? false : true;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Tracer.TraceError("initializeconfigparameters", ex);
                throw;
            }
            finally
            {
                Tracer.Exit("initializeconfigparameters");
            }
        }
Beispiel #10
0
 public Dbg_KeyedCollectionDebugView([NotNull] System.Collections.ObjectModel.KeyedCollection <TKey, TValue> keyedCollection)
 {
     _keyedCollection = keyedCollection;
 }