ensure autodiscover is only used if hostname is not set

This commit is contained in:
2018-10-16 12:34:05 +02:00
parent 530b6f500a
commit 4d79cbc35b
4 changed files with 92 additions and 77 deletions

View File

@ -1,69 +1,76 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>de.muehlencord.shared</groupId> <groupId>de.muehlencord.shared</groupId>
<artifactId>shared-network</artifactId> <artifactId>shared-network</artifactId>
<version>1.1-SNAPSHOT</version> <version>1.1-SNAPSHOT</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>shared-network</name> <name>shared-network</name>
<parent> <parent>
<artifactId>shared</artifactId> <artifactId>shared</artifactId>
<groupId>de.muehlencord</groupId> <groupId>de.muehlencord</groupId>
<version>1.1-SNAPSHOT</version> <version>1.1-SNAPSHOT</version>
</parent> </parent>
<url>http://maven.apache.org</url> <url>http://maven.apache.org</url>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
<build> <build>
<finalName>${project.artifactId}</finalName> <finalName>${project.artifactId}</finalName>
</build> </build>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<type>jar</type> <type>jar</type>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.enterprisedt</groupId> <groupId>com.enterprisedt</groupId>
<artifactId>edtFTPj</artifactId> <artifactId>edtFTPj</artifactId>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId> <artifactId>slf4j-api</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId> <artifactId>slf4j-log4j12</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>de.muehlencord.shared</groupId> <groupId>de.muehlencord.shared</groupId>
<artifactId>shared-util</artifactId> <artifactId>shared-util</artifactId>
<type>jar</type> <type>jar</type>
<version>1.1-SNAPSHOT</version> <version>1.1-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.sun.mail</groupId> <groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId> <artifactId>javax.mail</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.microsoft.ews-java-api</groupId> <groupId>com.microsoft.ews-java-api</groupId>
<artifactId>ews-java-api</artifactId> <artifactId>ews-java-api</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>commons-net</groupId> <groupId>commons-net</groupId>
<artifactId>commons-net</artifactId> <artifactId>commons-net</artifactId>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
</dependencies>
</project> <dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.3.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@ -5,7 +5,6 @@
package de.muehlencord.shared.network.mail; package de.muehlencord.shared.network.mail;
import java.util.List; import java.util.List;
import javax.mail.Folder;
/** /**
* *

View File

@ -5,6 +5,7 @@ import de.muehlencord.shared.network.mail.MailReader;
import de.muehlencord.shared.network.mail.MailReaderConfiguration; import de.muehlencord.shared.network.mail.MailReaderConfiguration;
import de.muehlencord.shared.network.mail.MailReaderConnectionException; import de.muehlencord.shared.network.mail.MailReaderConnectionException;
import de.muehlencord.shared.network.mail.MailReaderException; import de.muehlencord.shared.network.mail.MailReaderException;
import java.net.URI;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -34,7 +35,7 @@ import org.slf4j.LoggerFactory;
* @author Joern Muehlencord <joern at muehlencord.de> * @author Joern Muehlencord <joern at muehlencord.de>
*/ */
public class ExchangeMailReader implements MailReader { public class ExchangeMailReader implements MailReader {
private static final Logger LOGGER = LoggerFactory.getLogger(ExchangeMailReader.class); private static final Logger LOGGER = LoggerFactory.getLogger(ExchangeMailReader.class);
private final MailReaderConfiguration configuration; private final MailReaderConfiguration configuration;
private ExchangeService service = null; private ExchangeService service = null;
@ -55,8 +56,11 @@ public class ExchangeMailReader implements MailReader {
ExchangeCredentials credentials = new WebCredentials(userName, password); ExchangeCredentials credentials = new WebCredentials(userName, password);
service.setCredentials(credentials); service.setCredentials(credentials);
service.autodiscoverUrl(emailAddress, new RedirectionUrlCallback()); if (hostName == null) {
service.autodiscoverUrl(emailAddress, new RedirectionUrlCallback());
} else {
service.setUrl(new URI(hostName));
}
LOGGER.info("Connected to " + getConnectionShortCut()); LOGGER.info("Connected to " + getConnectionShortCut());
} catch (Exception ex) { } catch (Exception ex) {
throw new MailReaderConnectionException(ex.getMessage(), ex); throw new MailReaderConnectionException(ex.getMessage(), ex);
@ -241,9 +245,15 @@ public class ExchangeMailReader implements MailReader {
} }
class RedirectionUrlCallback implements IAutodiscoverRedirectionUrl { class RedirectionUrlCallback implements IAutodiscoverRedirectionUrl {
private static final Logger LOGGER = LoggerFactory.getLogger(RedirectionUrlCallback.class);
@Override @Override
public boolean autodiscoverRedirectionUrlValidationCallback(String redirectionUrl) { public boolean autodiscoverRedirectionUrlValidationCallback(String redirectionUrl) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("redirectUrl found: {}", redirectionUrl);
}
return redirectionUrl.toLowerCase().startsWith("https://"); return redirectionUrl.toLowerCase().startsWith("https://");
} }
} }

View File

@ -24,7 +24,7 @@ public class ExchangeMailReaderTest {
public void testConnect() { public void testConnect() {
try { try {
LOGGER.info("testConnect"); LOGGER.info("testConnect");
String imapHost = null; String imapHost = null; // use autodiscover
String smtpHost = null; String smtpHost = null;
String folder = null; String folder = null;
String testFolder = null; String testFolder = null;
@ -32,16 +32,15 @@ public class ExchangeMailReaderTest {
String password = null; String password = null;
String emailaddress = null; String emailaddress = null;
assumeNotNull(imapHost); // disable tests if not all values are set
assumeNotNull(smtpHost); assumeNotNull(smtpHost);
assumeNotNull(folder); assumeNotNull(folder);
assumeNotNull(testFolder); assumeNotNull(testFolder);
assumeNotNull(userName); assumeNotNull(userName);
assumeNotNull(emailaddress); assumeNotNull(emailaddress);
assumeNotNull(password); assumeNotNull(password);
MailReaderConfiguration config = new MailReaderConfiguration(smtpHost, imapHost, userName, password, emailaddress); MailReaderConfiguration config = new MailReaderConfiguration(smtpHost, imapHost, userName, password, emailaddress);
MailReader instance = new ExchangeMailReader(config); MailReader instance = new ExchangeMailReader(config);
instance.connect(); instance.connect();