示例#1
0
        private static void ConnectOnprem(this ConnectionDetail connectionDetail)
        {
            connectionDetail.AuthType = (CrmWebResourcesUpdater.DataModels.AuthenticationProviderType)(int) AuthenticationProviderType.ActiveDirectory;

            NetworkCredential credential;

            if (!connectionDetail.IsCustomAuth)
            {
                credential = CredentialCache.DefaultNetworkCredentials;
            }
            else
            {
                var password = CryptoManager.Decrypt(connectionDetail.GetUserPassword(), ConnectionManager.CryptoPassPhrase,
                                                     ConnectionManager.CryptoSaltValue,
                                                     ConnectionManager.CryptoHashAlgorythm,
                                                     ConnectionManager.CryptoPasswordIterations,
                                                     ConnectionManager.CryptoInitVector,
                                                     ConnectionManager.CryptoKeySize);

                credential = new NetworkCredential(connectionDetail.UserName, password, connectionDetail.UserDomain);
            }

            crmSvc = new CrmServiceClient(credential,
                                          AuthenticationType.AD,
                                          connectionDetail.ServerName,
                                          connectionDetail.ServerPort.ToString(),
                                          connectionDetail.OrganizationUrlName,
                                          true,
                                          connectionDetail.UseSsl);
        }
示例#2
0
        private static void ConnectIfd(this ConnectionDetail connectionDetail)
        {
            connectionDetail.AuthType = (CrmWebResourcesUpdater.DataModels.AuthenticationProviderType)(int) AuthenticationProviderType.Federation;

            if (!connectionDetail.IsCustomAuth)
            {
                crmSvc = new CrmServiceClient(CredentialCache.DefaultNetworkCredentials,
                                              AuthenticationType.IFD,
                                              connectionDetail.ServerName,
                                              connectionDetail.ServerPort.ToString(),
                                              connectionDetail.OrganizationUrlName,
                                              true,
                                              connectionDetail.UseSsl);
            }
            else
            {
                var password = CryptoManager.Decrypt(connectionDetail.GetUserPassword(), ConnectionManager.CryptoPassPhrase,
                                                     ConnectionManager.CryptoSaltValue,
                                                     ConnectionManager.CryptoHashAlgorythm,
                                                     ConnectionManager.CryptoPasswordIterations,
                                                     ConnectionManager.CryptoInitVector,
                                                     ConnectionManager.CryptoKeySize);

                crmSvc = new CrmServiceClient(connectionDetail.UserName, CrmServiceClient.MakeSecureString(password), connectionDetail.UserDomain,
                                              connectionDetail.HomeRealmUrl,
                                              connectionDetail.ServerName,
                                              connectionDetail.ServerPort.ToString(),
                                              connectionDetail.OrganizationUrlName,
                                              true,
                                              connectionDetail.UseSsl);
            }
        }
示例#3
0
        // ReSharper disable once InconsistentNaming
        private void HydrateSettingsFromUI()
        {
            if (ConnectionDetail != null)
            {
                Settings.Domain          = ConnectionDetail.UserDomain;
                Settings.Password        = ConnectionDetail.GetUserPassword();
                Settings.SupportsActions = ConnectionDetail.OrganizationMajorVersion >= Crm2013;
                Settings.Url             = ConnectionDetail.OrganizationServiceUrl;
                Settings.UseCrmOnline    = ConnectionDetail.UseOnline;
                Settings.UserName        = ConnectionDetail.UserName;
            }

            Settings.ActionOutPath = TxtActionPath.Text;
            Settings.EntityOutPath = TxtEntityPath.Text;
            Settings.ExtensionConfig.AddDebuggerNonUserCode           = ChkAddDebuggerNonUserCode.Checked;
            Settings.ExtensionConfig.AddNewFilesToProject             = ChkAddFilesToProject.Checked;
            Settings.ExtensionConfig.CreateOneFilePerAction           = ChkCreateOneActionFile.Checked;
            Settings.ExtensionConfig.CreateOneFilePerEntity           = ChkCreateOneEntityFile.Checked;
            Settings.ExtensionConfig.CreateOneFilePerOptionSet        = ChkCreateOneOptionSetFile.Checked;
            Settings.ExtensionConfig.GenerateAttributeNameConsts      = ChkGenerateAttributeNameConsts.Checked;
            Settings.ExtensionConfig.GenerateAnonymousTypeConstructor = ChkGenerateAnonymousTypeConstructor.Checked;
            Settings.ExtensionConfig.GenerateEnumProperties           = ChkGenerateOptionSetEnums.Checked;
            Settings.ExtensionConfig.InvalidCSharpNamePrefix          = TxtInvalidCSharpNamePrefix.Text;
            Settings.ExtensionConfig.MakeReadonlyFieldsEditable       = ChkMakeReadonlyFieldsEditable.Checked;
            Settings.ExtensionConfig.RemoveRuntimeVersionComment      = ChkRemoveRuntimeComment.Checked;
            Settings.ExtensionConfig.UseXrmClient          = ChkUseXrmClient.Checked;
            Settings.ExtensionConfig.UseTfsToCheckoutFiles = ChkUseTFS.Checked;
            Settings.IncludeCommandLine = ChkIncludeCommandLine.Checked;
            Settings.MaskPassword       = ChkMaskPassword.Checked;
            Settings.Namespace          = TxtNamespace.Text;
            Settings.OptionSetOutPath   = TxtOptionSetPath.Text;
            Settings.ServiceContextName = string.IsNullOrWhiteSpace(TxtServiceContextName.Text) ? null : TxtServiceContextName.Text;
        }
示例#4
0
        private static void ConnectOnline(this ConnectionDetail connectionDetail)
        {
            connectionDetail.AuthType = (CrmWebResourcesUpdater.DataModels.AuthenticationProviderType)(int) AuthenticationProviderType.OnlineFederation;

            if (string.IsNullOrEmpty(connectionDetail.GetUserPassword()))
            {
                throw new Exception("Unable to read user password");
            }

            var password = CryptoManager.Decrypt(connectionDetail.GetUserPassword(), ConnectionManager.CryptoPassPhrase,
                                                 ConnectionManager.CryptoSaltValue,
                                                 ConnectionManager.CryptoHashAlgorythm,
                                                 ConnectionManager.CryptoPasswordIterations,
                                                 ConnectionManager.CryptoInitVector,
                                                 ConnectionManager.CryptoKeySize);

            Utilities.GetOrgnameAndOnlineRegionFromServiceUri(new Uri(connectionDetail.OriginalUrl), out var region, out var orgName, out _);

            //if (UseMfa)
            //{
            var path = Path.Combine(Path.GetTempPath(), connectionDetail.ConnectionId.Value.ToString("B"), "oauth-cache.txt");

            crmSvc = new CrmServiceClient(connectionDetail.UserName, CrmServiceClient.MakeSecureString(password),
                                          region,
                                          orgName,
                                          true,
                                          null,
                                          null,
                                          connectionDetail.AzureAdAppId != Guid.Empty ? connectionDetail.AzureAdAppId.ToString() : "51f81489-12ee-4a9e-aaae-a2591f45987d",
                                          new Uri(connectionDetail.ReplyUrl ?? "app://58145B91-0C36-4500-8554-080854F2AC97"),
                                          path,
                                          null);
            //}
            //else
            //{
            //    crmSvc = new CrmServiceClient(UserName, CrmServiceClient.MakeSecureString(password),
            //        region,
            //        orgName,
            //        true,
            //        true,
            //        null,
            //        true);
            //}
        }
示例#5
0
        // ReSharper disable once InconsistentNaming
        private void HydrateSettingsFromUI()
        {
            if (ConnectionDetail != null)
            {
                TxtOutput.AppendText("CRM Authentication Type Detected: " + ConnectionDetail.AuthType + Environment.NewLine);
                Settings.AuthType            = ConnectionDetail.AuthType;
                Settings.Domain              = ConnectionDetail.UserDomain;
                Settings.Password            = ConnectionDetail.GetUserPassword();
                Settings.SupportsActions     = ConnectionDetail.OrganizationMajorVersion >= Crm2013;
                Settings.UseConnectionString = Settings.UseConnectionString || Settings.AuthType == AuthenticationProviderType.ActiveDirectory;
                Settings.UseCrmOnline        = ConnectionDetail.UseOnline;
                Settings.UserName            = ConnectionDetail.UserName;
                Settings.Url = Settings.UseConnectionString ?
                               ConnectionDetail.OrganizationServiceUrl.Replace(@"/XRMServices/2011/Organization.svc", string.Empty) :
                               ConnectionDetail.OrganizationServiceUrl;
            }

            Settings.ActionOutPath = TxtActionPath.Text;
            Settings.EntityOutPath = TxtEntityPath.Text;
            if (ChkUseDeprecatedOptionSetNaming.Checked)
            {
                Settings.SetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.CodeWriterFilter, @"DLaB.CrmSvcUtilExtensions.OptionSet.CodeWriterFilterService,DLaB.CrmSvcUtilExtensions");
                Settings.SetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.NamingService, string.Empty);
            }
            else
            {
                var defaultConfig = Config.GetDefault();
                Settings.SetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.CodeWriterFilter, defaultConfig.GetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.CodeWriterFilter).Value);
                Settings.SetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.NamingService, defaultConfig.GetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.NamingService).Value);
            }

            var extensions = Settings.ExtensionConfig;

            extensions.AddDebuggerNonUserCode           = ChkAddDebuggerNonUserCode.Checked;
            extensions.AddNewFilesToProject             = ChkAddFilesToProject.Checked;
            extensions.CreateOneFilePerAction           = ChkCreateOneActionFile.Checked;
            extensions.CreateOneFilePerEntity           = ChkCreateOneEntityFile.Checked;
            extensions.CreateOneFilePerOptionSet        = ChkCreateOneOptionSetFile.Checked;
            extensions.GenerateAttributeNameConsts      = ChkGenerateAttributeNameConsts.Checked;
            extensions.GenerateAnonymousTypeConstructor = ChkGenerateAnonymousTypeConstructor.Checked;
            extensions.GenerateEntityRelationships      = ChkGenerateEntityRelationships.Checked;
            extensions.GenerateEnumProperties           = ChkGenerateOptionSetEnums.Checked;
            extensions.InvalidCSharpNamePrefix          = TxtInvalidCSharpNamePrefix.Text;
            extensions.MakeReadonlyFieldsEditable       = ChkMakeReadonlyFieldsEditable.Checked;
            extensions.LocalOptionSetFormat             = TxtOptionSetFormat.Text;
            extensions.RemoveRuntimeVersionComment      = ChkRemoveRuntimeComment.Checked;
            extensions.UseXrmClient = ChkUseXrmClient.Checked;
            extensions.UseDeprecatedOptionSetNaming = ChkUseDeprecatedOptionSetNaming.Checked;
            extensions.UseTfsToCheckoutFiles        = ChkUseTFS.Checked;
            Settings.AudibleCompletionNotification  = ChkAudibleCompletion.Checked;
            Settings.IncludeCommandLine             = ChkIncludeCommandLine.Checked;
            Settings.MaskPassword       = ChkMaskPassword.Checked;
            Settings.Namespace          = TxtNamespace.Text;
            Settings.OptionSetOutPath   = TxtOptionSetPath.Text;
            Settings.ServiceContextName = string.IsNullOrWhiteSpace(TxtServiceContextName.Text) ? null : TxtServiceContextName.Text;
        }
        // ReSharper disable once InconsistentNaming
        private void HydrateSettingsFromUI()
        {
            if (ConnectionDetail != null)
            {
                TxtOutput.AppendText("CRM Authentication Type Detected: " + ConnectionDetail.AuthType + Environment.NewLine);
                Settings.Domain          = GetUserDomain();
                Settings.Password        = ConnectionDetail.GetUserPassword();
                Settings.SupportsActions = ConnectionDetail.OrganizationMajorVersion >= Crm2013;
                Settings.UseCrmOnline    = ConnectionDetail.UseOnline;
                Settings.UserName        = ConnectionDetail.UserName;
                Settings.Url             = ConnectionDetail.GetUrlString();

                if (Settings.UseConnectionString &&
                    string.IsNullOrWhiteSpace(Settings.Password) &&
                    ConnectionDetail.NewAuthType != AuthenticationType.Certificate &&
                    ConnectionDetail.NewAuthType != AuthenticationType.ClientSecret &&
                    ConnectionDetail.NewAuthType != AuthenticationType.OAuth)
                {
                    // Fix for https://github.com/daryllabar/DLaB.Xrm.XrmToolBoxTools/issues/43
                    // Difficulties with Early Bound Generator #43

                    var askForPassword = new PasswordDialog(this);
                    Settings.Password = askForPassword.ShowDialog(this) == DialogResult.OK ? askForPassword.Password : "******";
                }
                if (ConnectionDetail.AuthType == AuthenticationProviderType.ActiveDirectory && string.IsNullOrWhiteSpace(Settings.UserName))
                {
                    Settings.UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
                }
                if (string.IsNullOrWhiteSpace(Settings.ConnectionString))
                {
                    // Load any non-username/password situations via connection string #268
                    Settings.ConnectionString = ConnectionDetail.GetNonUserConnectionString();
                    if (!string.IsNullOrWhiteSpace(Settings.ConnectionString))
                    {
                        Settings.UseConnectionString = true;
                    }
                }
            }

            SettingsMap.PushChanges();
            Settings.RootPath = Path.GetDirectoryName(Path.GetFullPath(TxtSettingsPath.Text));
            if (SettingsMap.UseDeprecatedOptionSetNaming)
            {
                Settings.SetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.CodeWriterFilter, @"DLaB.CrmSvcUtilExtensions.OptionSet.CodeWriterFilterService,DLaB.CrmSvcUtilExtensions");
                Settings.SetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.NamingService, string.Empty);
            }
            else
            {
                var defaultConfig = EarlyBoundGeneratorConfig.GetDefault();
                defaultConfig.CrmSvcUtilRelativeRootPath = Paths.PluginsPath;
                Settings.SetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.CodeWriterFilter, defaultConfig.GetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.CodeWriterFilter).Value);
                Settings.SetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.NamingService, defaultConfig.GetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.NamingService).Value);
            }
        }
示例#7
0
        // ReSharper disable once InconsistentNaming
        private void HydrateSettingsFromUI()
        {
            if (ConnectionDetail != null)
            {
                TxtOutput.AppendText("CRM Authentication Type Detected: " + ConnectionDetail.AuthType + Environment.NewLine);
                Settings.AuthType            = ConnectionDetail.AuthType;
                Settings.Domain              = GetUserDomain();
                Settings.Password            = ConnectionDetail.GetUserPassword();
                Settings.SupportsActions     = ConnectionDetail.OrganizationMajorVersion >= Crm2013;
                Settings.UseConnectionString = Settings.UseConnectionString; // #151 || Settings.AuthType == AuthenticationProviderType.ActiveDirectory;
                Settings.UseCrmOnline        = ConnectionDetail.UseOnline;
                Settings.UserName            = ConnectionDetail.UserName;
                Settings.Url = GetUrlString();

                if (Settings.UseConnectionString && string.IsNullOrWhiteSpace(Settings.Password))
                {
                    // Fix for https://github.com/daryllabar/DLaB.Xrm.XrmToolBoxTools/issues/43
                    // Difficulties with Early Bound Generator #43

                    var askForPassowrd = new PasswordDialog(this);
                    Settings.Password = askForPassowrd.ShowDialog(this) == DialogResult.OK ? askForPassowrd.Password : "******";
                }
                if (ConnectionDetail.AuthType == AuthenticationProviderType.ActiveDirectory && string.IsNullOrWhiteSpace(Settings.UserName))
                {
                    Settings.UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
                }
            }

            Settings.ActionOutPath = TxtActionPath.Text;
            Settings.EntityOutPath = TxtEntityPath.Text;
            Settings.RootPath      = Path.GetDirectoryName(Path.GetFullPath(TxtSettingsPath.Text));
            if (ChkUseDeprecatedOptionSetNaming.Checked)
            {
                Settings.SetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.CodeWriterFilter, @"DLaB.CrmSvcUtilExtensions.OptionSet.CodeWriterFilterService,DLaB.CrmSvcUtilExtensions");
                Settings.SetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.NamingService, string.Empty);
            }
            else
            {
                var defaultConfig = EarlyBoundGeneratorConfig.GetDefault();
                Settings.SetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.CodeWriterFilter, defaultConfig.GetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.CodeWriterFilter).Value);
                Settings.SetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.NamingService, defaultConfig.GetExtensionArgument(CreationType.OptionSets, CrmSrvUtilService.NamingService).Value);
            }

            var validLanguageCode = int.TryParse(TxtLanguageCodeOverride.Text, out var languageCode);

            var extensions = Settings.ExtensionConfig;

            extensions.AddDebuggerNonUserCode            = ChkAddDebuggerNonUserCode.Checked;
            extensions.AddNewFilesToProject              = ChkAddFilesToProject.Checked;
            extensions.CreateOneFilePerAction            = ChkCreateOneActionFile.Checked;
            extensions.CreateOneFilePerEntity            = ChkCreateOneEntityFile.Checked;
            extensions.CreateOneFilePerOptionSet         = ChkCreateOneOptionSetFile.Checked;
            extensions.GenerateActionAttributeNameConsts = ChkGenerateActionAttributeNameConsts.Checked;
            extensions.GenerateAttributeNameConsts       = ChkGenerateAttributeNameConsts.Checked;
            extensions.GenerateAnonymousTypeConstructor  = ChkGenerateAnonymousTypeConstructor.Checked;
            extensions.GenerateEntityRelationships       = ChkGenerateEntityRelationships.Checked;
            extensions.GenerateEnumProperties            = ChkGenerateOptionSetEnums.Checked;
            extensions.InvalidCSharpNamePrefix           = TxtInvalidCSharpNamePrefix.Text;
            extensions.MakeReadonlyFieldsEditable        = ChkMakeReadonlyFieldsEditable.Checked;
            extensions.MakeResponseActionsEditable       = ChkEditableResponseActions.Checked;
            extensions.LocalOptionSetFormat              = TxtOptionSetFormat.Text;
            extensions.OptionSetLanguageCodeOverride     = validLanguageCode ? languageCode : (int?)null;
            extensions.RemoveRuntimeVersionComment       = ChkRemoveRuntimeComment.Checked;
            extensions.UseXrmClient = ChkUseXrmClient.Checked;
            extensions.UseDeprecatedOptionSetNaming = ChkUseDeprecatedOptionSetNaming.Checked;
            extensions.UseTfsToCheckoutFiles        = ChkUseTFS.Checked;
            Settings.AudibleCompletionNotification  = ChkAudibleCompletion.Checked;
            Settings.IncludeCommandLine             = ChkIncludeCommandLine.Checked;
            Settings.MaskPassword       = ChkMaskPassword.Checked;
            Settings.Namespace          = TxtNamespace.Text;
            Settings.OptionSetOutPath   = TxtOptionSetPath.Text;
            Settings.ServiceContextName = string.IsNullOrWhiteSpace(TxtServiceContextName.Text) ? null : TxtServiceContextName.Text;
        }