Skip to content

Commit

Permalink
fix: [CO-1817] refactor LikeXmlJettyServer to use localServer for con…
Browse files Browse the repository at this point in the history
…figuration values where required (#668)
  • Loading branch information
keshavbhatt authored Feb 17, 2025
1 parent 8751c1c commit 940bc0f
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 18 deletions.
28 changes: 15 additions & 13 deletions store/src/main/java/com/zextras/mailbox/LikeXmlJettyServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.zimbra.common.localconfig.LC;
import com.zimbra.cs.account.Config;
import java.io.IOException;
import java.io.Serial;
import javax.servlet.DispatcherType;
import org.eclipse.jetty.http.HttpVersion;
import org.eclipse.jetty.rewrite.handler.MsieSslRule;
Expand Down Expand Up @@ -40,6 +41,7 @@ public class LikeXmlJettyServer {

public static class InstantiationException extends Exception {

@Serial
private static final long serialVersionUID = 3614086690444919273L;

public InstantiationException(Throwable cause) {
Expand Down Expand Up @@ -129,7 +131,7 @@ private Handler createWebAppHandler() {
rewriteHandler.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.ASYNC, DispatcherType.ERROR, DispatcherType.FORWARD);
rewriteHandler.addRule(new MsieSslRule());

final String mailURL = config.getMailURL();
final String mailURL = localServer.getMailURL();

rewriteHandler.addRule(new RewritePatternRule("/Microsoft-Server-ActiveSync/*", "/service/extension/zimbrasync"));
rewriteHandler.addRule(new RewriteRegexRule("(?i)/ews/Exchange.asmx/*", "/service/extension/zimbraews"));
Expand Down Expand Up @@ -197,8 +199,8 @@ private Handler createWebAppHandler() {
private ThreadPool createThreadPool() {
QueuedThreadPool threadPool = new QueuedThreadPool();
threadPool.setMinThreads(10);
threadPool.setMaxThreads(config.getHttpNumThreads());
threadPool.setIdleTimeout(config.getHttpThreadPoolMaxIdleTimeMillis());
threadPool.setMaxThreads(localServer.getHttpNumThreads());
threadPool.setIdleTimeout(localServer.getHttpThreadPoolMaxIdleTimeMillis());
threadPool.setDetailedDump(false);

JettyMonitor.setThreadPool(threadPool);
Expand All @@ -207,12 +209,12 @@ private ThreadPool createThreadPool() {

private HttpConfiguration createHttpConfig() {
HttpConfiguration httpConfig = new HttpConfiguration();
httpConfig.setOutputBufferSize(config.getHttpOutputBufferSize());
httpConfig.setRequestHeaderSize(config.getHttpRequestHeaderSize());
httpConfig.setResponseHeaderSize(config.getHttpResponseHeaderSize());
httpConfig.setOutputBufferSize(localServer.getHttpOutputBufferSize());
httpConfig.setRequestHeaderSize(localServer.getHttpRequestHeaderSize());
httpConfig.setResponseHeaderSize(localServer.getHttpResponseHeaderSize());
httpConfig.setSendServerVersion(false);
httpConfig.setSendDateHeader(true);
httpConfig.setHeaderCacheSize(config.getHttpHeaderCacheSize());
httpConfig.setHeaderCacheSize(localServer.getHttpHeaderCacheSize());
httpConfig.setSecurePort(localServer.getMailSSLPort());

final ForwardedRequestCustomizer forwardedRequestCustomizer = new ForwardedRequestCustomizer();
Expand All @@ -239,15 +241,15 @@ private SslContextFactory createSSLContextFactory() {
localSslContextFactory.setKeyStorePath(LC.mailboxd_keystore.value());
localSslContextFactory.setKeyStorePassword(LC.mailboxd_keystore_password.value());
localSslContextFactory.setKeyManagerPassword(LC.mailboxd_keystore_password.value());
localSslContextFactory.setRenegotiationAllowed(config.isMailboxdSSLRenegotiationAllowed());
localSslContextFactory.setRenegotiationAllowed(localServer.isMailboxdSSLRenegotiationAllowed());

for (String protocol : config.getMailboxdSSLProtocols()) {
for (String protocol : localServer.getMailboxdSSLProtocols()) {
localSslContextFactory.setIncludeProtocols(protocol);
}

localSslContextFactory.setExcludeCipherSuites(config.getSSLExcludeCipherSuites());
localSslContextFactory.setExcludeCipherSuites(localServer.getSSLExcludeCipherSuites());

final String[] sslIncludeCipherSuites = config.getSSLIncludeCipherSuites();
final String[] sslIncludeCipherSuites = localServer.getSSLIncludeCipherSuites();
if (sslIncludeCipherSuites.length > 0) {
localSslContextFactory.setIncludeCipherSuites(sslIncludeCipherSuites);
}
Expand All @@ -267,7 +269,7 @@ private ServerConnector createHttpsConnector(Server server, int port, int idleTi
private ServerConnector createUserHttpConnector(Server server, HttpConfiguration httpConfig) {
ServerConnector serverConnector = new ServerConnector(server, new HttpConnectionFactory(httpConfig));
serverConnector.setPort(localServer.getMailPort());
serverConnector.setIdleTimeout(config.getHttpConnectorMaxIdleTimeMillis());
serverConnector.setIdleTimeout(localServer.getHttpConnectorMaxIdleTimeMillis());
return serverConnector;
}

Expand All @@ -280,7 +282,7 @@ private ServerConnector createMtaAdminHttpsConnector(Server server) {
}

private ServerConnector createExtensionsHttpsConnector(Server server) {
return createHttpsConnector(server, localServer.getExtensionBindPort(), config.getHttpConnectorMaxIdleTimeMillis(),
return createHttpsConnector(server, localServer.getExtensionBindPort(), localServer.getHttpConnectorMaxIdleTimeMillis(),
localServer.getExtensionBindAddress());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ class LikeXmlJettyServerTest {
void setUp() {
config = mock(Config.class);
localServer = mock(com.zimbra.cs.account.Server.class);
when(config.getHttpNumThreads()).thenReturn(20);
when(config.getMailboxdSSLProtocols()).thenReturn(new String[] {"TLS1.2"});
when(config.getSSLExcludeCipherSuites()).thenReturn(new String[] {"^TLS_RSA_.*"});
when(config.getSSLIncludeCipherSuites()).thenReturn(new String[] {});
when(config.getHttpConnectorMaxIdleTimeMillis()).thenReturn(3000);
when(localServer.getHttpNumThreads()).thenReturn(20);
when(localServer.getMailboxdSSLProtocols()).thenReturn(new String[] {"TLS1.2"});
when(localServer.getSSLExcludeCipherSuites()).thenReturn(new String[] {"^TLS_RSA_.*"});
when(localServer.getSSLIncludeCipherSuites()).thenReturn(new String[] {});
when(localServer.getHttpConnectorMaxIdleTimeMillis()).thenReturn(3000);
}

@Test
Expand Down

0 comments on commit 940bc0f

Please sign in to comment.