import java.io.File;
import java.io.IOException;
-import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.FileUtils;
* @param str 切り出す対象文字列
* @return user_session 文字列。見つからなければnull。
*/
- protected final String cutUserSession(String str) {
+ private String cutUserSession(File cookieFile, String charsetName) throws IOException {
+ final String str = FileUtils.readFileToString(cookieFile, charsetName);
final Matcher mather = USER_SESSION_PATTERN.matcher(str);
if (mather.lookingAt()) {
return mather.group(1);
/**
* cookieDirs ディレクトリからクッキーを見つけて user_session を返す
- * @param cookieDirs cookie保存ディレクトリの候補.
+ * @param cookieFileOrDirs cookieが保存されたディレクトリの候補, あるいはcookieファイルの候補.
* @return ユーザセッション文字列. 無ければnull.
*/
- protected final String getUserSessionFromDir(String charsetName, File... cookieDirs) throws IOException {
- for (File dir : cookieDirs) {
- if (dir.isDirectory()) {
- File[] files = dir.listFiles();
+ protected final String getUserSession(String charsetName, File... cookieFileOrDirs) throws IOException {
+ for (File file : cookieFileOrDirs) {
+ if (file.isDirectory()) {
+ File[] files = file.listFiles();
for (File cookieFile : files) {
if (cookieFile.isFile()) {
- final String cookie = FileUtils.readFileToString(cookieFile, charsetName);
- final String userSession = cutUserSession(cookie);
+ final String userSession = cutUserSession(cookieFile, charsetName);
if (StringUtils.isNotEmpty(userSession)) {
return userSession;
}
}
}
+ } else if (file.isFile()) {
+ final String userSession = cutUserSession(file, charsetName);
+ if (StringUtils.isNotEmpty(userSession)) {
+ return userSession;
+ }
}
}
import java.io.File;
import java.io.IOException;
-import org.apache.commons.io.FileUtils;
/**
*
private final File fileOrDir;
- public CookieDefault(File dir) {
- this.fileOrDir = dir;
+ public CookieDefault(File fileOrDir) {
+ this.fileOrDir = fileOrDir;
}
/**
*/
@Override
public String getUserSessionString() throws IOException {
- if (fileOrDir.isDirectory()) {
- // Directory Type like MSIE
- return getUserSessionFromDir("UTF-8", fileOrDir);
- }
-
- if (fileOrDir.isFile()) {
- // File Type like Firefox3
- String dataStr = FileUtils.readFileToString(fileOrDir, "UTF-8");
- return cutUserSession(dataStr);
- }
- return "";
+ // TODO 存在しなかった場合
+ return getUserSession("UTF-8", fileOrDir);
}
}
import java.io.File;
import java.io.IOException;
-import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
final File cookieFile = new File(pathPrefix + COOKIE_PATH);
if (cookieFile.isFile()) {
try {
- String dataStr = FileUtils.readFileToString(cookieFile, "UTF-8");
- return cutUserSession(dataStr);
+ return getUserSession("UTF-8", cookieFile);
} catch (IOException ex) {
logger.error("cookie read error: " + cookieFile.getPath(), ex);
}
import java.io.File;
import java.io.IOException;
-import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
/**
if (StringUtils.isNotEmpty(appData)) {
File sqlist_filename = new File(appData + "\\Mozilla\\Firefox\\Profiles\\cookies.sqlite");
if (sqlist_filename.isFile()) {
- final String dataStr = FileUtils.readFileToString(sqlist_filename, "US-ASCII");
- final String userSession = cutUserSession(dataStr);
+ final String userSession = getUserSession("US-ASCII", sqlist_filename);
if (StringUtils.isNotEmpty(userSession)) {
return userSession;
}
import java.io.File;
import java.io.IOException;
-import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
/**
for (File profileDir : userLists) {
final File sqliteFile = new File(profileDir, "cookies.sqlite");
if (sqliteFile.isFile()) {
- String dataStr = FileUtils.readFileToString(sqliteFile, "US-ASCII");
- final String user_session = cutUserSession(dataStr);
+ final String user_session = getUserSession("US-ASCII", sqliteFile);
if (StringUtils.isNotEmpty(user_session)) {
return user_session;
}
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
/**
// これは何だ?
searchDirs.add(new File(userProfile + "\\Cookies\\"));
- return getUserSessionFromDir("MS932", searchDirs.toArray(new File[0]));
+ return getUserSession("MS932", searchDirs.toArray(new File[0]));
}
}