public void ItemAdded(K key, CachableItem value, DateTime timestamp) { MserveTargetConnection.TenantSyncControl tenantSyncControl = value as MserveTargetConnection.TenantSyncControl; this.logSession.LogEvent(EdgeSyncLoggingLevel.Low, EdgeSyncEvent.TargetConnection, null, string.Format(CultureInfo.InvariantCulture, "TenantSyncControlCache-ItemAdded: key {0}, SyncMEUSMTPToMServ {1}, SyncMailboxSMTPToMServ {2}", new object[] { key, (tenantSyncControl != null) ? tenantSyncControl.SyncMEUSMTPToMServ.ToString() : "NULL", (tenantSyncControl != null) ? tenantSyncControl.SyncMailboxSMTPToMserv.ToString() : "NULL" })); }
private MserveTargetConnection.TenantSyncControl GetTenantSyncControlAndUpdateCache(ADObjectId tenantCUId) { string unescapedName = tenantCUId.AncestorDN(1).Rdn.UnescapedName; MserveTargetConnection.TenantSyncControl tenantSyncControl = null; bool flag = false; if (!MserveTargetConnection.tenantSyncControlCache.TryGetValue(unescapedName, out tenantSyncControl, out flag) || flag) { tenantSyncControl = this.GetTenantSyncControlSettingFromAD(tenantCUId, unescapedName); MserveTargetConnection.tenantSyncControlCache.TryAdd(unescapedName, tenantSyncControl); } return(tenantSyncControl); }
public void FilterSmtpProxyAddressesBasedOnTenantSetting(ExSearchResultEntry entry, RecipientTypeDetails recipientTypeDetail) { DirectoryAttribute directoryAttribute = null; if (!entry.Attributes.TryGetValue("msExchCU", out directoryAttribute)) { throw new ExDirectoryException("TenantCU is missing for the user", null); } if (directoryAttribute == null || directoryAttribute.Count <= 0) { throw new ExDirectoryException("TenantCU has empty value for the user", null); } string text = directoryAttribute[0] as string; if (string.IsNullOrEmpty(text)) { throw new ExDirectoryException("TenantCU attribute is not string value", null); } ADObjectId tenantCUId = null; try { tenantCUId = new ADObjectId(text); } catch (FormatException e) { throw new ExDirectoryException("TenantCU DN is of invalid format as " + text, e); } bool flag = MserveTargetConnection.IsEntryMailEnabledUser(entry, recipientTypeDetail); MserveTargetConnection.TenantSyncControl tenantSyncControlAndUpdateCache = this.GetTenantSyncControlAndUpdateCache(tenantCUId); if ((flag && !tenantSyncControlAndUpdateCache.SyncMEUSMTPToMServ) || (!flag && !tenantSyncControlAndUpdateCache.SyncMailboxSMTPToMserv)) { entry.Attributes["proxyAddresses"] = new DirectoryAttribute("proxyAddresses", MserveSynchronizationProvider.EmptyList); } }