Пример #1
0
        private static void SetAdamServiceArgs(string instanceName, WriteVerboseDelegate writeVerbose)
        {
            string arguments = string.Concat(new string[]
            {
                "description ",
                ManageAdamService.GetAdamServiceName(instanceName),
                " \"",
                Strings.AdamServiceDescription,
                "\""
            });
            int num = Utils.LogRunProcess("sc.exe", arguments, null);

            if (num != 0)
            {
                writeVerbose(Strings.AdamFailedSetServiceArgs("sc.exe", num, "Description"));
            }
            arguments = string.Concat(new string[]
            {
                "config ",
                ManageAdamService.GetAdamServiceName(instanceName),
                " DisplayName= \"",
                Strings.AdamServiceDisplayName,
                "\""
            });
            num = Utils.LogRunProcess("sc.exe", arguments, null);
            if (num != 0)
            {
                writeVerbose(Strings.AdamFailedSetServiceArgs("sc.exe", num, "DisplayName"));
            }
        }
Пример #2
0
 internal static bool IsKnownExceptionHandler(Exception exception, WriteVerboseDelegate writeVerbose)
 {
     if (exception is MapiRetryableException || exception is MapiPermanentException)
     {
         return(true);
     }
     if (exception is MailboxReplicationPermanentException || exception is MailboxReplicationTransientException)
     {
         writeVerbose(CommonUtils.FullExceptionMessage(exception));
         return(true);
     }
     return(false);
 }
Пример #3
0
        public static LivePartnerFederationMetadata LoadFrom(Uri partnerFederationMetadataEpr, WriteVerboseDelegate writeVerbose = null)
        {
            if (partnerFederationMetadataEpr == null)
            {
                throw new ArgumentNullException("partnerFederationMetadataEpr");
            }
            if (writeVerbose == null)
            {
                writeVerbose = new WriteVerboseDelegate(LivePartnerFederationMetadata.NullWriteVerbose);
            }
            LivePartnerFederationMetadata livePartnerFederationMetadata = new LivePartnerFederationMetadata(writeVerbose);
            XPathDocument federationMetadataXPathDocument = livePartnerFederationMetadata.GetFederationMetadataXPathDocument(partnerFederationMetadataEpr);

            livePartnerFederationMetadata.TokenIssuerMetadataEpr = partnerFederationMetadataEpr;
            livePartnerFederationMetadata.Parse(federationMetadataXPathDocument);
            livePartnerFederationMetadata.PolicyReferenceUri = "EX_MBI_FED_SSL";
            return(livePartnerFederationMetadata);
        }
Пример #4
0
        internal static WebProxy GetWebProxy(WriteVerboseDelegate writeVerbose)
        {
            WebProxy result;

            try
            {
                WebProxy webProxy    = null;
                Server   localServer = LocalServerCache.LocalServer;
                if (localServer != null && localServer.InternetWebProxy != null)
                {
                    writeVerbose(Strings.WebProxy(localServer.InternetWebProxy.ToString()));
                    webProxy = new WebProxy(localServer.InternetWebProxy);
                }
                result = webProxy;
            }
            catch (NotSupportedException ex)
            {
                throw new LiveDomainServicesException(Strings.CannotSetProxy(ex.Message), ex);
            }
            return(result);
        }
Пример #5
0
        private static int RunProcess(string fileName, string arguments, WriteVerboseDelegate writeVerbose)
        {
            TaskLogger.LogEnter();
            writeVerbose(Strings.LogRunningCommand(fileName, arguments));
            int exitCode;

            using (Process process = Process.Start(new ProcessStartInfo
            {
                FileName = fileName,
                Arguments = arguments,
                CreateNoWindow = true,
                WindowStyle = ProcessWindowStyle.Hidden,
                UseShellExecute = false
            }))
            {
                process.WaitForExit();
                writeVerbose(Strings.LogProcessExitCode(fileName, process.ExitCode));
                TaskLogger.LogExit();
                exitCode = process.ExitCode;
            }
            return(exitCode);
        }
Пример #6
0
        public static X509Certificate2 GetExchangeFederationCertByThumbprint(string thumbprint, WriteVerboseDelegate writeVerbose)
        {
            writeVerbose(Strings.SearchingForCertificate(thumbprint));
            if (string.IsNullOrEmpty(thumbprint))
            {
                throw new ArgumentNullException("thumbprint");
            }
            X509Store x509Store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
            Exception ex        = null;

            try
            {
                x509Store.Open(OpenFlags.OpenExistingOnly);
            }
            catch (CryptographicException ex2)
            {
                ex = ex2;
            }
            catch (SecurityException ex3)
            {
                ex = ex3;
            }
            if (ex != null)
            {
                throw new FederationCertificateInvalidException(Strings.ErrorOpeningCertificateStore(x509Store.Name), ex);
            }
            try
            {
                X509Certificate2Collection x509Certificate2Collection = x509Store.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false);
                if (x509Certificate2Collection != null && x509Certificate2Collection.Count > 0)
                {
                    return(x509Certificate2Collection[0]);
                }
            }
            finally
            {
                x509Store.Close();
            }
            throw new FederationCertificateInvalidException(Strings.ErrorCertificateNotFound(thumbprint));
        }
Пример #7
0
        internal static X509Certificate2 LoadCertificateWithPrivateKey(string thumbprint, WriteVerboseDelegate writeVerbose)
        {
            X509Certificate2 exchangeFederationCertByThumbprint = FederationCertificate.GetExchangeFederationCertByThumbprint(thumbprint, writeVerbose);

            if (!exchangeFederationCertByThumbprint.HasPrivateKey)
            {
                writeVerbose(Strings.ErrorCertificateHasNoPrivateKey(thumbprint));
                return(null);
            }
            try
            {
                if (!(exchangeFederationCertByThumbprint.PrivateKey is RSACryptoServiceProvider))
                {
                    writeVerbose(Strings.ErrorCertificateHasNoPrivateKey(thumbprint));
                    return(null);
                }
            }
            catch (CryptographicException)
            {
                writeVerbose(Strings.ErrorCertificateHasNoPrivateKey(thumbprint));
                return(null);
            }
            catch (NotSupportedException)
            {
                writeVerbose(Strings.ErrorCertificateHasNoPrivateKey(thumbprint));
                return(null);
            }
            return(exchangeFederationCertByThumbprint);
        }
 protected ManageDelegationClient(string serviceEndpoint, string certificateThumbprint, WriteVerboseDelegate writeVerbose)
 {
     this.serviceEndpoint       = serviceEndpoint;
     this.certificateThumbprint = certificateThumbprint;
     this.writeVerbose          = writeVerbose;
 }
        public static List <PropertyDefinition> CalculatePropertiesToRead(IDictionary <string, PropertyDefinition> outputPropertiesToDefinitionDic, IList <string> userSpecifiedProperties, IList <PropertyDefinition> mandatoryOutputProperties, IDictionary <PropertyDefinition, IList <PropertyDefinition> > propertyRelationship, IList <PropertyDefinition> specialPropertiesLeadToAllRead, WriteVerboseDelegate verboseDelegate)
        {
            List <PropertyDefinition> propertiesToRead = (from property in userSpecifiedProperties
                                                          select outputPropertiesToDefinitionDic[property]).ToList <PropertyDefinition>();

            if (mandatoryOutputProperties != null)
            {
                propertiesToRead.AddRange(from property in mandatoryOutputProperties
                                          where !propertiesToRead.Contains(property)
                                          select property);
            }
            if (propertyRelationship != null)
            {
                IEnumerable <IList <PropertyDefinition> > enumerable = from property in propertyRelationship
                                                                       where propertiesToRead.Contains(property.Key)
                                                                       select property into keyValue
                                                                       select keyValue.Value;
                foreach (IList <PropertyDefinition> list in enumerable)
                {
                    PropertyDefinition[] source = (PropertyDefinition[])list;
                    propertiesToRead.AddRange(from property in source
                                              where !propertiesToRead.Contains(property)
                                              select property);
                }
            }
            if (specialPropertiesLeadToAllRead != null)
            {
                foreach (PropertyDefinition propertyDefinition in specialPropertiesLeadToAllRead)
                {
                    if (propertiesToRead.Contains(propertyDefinition))
                    {
                        if (verboseDelegate != null)
                        {
                            verboseDelegate(Strings.VerboseAllPropertiesAreRead(propertyDefinition.Name));
                        }
                        return(null);
                    }
                }
            }
            if (propertiesToRead != null && verboseDelegate != null)
            {
                verboseDelegate(Strings.VerbosePropertiesRead(string.Join <PropertyDefinition>(",", propertiesToRead)));
            }
            return(propertiesToRead);
        }
Пример #10
0
        private void ImportSchemaFile(string schemaMasterServer, string schemaFilePath, string macroName, string macroValue, WriteVerboseDelegate writeVerbose)
        {
            TaskLogger.LogEnter();
            string fileName = Path.Combine(Environment.SystemDirectory, "ldifde.exe");
            string text     = Path.GetTempPath();

            if (text[text.Length - 1] == '\\')
            {
                text = text.Substring(0, text.Length - 1);
            }
            string arguments = string.Format("-i -s \"{0}\" -f \"{1}\" -j \"{2}\" -c \"{3}\" \"{4}\"", new object[]
            {
                schemaMasterServer,
                schemaFilePath,
                text,
                macroName,
                macroValue.Replace("\"", "\\\\\"")
            });
            int num = InstallExchangeSchema.RunProcess(fileName, arguments, writeVerbose);

            if (num != 0)
            {
                base.WriteError(new TaskException(Strings.SchemaImportProcessFailure(schemaFilePath, "ldifde.exe", num, Path.Combine(text, "ldif.err"))), ErrorCategory.InvalidOperation, null);
            }
            TaskLogger.LogExit();
        }
 internal static void RemoveMember(ADObject obj, IRecipientSession session, ADGroup destGroup, WriteVerboseDelegate writeVerbose)
 {
     if (destGroup.Members.Contains(obj.Id))
     {
         destGroup.Members.Remove(obj.Id);
         SetupTaskBase.Save(destGroup, session);
         return;
     }
     writeVerbose(Strings.InfoIsNotMemberOfGroup(obj.DistinguishedName, destGroup.DistinguishedName));
 }
Пример #12
0
 internal static void RemovePolicyStorageBase(IConfigDataProvider dataSession, WriteVerboseDelegate writeVerboseDelegate, IEnumerable <UnifiedPolicyStorageBase> policyStorageBases)
 {
     ArgumentValidator.ThrowIfNull("dataSession", dataSession);
     ArgumentValidator.ThrowIfNull("writeVerboseDelegate", writeVerboseDelegate);
     if (policyStorageBases != null)
     {
         foreach (UnifiedPolicyStorageBase unifiedPolicyStorageBase in policyStorageBases)
         {
             writeVerboseDelegate(Strings.VerboseDeletePolicyStorageBaseObject(unifiedPolicyStorageBase.Name, unifiedPolicyStorageBase.GetType().Name));
             dataSession.Delete(unifiedPolicyStorageBase);
         }
     }
 }
Пример #13
0
 private static void InstallAdamInstance(string answerFileName, AdamServiceSettings adamServiceSettings, WriteVerboseDelegate writeVerbose)
 {
     TaskLogger.LogEnter();
     ManageAdamService.RunAdamInstall(answerFileName);
     ManageAdamService.SetAdamServiceArgs(adamServiceSettings.InstanceName, writeVerbose);
     ManageAdamService.SetAcls(adamServiceSettings);
     TaskLogger.LogExit();
 }
Пример #14
0
        public static void InstallAdam(string instanceName, string dataPath, string logPath, int port, int sslPort, WriteVerboseDelegate writeVerbose)
        {
            Utils.CreateDirectory(dataPath, "DataFilesPath");
            Utils.CreateDirectory(logPath, "LogFilesPath");
            AdamServiceSettings.DeleteFromRegistry(instanceName);
            AdamServiceSettings adamServiceSettings = new AdamServiceSettings(instanceName, Path.Combine(dataPath, "Adam"), Path.Combine(logPath, "Adam"), port, sslPort);

            using (TempFileCollection tempFileCollection = new TempFileCollection())
            {
                string answerFileName = ManageAdamService.MakeAnswerFile(tempFileCollection, adamServiceSettings);
                ManageAdamService.InstallAdamInstance(answerFileName, adamServiceSettings, writeVerbose);
                adamServiceSettings.SaveToRegistry();
            }
        }
Пример #15
0
 public PartnerFederationMetadata(WriteVerboseDelegate writeVerbose)
 {
     this.writeVerbose = writeVerbose;
 }
        public static CompliancePolicySyncNotificationClient Create(IConfigurationSession configurationSession, WriteVerboseDelegate writeVerboseDelegate)
        {
            ArgumentValidator.ThrowIfNull("configurationSession", configurationSession);
            OrganizationId organizationId = configurationSession.GetOrgContainer().OrganizationId;

            return(ProvisioningCache.Instance.TryAddAndGetOrganizationDictionaryValue <CompliancePolicySyncNotificationClient, Workload>(CannedProvisioningCacheKeys.OrganizationUnifiedPolicyNotificationClients, organizationId, Workload.SharePoint, delegate()
            {
                if (writeVerboseDelegate != null)
                {
                    writeVerboseDelegate(Strings.VerboseCreateNotificationClient(Workload.SharePoint.ToString()));
                }
                Uri syncSvrUrlFromCache = CompliancePolicySyncNotificationClient.GetSyncSvrUrlFromCache(SyncSvcEndPointType.RestOAuth);
                ICredentials credentials = UnifiedPolicyConfiguration.GetInstance().GetCredentials(configurationSession, null);
                Uri uri = null;
                Uri uri2 = null;
                UnifiedPolicyConfiguration.GetInstance().GetTenantSharePointUrls(configurationSession, out uri, out uri2);
                if (uri == null || uri2 == null || syncSvrUrlFromCache == null)
                {
                    throw new CompliancePolicySyncNotificationClientException(Strings.ErrorCannotInitializeNotificationClientToSharePoint(uri, uri2, syncSvrUrlFromCache));
                }
                SpCompliancePolicySyncNotificationClient result = new SpCompliancePolicySyncNotificationClient(uri, uri2, credentials, syncSvrUrlFromCache);
                if (writeVerboseDelegate != null)
                {
                    writeVerboseDelegate(Strings.VerboseSpNotificationClientInfo(uri, syncSvrUrlFromCache, credentials.GetType().Name));
                }
                return result;
            }));
        }
Пример #17
0
 private LivePartnerFederationMetadata(WriteVerboseDelegate writeVerbose) : base(writeVerbose)
 {
     base.TokenIssuerCertReference     = "stscer";
     base.TokenIssuerPrevCertReference = "stsbcer";
 }
Пример #18
0
 public ManageDelegation1Client(string certificate, WriteVerboseDelegate writeVerbose) : base(LiveConfiguration.GetDomainServicesEpr().ToString(), certificate, writeVerbose)
 {
     this.manageDelegation = new ManageDelegation("ManageDelegation", new RemoteCertificateValidationCallback(ManageDelegationClient.InvalidCertificateHandler));
     this.manageDelegation.ClientCertificates.Add(base.Certificate);
 }
Пример #19
0
 public ManageDelegation2Client(string domain, string signingDomain, string certificateThumbprint, WriteVerboseDelegate writeVerbose) : base(LiveConfiguration.GetDomainServices2Epr().ToString(), certificateThumbprint, writeVerbose)
 {
     this.manageDelegation = new ManageDelegation2("ManageDelegation2", new RemoteCertificateValidationCallback(ManageDelegationClient.InvalidCertificateHandler));
     this.manageDelegation.Authenticator = SoapHttpClientAuthenticator.Create(base.Certificate);
     this.manageDelegation.DomainOwnershipProofHeaderValue = new DomainOwnershipProofHeader
     {
         Domain        = domain,
         HashAlgorithm = "SHA-512",
         Signature     = Convert.ToBase64String(FederatedDomainProofAlgorithm.GetSignature(base.Certificate, signingDomain))
     };
 }