コード例 #1
0
        private bool DlpPolicyMatches(TransportRule rule)
        {
            if (!base.Fields.IsModified("DlpPolicy"))
            {
                return(true);
            }
            Guid immutableId;

            if (!Guid.TryParse(this.DlpPolicy, out immutableId))
            {
                ADComplianceProgram adcomplianceProgram = DlpUtils.GetInstalledTenantDlpPolicies(base.DataSession, this.DlpPolicy).FirstOrDefault <ADComplianceProgram>();
                if (adcomplianceProgram == null)
                {
                    return(false);
                }
                immutableId = adcomplianceProgram.ImmutableId;
            }
            Guid guid;

            if (rule.TryGetDlpPolicyId(out guid))
            {
                return(guid.Equals(immutableId));
            }
            return(string.IsNullOrEmpty(this.DlpPolicy));
        }
コード例 #2
0
 public override void Validate()
 {
     if (this.dataObject.FileData == null)
     {
         this.dataObject.WriteError(new ArgumentException(Strings.ImportDlpPolicyFileDataIsNull), ErrorCategory.InvalidArgument, "FileData");
     }
     try
     {
         this.templates = DlpUtils.LoadDlpPolicyTemplates(this.dataObject.FileData);
     }
     catch (Exception ex)
     {
         if (!this.IsKnownException(ex))
         {
             throw;
         }
         this.dataObject.WriteError(ex, ErrorCategory.InvalidOperation, null);
     }
     using (IEnumerator <ADComplianceProgram> enumerator = DlpUtils.GetOutOfBoxDlpTemplates(base.DataSession).GetEnumerator())
     {
         while (enumerator.MoveNext())
         {
             ADComplianceProgram dlpPolicyTemplate = enumerator.Current;
             if (this.templates.Any((DlpPolicyTemplateMetaData a) => a.Name == dlpPolicyTemplate.Name))
             {
                 this.dataObject.WriteError(new ArgumentException(Strings.ErrorDlpPolicyTemplateAlreadyInstalled(dlpPolicyTemplate.Name)), ErrorCategory.InvalidArgument, "FileData");
             }
         }
     }
 }
コード例 #3
0
        public override void Validate()
        {
            base.Validate();
            DlpPolicyMetaData dlpPolicyMetaData = DlpPolicyParser.ParseDlpPolicyInstance(this.taskObject.TargetItem.TransportRulesXml);

            if (this.taskObject.Fields.IsModified("State"))
            {
                dlpPolicyMetaData.State = this.taskObject.State;
            }
            if (this.taskObject.Fields.IsModified("Mode"))
            {
                dlpPolicyMetaData.Mode = this.taskObject.Mode;
            }
            if (this.taskObject.TargetItem.IsModified(ADObjectSchema.Name))
            {
                dlpPolicyMetaData.Name = this.taskObject.TargetItem.Name;
            }
            if (this.taskObject.Fields.IsModified("Description"))
            {
                dlpPolicyMetaData.Description = this.taskObject.Description;
            }
            ADComplianceProgram adcomplianceProgram = dlpPolicyMetaData.ToAdObject();

            this.taskObject.TargetItem.State             = adcomplianceProgram.State;
            this.taskObject.TargetItem.Name              = adcomplianceProgram.Name;
            this.taskObject.TargetItem.Description       = adcomplianceProgram.Description;
            this.taskObject.TargetItem.TransportRulesXml = adcomplianceProgram.TransportRulesXml;
        }
コード例 #4
0
 internal DlpPolicy(ADComplianceProgram adDlpPolicy) : base(adDlpPolicy)
 {
     if (base.AdDlpPolicy != null)
     {
         base.AdDlpPolicy       = base.AdDlpPolicy;
         this.dlpPolicyMetaData = DlpPolicyParser.ParseDlpPolicyInstance(base.AdDlpPolicy.TransportRulesXml);
         return;
     }
     base.AdDlpPolicy       = new ADComplianceProgram();
     this.dlpPolicyMetaData = new DlpPolicyMetaData();
 }
コード例 #5
0
ファイル: DlpUtils.cs プロジェクト: YHZX2013/exchange_diff
        internal static DlpPolicyTemplateMetaData LoadOutOfBoxDlpTemplate(Fqdn domainController, string templateName)
        {
            IConfigDataProvider dataSession         = DlpUtils.CreateOrgSession(domainController);
            ADComplianceProgram adcomplianceProgram = DlpUtils.GetOutOfBoxDlpTemplates(dataSession, templateName).FirstOrDefault <ADComplianceProgram>();

            if (adcomplianceProgram != null)
            {
                return(DlpPolicyParser.ParseDlpPolicyTemplate(adcomplianceProgram.TransportRulesXml));
            }
            return(null);
        }
コード例 #6
0
ファイル: DlpUtils.cs プロジェクト: YHZX2013/exchange_diff
        public static void SaveOutOfBoxDlpTemplates(IConfigDataProvider dataSession, IEnumerable <DlpPolicyTemplateMetaData> dlpTemplates)
        {
            ADComplianceProgramCollection dlpPolicyCollection = DlpUtils.GetDlpPolicyCollection(dataSession, DlpUtils.OutOfBoxDlpPoliciesCollectionName);

            foreach (DlpPolicyTemplateMetaData dlpPolicyTemplateMetaData in dlpTemplates)
            {
                ADComplianceProgram adcomplianceProgram = dlpPolicyTemplateMetaData.ToAdObject();
                adcomplianceProgram.OrganizationId = dlpPolicyCollection.OrganizationId;
                adcomplianceProgram.SetId(dlpPolicyCollection.Id.GetChildId(dlpPolicyTemplateMetaData.Name));
                dataSession.Save(adcomplianceProgram);
            }
        }
コード例 #7
0
 public DlpPolicyTemplate(ADComplianceProgram dlpPolicy, CultureInfo culture) : base(dlpPolicy)
 {
     if (base.AdDlpPolicy != null)
     {
         base.AdDlpPolicy         = base.AdDlpPolicy;
         this.dlpTemplateMetaData = DlpPolicyParser.ParseDlpPolicyTemplate(base.AdDlpPolicy.TransportRulesXml);
     }
     else
     {
         base.AdDlpPolicy         = new ADComplianceProgram();
         this.dlpTemplateMetaData = new DlpPolicyTemplateMetaData();
     }
     this.CurrentCulture = culture;
 }
コード例 #8
0
        private void SaveDlpPolicy(ADComplianceProgram instance)
        {
            bool flag = MessagingPoliciesSyncLogDataSession.IsNameNewOrChangedForTenantScopedObject(instance);

            this.dataSession.Save(instance);
            if (flag)
            {
                ADComplianceProgram dlpPolicyByName = DlpUtils.GetDlpPolicyByName(this.dataSession, this.policiesCollectionName, instance.Name);
                Guid value;
                if (this.GetExternalDirectoryOrganizationIdToLog(dlpPolicyByName, out value))
                {
                    TenantSettingSyncLogGenerator.Instance.LogChangesForSave(dlpPolicyByName, new Guid?(value), new Guid?(dlpPolicyByName.ImmutableId), null);
                }
            }
        }
コード例 #9
0
        private DlpPolicy TryGetDlpPolicy(ADComplianceProgram adDlpPolicy)
        {
            DlpPolicy result;

            try
            {
                result = new DlpPolicy(adDlpPolicy);
            }
            catch (DlpPolicyParsingException)
            {
                DlpPolicy dlpPolicy = new DlpPolicy(null);
                dlpPolicy.SetAdDlpPolicyWithNoDlpXml(adDlpPolicy);
                this.taskObject.WriteWarning(Strings.DlpPolicyXmlInvalid);
                result = dlpPolicy;
            }
            return(result);
        }
コード例 #10
0
        internal ADComplianceProgram ToAdObject()
        {
            string transportRulesXml;

            using (MemoryStream memoryStream = new MemoryStream(DlpPolicyParser.SerializeDlpPolicyTemplate(this)))
            {
                StreamReader streamReader = new StreamReader(memoryStream);
                transportRulesXml = streamReader.ReadToEnd();
            }
            ADComplianceProgram adcomplianceProgram = new ADComplianceProgram();

            adcomplianceProgram.Name        = DlpPolicyTemplateMetaData.GetLocalizedStringValue(this.LocalizedNames, null);
            adcomplianceProgram.Description = DlpPolicyTemplateMetaData.GetLocalizedStringValue(this.LocalizedDescriptions, null);
            adcomplianceProgram.ImmutableId = this.ImmutableId;
            adcomplianceProgram.Keywords    = (from keyword in this.LocalizedKeywords
                                               select DlpPolicyTemplateMetaData.GetLocalizedStringValue(keyword, DlpPolicyTemplateMetaData.DefaultCulture)).ToArray <string>();
            adcomplianceProgram.PublisherName     = this.PublisherName;
            adcomplianceProgram.State             = DlpUtils.RuleStateToDlpState(this.State, this.Mode);
            adcomplianceProgram.TransportRulesXml = transportRulesXml;
            adcomplianceProgram.Version           = this.Version;
            return(adcomplianceProgram);
        }
コード例 #11
0
ファイル: DlpUtils.cs プロジェクト: YHZX2013/exchange_diff
        public static void AddTenantDlpPolicy(IConfigDataProvider dataSession, DlpPolicyMetaData dlpPolicy, string organizationParameterValue, CmdletRunner cmdletRunner, out IEnumerable <PSObject> results)
        {
            results = null;
            ADComplianceProgram           adcomplianceProgram = dlpPolicy.ToAdObject();
            ADComplianceProgramCollection dlpPolicyCollection = DlpUtils.GetDlpPolicyCollection(dataSession, DlpUtils.TenantDlpPoliciesCollectionName);

            adcomplianceProgram.OrganizationId = dlpPolicyCollection.OrganizationId;
            adcomplianceProgram.SetId(dlpPolicyCollection.Id.GetChildId(dlpPolicy.Name));
            dataSession.Save(adcomplianceProgram);
            IEnumerable <string> enumerable    = Utils.AddOrganizationScopeToCmdlets(dlpPolicy.PolicyCommands, organizationParameterValue);
            string            domainController = null;
            ADSessionSettings sessionSettings  = null;
            MessagingPoliciesSyncLogDataSession messagingPoliciesSyncLogDataSession = dataSession as MessagingPoliciesSyncLogDataSession;

            if (messagingPoliciesSyncLogDataSession != null)
            {
                domainController = messagingPoliciesSyncLogDataSession.LastUsedDc;
                sessionSettings  = messagingPoliciesSyncLogDataSession.SessionSettings;
            }
            try
            {
                foreach (string cmdlet in enumerable)
                {
                    cmdletRunner.RunCmdlet(cmdlet, true);
                }
            }
            catch (ParseException e)
            {
                DlpUtils.HandleScriptExecutionError(adcomplianceProgram, DlpUtils.GetErrorHandlingDataSession(domainController, sessionSettings, dataSession), e);
            }
            catch (RuntimeException e2)
            {
                DlpUtils.HandleScriptExecutionError(adcomplianceProgram, DlpUtils.GetErrorHandlingDataSession(domainController, sessionSettings, dataSession), e2);
            }
            catch (CmdletExecutionException e3)
            {
                DlpUtils.HandleScriptExecutionError(adcomplianceProgram, DlpUtils.GetErrorHandlingDataSession(domainController, sessionSettings, dataSession), e3);
            }
        }
コード例 #12
0
 internal void SetAdDlpPolicyWithNoDlpXml(ADComplianceProgram adDlpPolicy)
 {
     base.AdDlpPolicy = adDlpPolicy;
 }
コード例 #13
0
 protected DlpPolicyPresentationBase(ADComplianceProgram adDlpPolicy)
 {
     this.adDlpPolicy = adDlpPolicy;
 }
コード例 #14
0
ファイル: DlpUtils.cs プロジェクト: YHZX2013/exchange_diff
        public static void DeleteOutOfBoxDlpPolicy(IConfigDataProvider dataSession, string templateName)
        {
            ADComplianceProgram instance = DlpUtils.GetOutOfBoxDlpTemplates(dataSession, templateName).FirstOrDefault <ADComplianceProgram>();

            dataSession.Delete(instance);
        }
コード例 #15
0
ファイル: DlpUtils.cs プロジェクト: YHZX2013/exchange_diff
 private static void HandleScriptExecutionError(ADComplianceProgram adDlpPolicy, IConfigDataProvider dataSession, Exception e)
 {
     DlpUtils.DeleteEtrsByDlpPolicy(adDlpPolicy.ImmutableId, dataSession);
     dataSession.Delete(adDlpPolicy);
     throw new DlpPolicyScriptExecutionException(e.Message);
 }