mirror of
https://github.com/moparisthebest/davmail
synced 2024-12-04 14:52:24 -05:00
Add options davmail.cookieFilePath and davmail.cookiesNeverExpire to let davmail import existing cookie files for complicated setups
This commit is contained in:
parent
d88a946e47
commit
e317746a74
@ -43,6 +43,7 @@ import org.apache.jackrabbit.webdav.client.methods.PropFindMethod;
|
|||||||
import org.apache.jackrabbit.webdav.property.DavPropertyNameSet;
|
import org.apache.jackrabbit.webdav.property.DavPropertyNameSet;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.net.Proxy;
|
import java.net.Proxy;
|
||||||
@ -50,7 +51,9 @@ import java.net.ProxySelector;
|
|||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Scanner;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@ -248,6 +251,44 @@ public final class DavGatewayHttpClientFacade {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final String cookiesFile = Settings.getProperty("davmail.cookieFilePath");
|
||||||
|
|
||||||
|
if(cookiesFile != null) {
|
||||||
|
Scanner scanner = null;
|
||||||
|
try {
|
||||||
|
scanner = new Scanner(new File(cookiesFile));
|
||||||
|
final boolean cookiesNeverExpire = Settings.getBooleanProperty("davmail.cookiesNeverExpire", Boolean.FALSE);
|
||||||
|
while (scanner.hasNext()) {
|
||||||
|
final String line = scanner.nextLine();
|
||||||
|
// skip empty lines and comments
|
||||||
|
if (!line.isEmpty() && !line.startsWith("#")) {
|
||||||
|
// they are tab delimited
|
||||||
|
final String[] cookieTokens = line.split("\t");
|
||||||
|
// 7 is the valid number of fields in a cookies file
|
||||||
|
if (cookieTokens.length == 7) {
|
||||||
|
final Cookie cookie = new Cookie();
|
||||||
|
cookie.setDomain(cookieTokens[0]);
|
||||||
|
cookie.setPath(cookieTokens[2]);
|
||||||
|
cookie.setSecure("TRUE".equals(cookieTokens[3].toUpperCase()));
|
||||||
|
cookie.setExpiryDate(new Date(cookiesNeverExpire ? Long.MAX_VALUE : (Long.parseLong(cookieTokens[4]) * 1000L)));
|
||||||
|
cookie.setName(cookieTokens[5]);
|
||||||
|
cookie.setValue(cookieTokens[6]);
|
||||||
|
httpClient.getState().addCookie(cookie);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Throwable e) {
|
||||||
|
LOGGER.error("Reading cookies file '" + cookiesFile + "' failed!", e);
|
||||||
|
} finally {
|
||||||
|
if (scanner != null)
|
||||||
|
try {
|
||||||
|
scanner.close();
|
||||||
|
} catch (Throwable e) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user