diff --git a/common/src/java/com/zimbra/common/localconfig/LC.java b/common/src/java/com/zimbra/common/localconfig/LC.java index 98a9211b6eb..3dfd0fe9a96 100644 --- a/common/src/java/com/zimbra/common/localconfig/LC.java +++ b/common/src/java/com/zimbra/common/localconfig/LC.java @@ -17,6 +17,11 @@ package com.zimbra.common.localconfig; +import com.google.common.base.Strings; +import com.zimbra.common.util.Constants; +import com.zimbra.common.util.ZimbraLog; +import org.dom4j.DocumentException; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -24,12 +29,6 @@ import java.lang.reflect.Field; import java.lang.reflect.Modifier; -import org.dom4j.DocumentException; - -import com.google.common.base.Strings; -import com.zimbra.common.util.Constants; -import com.zimbra.common.util.ZimbraLog; - /** * Provides convenient means to get at local configuration - stuff that we do * not want in LDAP. @@ -978,6 +977,10 @@ public final class LC { public static final KnownKey httpclient_soaphttptransport_retry_count = KnownKey.newKey(2); public static final KnownKey httpclient_soaphttptransport_so_timeout = KnownKey.newKey(300 * Constants.MILLIS_PER_SECOND); public static final KnownKey httpclient_soaphttptransport_keepalive_connections = KnownKey.newKey(true); + public static final KnownKey httpclient_internal_connmgr_mailbox_timeout = KnownKey.newKey(3 * Constants.MILLIS_PER_SECOND); + public static final KnownKey httpclient_mdm_devices_limit_per_server = KnownKey.newKey(50); + public static final KnownKey httpclient_mdm_devices_total_limit= KnownKey.newKey(500); + /** * Bug: 47051 Known key for the CLI utilities SOAP HTTP transport timeout. diff --git a/common/src/java/com/zimbra/common/soap/AdminConstants.java b/common/src/java/com/zimbra/common/soap/AdminConstants.java index 2386a954d95..795ac717863 100644 --- a/common/src/java/com/zimbra/common/soap/AdminConstants.java +++ b/common/src/java/com/zimbra/common/soap/AdminConstants.java @@ -16,11 +16,12 @@ */ package com.zimbra.common.soap; -import java.util.Arrays; -import java.util.List; import org.dom4j.Namespace; import org.dom4j.QName; +import java.util.Arrays; +import java.util.List; + public final class AdminConstants { public static final String ADMIN_SERVICE_URI = "/service/admin/soap/"; @@ -535,16 +536,6 @@ public final class AdminConstants { // Skins public static final String E_GET_ALL_SKINS_REQUEST = "GetAllSkinsRequest"; public static final String E_GET_ALL_SKINS_RESPONSE = "GetAllSkinsResponse"; - - // Sending Emails - public static final String E_SEND_MDM_NOTIFICATION_EMAIL_REQUEST = "SendMdmNotificationEmailRequest"; - public static final String E_SEND_MDM_NOTIFICATION_EMAIL_RESPONSE = "SendMdmNotificationEmailResponse"; - - // Active Sync - public static final QName SEND_MDM_NOTIFICATION_EMAIL_REQUEST = QName.get(E_SEND_MDM_NOTIFICATION_EMAIL_REQUEST, NAMESPACE); - public static final QName SEND_MDM_NOTIFICATION_EMAIL_RESPONSE = QName.get(E_SEND_MDM_NOTIFICATION_EMAIL_RESPONSE, NAMESPACE); - - public static final QName PING_REQUEST = QName.get(E_PING_REQUEST, NAMESPACE); public static final QName PING_RESPONSE = QName.get(E_PING_RESPONSE, NAMESPACE); public static final QName CHECK_HEALTH_REQUEST = QName.get(E_CHECK_HEALTH_REQUEST, NAMESPACE); diff --git a/common/src/java/com/zimbra/common/soap/SyncConstants.java b/common/src/java/com/zimbra/common/soap/SyncConstants.java index e6efa7e63a2..68ba192658f 100644 --- a/common/src/java/com/zimbra/common/soap/SyncConstants.java +++ b/common/src/java/com/zimbra/common/soap/SyncConstants.java @@ -108,6 +108,7 @@ public final class SyncConstants { public static final String A_SHOWITEM = "showItems"; public static final String A_OFFSET = "offset"; public static final String A_LIMIT = "limit"; + public static final String A_GET_ALL = "getAll"; public static final String A_FILTERDEVICESBYAND = "filterDevicesByAnd"; public static final String A_ADMIN = "Admin"; public static final String A_USER = "User"; diff --git a/soap/src/java/com/zimbra/soap/admin/message/GetDeviceStatusRequest.java b/soap/src/java/com/zimbra/soap/admin/message/GetDeviceStatusRequest.java index b3250b44fee..d2a561d92f1 100644 --- a/soap/src/java/com/zimbra/soap/admin/message/GetDeviceStatusRequest.java +++ b/soap/src/java/com/zimbra/soap/admin/message/GetDeviceStatusRequest.java @@ -17,19 +17,19 @@ package com.zimbra.soap.admin.message; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - import com.zimbra.common.service.ServiceException; import com.zimbra.common.soap.AdminConstants; +import com.zimbra.common.soap.Element; import com.zimbra.common.soap.SyncAdminConstants; import com.zimbra.common.soap.SyncConstants; +import com.zimbra.soap.admin.type.CosSelector; import com.zimbra.soap.admin.type.DeviceId; -import com.zimbra.soap.type.AccountSelector; -import com.zimbra.common.soap.Element; import com.zimbra.soap.admin.type.DomainSelector; -import com.zimbra.soap.admin.type.CosSelector; +import com.zimbra.soap.type.AccountSelector; + +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; /** * @zm-api-command-network-edition @@ -54,6 +54,13 @@ public class GetDeviceStatusRequest { @XmlAttribute(name=SyncConstants.A_LIMIT /* limit */, required=false) private int limit = 0; + /** + * @zm-api-field-tag getAll + * @zm-api-field-description Indicates if the request needs to get all records for all matching conditions across mailbox servers without any limit + */ + @XmlAttribute(name=SyncConstants.A_GET_ALL /* getAll */, required=false) + private String getAll = "false"; + /** * @zm-api-field-tag account * @zm-api-field-description Account @@ -267,6 +274,15 @@ public Boolean getFilterDevicesByAnd() throws ServiceException{ return Element.parseBool(SyncConstants.A_FILTERDEVICESBYAND, filterDevicesByAnd); } + public Boolean getAll() throws ServiceException{ + return Element.parseBool(SyncConstants.A_GET_ALL, getAll); + } + + public GetDeviceStatusRequest setAll(Boolean getAll){ + this.getAll = getAll.toString(); + return this; + } + public void setDeviceSyncVersion(String deviceSyncVersion) { this.deviceSyncVersion = deviceSyncVersion; } diff --git a/soap/src/java/com/zimbra/soap/admin/type/DeviceStatusInfo.java b/soap/src/java/com/zimbra/soap/admin/type/DeviceStatusInfo.java index 789af7abe6d..df8b3776049 100644 --- a/soap/src/java/com/zimbra/soap/admin/type/DeviceStatusInfo.java +++ b/soap/src/java/com/zimbra/soap/admin/type/DeviceStatusInfo.java @@ -18,14 +18,14 @@ package com.zimbra.soap.admin.type; import com.google.common.base.MoreObjects; +import com.zimbra.common.soap.SyncConstants; +import com.zimbra.soap.type.ZmBoolean; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; -import com.zimbra.common.soap.SyncConstants; -import com.zimbra.soap.type.ZmBoolean; - @XmlAccessorType(XmlAccessType.NONE) public class DeviceStatusInfo { @@ -252,6 +252,8 @@ public void setLastUsedDate(String lastUsedDate) { public String getRecoveryPassword() { return recoveryPassword; } public String getLastUsedDate() { return lastUsedDate; } public String getUpdateTime() { return timestamp; } + public String getEmailAddress() { return emailAddress; } + public String getTimestamp() { return timestamp; } public MoreObjects.ToStringHelper addToStringInfo( MoreObjects.ToStringHelper helper) { diff --git a/store/src/java-test/com/zimbra/cs/datasource/SyncUtilTest.java b/store/src/java-test/com/zimbra/cs/datasource/SyncUtilTest.java new file mode 100644 index 00000000000..9bb04acf917 --- /dev/null +++ b/store/src/java-test/com/zimbra/cs/datasource/SyncUtilTest.java @@ -0,0 +1,12 @@ +package com.zimbra.cs.datasource; + +import junit.framework.TestCase; +import org.junit.Test; + +public class SyncUtilTest extends TestCase { + + @Test + public void testSendReportEmail() { + assertEquals(true ,SyncUtil.sendReportEmail("test", "test", new String[]{"admin@platform-dev-abhishek.zimbradev.com"})); + } +} \ No newline at end of file diff --git a/store/src/java/com/zimbra/cs/account/soap/SoapProvisioning.java b/store/src/java/com/zimbra/cs/account/soap/SoapProvisioning.java index 4ab77b0b6ac..566c134d64f 100644 --- a/store/src/java/com/zimbra/cs/account/soap/SoapProvisioning.java +++ b/store/src/java/com/zimbra/cs/account/soap/SoapProvisioning.java @@ -3251,7 +3251,7 @@ public String sendMdmEmail(String status, String timeInterval) throws ServiceExc .append(L10nUtil.getMessage(L10nUtil.MsgKey.sendMDMNotificationEmailHtmlTableOpen)) .append(L10nUtil.getMessage(L10nUtil.MsgKey.sendMDMNotificationEmailHtmlDeviceTableHeader)); - GetDeviceStatusResponse resp = invokeJaxb(new GetDeviceStatusRequest(null, null, SyncAdminConstants.MDM_STATUS_SUSPENDED)); + GetDeviceStatusResponse resp = invokeJaxb(new GetDeviceStatusRequest(null, null, SyncAdminConstants.MDM_STATUS_SUSPENDED).setAll(true)); List statusOfDevices = resp.getDevices().stream() .filter(devices -> DateTimeUtil.checkWithinTime(Timestamp.valueOf(devices.getUpdateTime()), Long.parseLong(timeInterval), TimeUnit.MINUTES)) diff --git a/store/src/java/com/zimbra/cs/datasource/SyncUtil.java b/store/src/java/com/zimbra/cs/datasource/SyncUtil.java index ecb233b8dc2..4248a3cf117 100644 --- a/store/src/java/com/zimbra/cs/datasource/SyncUtil.java +++ b/store/src/java/com/zimbra/cs/datasource/SyncUtil.java @@ -197,7 +197,6 @@ public static boolean sendReportEmail(String subject, String text, String[] toSt } catch (MessagingException mex) { error = new MailSender.SafeMessagingException(mex); } - if (error != null) { ZimbraLog.mailbox.warn("Unable to send notification report email to " + toStrs.toString() + ", subject = " + subject, diff --git a/store/src/java/com/zimbra/cs/mailbox/Notification.java b/store/src/java/com/zimbra/cs/mailbox/Notification.java index c02693e9f17..90edd04fd7c 100644 --- a/store/src/java/com/zimbra/cs/mailbox/Notification.java +++ b/store/src/java/com/zimbra/cs/mailbox/Notification.java @@ -578,6 +578,7 @@ private MimeMessage assembleNotificationMessage(Account account, Message msg, St out.setFrom(address); address = new JavaMailInternetAddress(destination); out.setRecipient(javax.mail.Message.RecipientType.TO, address); + out.setSentDate(new Date()); String charset = getCharset(account, subject); out.setSubject(subject, charset); diff --git a/store/src/java/com/zimbra/cs/service/util/SpamHandler.java b/store/src/java/com/zimbra/cs/service/util/SpamHandler.java index 781180695e0..63d715dd4c0 100644 --- a/store/src/java/com/zimbra/cs/service/util/SpamHandler.java +++ b/store/src/java/com/zimbra/cs/service/util/SpamHandler.java @@ -18,6 +18,7 @@ package com.zimbra.cs.service.util; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -128,6 +129,7 @@ private void sendReport(SpamReport sr) throws ServiceException, MessagingExcepti out.setRecipient(javax.mail.Message.RecipientType.TO, sr.reportRecipient); out.setEnvelopeFrom(config.getSpamReportEnvelopeFrom()); + out.setSentDate(new Date()); out.setSubject(config.getSpamTrainingSubjectPrefix() + " " + sr.accountName + ": " + isSpamString); Transport.send(out);