package com.torrenttunes.client.tools;
import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.frostwire.jlibtorrent.AnnounceEntry;
public class DataSources {
static final Logger log = LoggerFactory.getLogger(DataSources.class);
public static String APP_NAME = "torrenttunes-client";
public static String LAUNCHER_NAME = "torrenttunes-launcher";
public static String VERSION = "0.7.9";
public static Integer SPARK_WEB_PORT = 4568;
public static final String WEB_SERVICE_URL = "http://localhost:" + SPARK_WEB_PORT + "/";
public static final String WEB_SERVICE_URL_HOME = "http://localhost:" + SPARK_WEB_PORT + "/torrenttunes";
public static String EXTERNAL_IP = Tools.httpGetString("http://api.ipify.org/").trim();
public static String EXTERNAL_URL = "http://" + EXTERNAL_IP + ":" + SPARK_WEB_PORT + "/";
public static final String TORRENTTUNES_IP = "torrenttunes.tk";
public static final String TORRENTTUNES_PORT = "80";// Main is 80, dev is 4567
public static String TORRENTTUNES_URL = "http://" + TORRENTTUNES_IP + ":" + TORRENTTUNES_PORT + "/";
public static final String IP_HASH = Tools.getIPHash();
public static final File SAMPLE_TORRENT = new File("/home/tyler/Downloads/[kat.cr]devious.maids.s03e01.hdtv.x264.asap.ettv.torrent");
// The path to the home dir
public static String HOME_DIR() {
String userHome = System.getProperty("user.home") + "/." + APP_NAME;
return userHome;
}
public static final String TORRENTS_DIR() {return HOME_DIR() + "/torrents";}
public static final String DEFAULT_MUSIC_STORAGE_PATH() {return HOME_DIR() + "/music";}
public static String MUSIC_STORAGE_PATH = DEFAULT_MUSIC_STORAGE_PATH();
public static final String AUDIO_FILE(String fileName) {return MUSIC_STORAGE_PATH + "/" + fileName;}
public static final String SAMPLE_TORRENT_FILE() {return TORRENTS_DIR() +
"/[kat.cr]fugazi.studio.discography.1989.2001.flac.torrent";
}
public static final String SAMPLE_MUSIC_DIR = "/home/tyler/Downloads";
public static final String SAMPLE_SONG = SAMPLE_MUSIC_DIR + "/04 One Evening.mp3";
public static final String DB_FILE() {return HOME_DIR() + "/db/db.sqlite";}
// This should not be used, other than for unzipping to the home dir
public static final String CODE_DIR = System.getProperty("user.dir");
public static final String SOURCE_CODE_HOME() {return HOME_DIR() + "/src";}
public static final String SQL_FILE() {return SOURCE_CODE_HOME() + "/ddl.sql";}
public static final String SQL_VIEWS_FILE() {return SOURCE_CODE_HOME() + "/views.sql";}
public static final String SHADED_JAR_FILE = CODE_DIR + "/target/" + APP_NAME + ".jar";
public static final String SHADED_JAR_FILE_2() {
try {
String path = DataSources.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath();
if (System.getProperty("os.name").contains("indow")) {
path = path.substring(1);
}
return path;
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static final String ZIP_FILE() {return HOME_DIR() + "/" + APP_NAME + ".zip";}
public static final String JAR_FILE() {return HOME_DIR() + "/" + APP_NAME + ".jar";}
public static final String LAUNCHER_FILE() {return HOME_DIR() + "/" + LAUNCHER_NAME + ".jar";}
public static final String TOOLS_JS() {return SOURCE_CODE_HOME() + "/web/js/tools.js";}
// Web pages
public static final String WEB_HOME() {return SOURCE_CODE_HOME() + "/web";}
public static final String WEB_HTML() {return WEB_HOME() + "/html";}
public static final String WEB_SERVICE_STARTED_URL() {return WEB_SERVICE_URL + "hello";}
public static final String MAIN_PAGE_URL_EN() {return WEB_HTML() + "/main_en.html";}
public static final String MAIN_PAGE_URL_ES() {return WEB_HTML() + "/main_es.html";}
public static final String MAIN_PAGE_URL_FR() {return WEB_HTML() + "/main_fr.html";}
public static final String MAINTENANCE_PAGE_URL() {return WEB_HTML() + "/maintenance.html";}
public static String BASE_ENDPOINT = MAIN_PAGE_URL_EN();
public static final Set<String> NON_STREAMING_BROWSERS = new HashSet<String>(Arrays.asList(
"Firefox", "Android"));
public static final String SESSION_STATS_FILE() {return CODE_DIR + "/session_stats.0000.log";}
public static final String PAGES(String pageName) {
return WEB_HTML() + "/" + pageName + ".html";
}
public static final String TORRENT_UPLOAD_URL = TORRENTTUNES_URL + "torrent_upload";
public static final String TORRENT_INFO_UPLOAD_URL = TORRENTTUNES_URL + "torrent_info_upload";
public static final String TORRENT_DOWNLOAD_URL(String infoHash) {
return TORRENTTUNES_URL + "download_torrent/" + infoHash;
}
public static final String TORRENT_INFO_DOWNLOAD_URL(String infoHash) {
return TORRENTTUNES_URL + "download_torrent_info/" + infoHash;
}
public static final String TRACKER_ANNOUNCE = "http://" + TORRENTTUNES_IP + ":6969/announce";
public static final String SEEDER_INFO_UPLOAD(String infoHash, String seeders) {
return TORRENTTUNES_URL + "seeder_upload/" + infoHash + "/" + seeders;
}
public static final String LIBTORRENT_OS_LIBRARY_PATH() {
String osName = System.getProperty("os.name").toLowerCase();
String jvmBits = System.getProperty("sun.arch.data.model");
log.info("Operating system: " + osName + ", JVM bits: " + jvmBits);
String ret = null;
if (osName.contains("linux")) {
if (jvmBits.equals("32")) {
ret = SOURCE_CODE_HOME() + "/lib/x86/libjlibtorrent.so";
} else {
ret = SOURCE_CODE_HOME() + "/lib/x86_64/libjlibtorrent.so";
}
} else if (osName.contains("windows")) {
if (jvmBits.equals("32")) {
ret = SOURCE_CODE_HOME() + "/lib/x86/jlibtorrent.dll";
} else {
ret = SOURCE_CODE_HOME() + "/lib/x86_64/jlibtorrent.dll";
}
} else if (osName.contains("mac")) {
ret = SOURCE_CODE_HOME() + "/lib/x86_64/libjlibtorrent.dylib";
}
log.info("Using libtorrent @ " + ret);
return ret;
}
public static final List<URI> ANNOUNCE_LIST() {
List<URI> list = null;
try {
list = Arrays.asList(
// new URI(TRACKER_ANNOUNCE),
// new URI("http://9.rarbg.com:2710/announce"),
// new URI("http://announce.torrentsmd.com:6969/announce"),
// new URI("http://bt.careland.com.cn:6969/announce"),
// new URI("http://explodie.org:6969/announce"),
// new URI("http://mgtracker.org:2710/announce"),
// new URI("http://tracker.best-torrents.net:6969/announce"),
// new URI("http://tracker.tfile.me/announce"),
// new URI("http://tracker.torrenty.org:6969/announce"),
// new URI("http://tracker1.wasabii.com.tw:6969/announce"),
// new URI("udp://9.rarbg.com:2710/announce"),
// new URI("udp://9.rarbg.me:2710/announce"),
// new URI("udp://coppersurfer.tk:6969/announce"),
// new URI("udp://exodus.desync.com:6969/announce"),
// new URI("udp://open.demonii.com:1337/announce"));
// new URI("udp://tracker.btzoo.eu:80/announce"),
// new URI("udp://tracker.istole.it:80/announce"));
new URI("udp://tracker.opentrackr.org:1337/announce"));
// new URI("udp://tracker.openbittorrent.com:80/announce"));
// new URI("udp://tracker.prq.to/announce"),
// new URI("udp://tracker.publicbt.com:80/announce"));
} catch (URISyntaxException e) {}
return list;
}
public static final List<AnnounceEntry> ANNOUNCE_ENTRIES() {
return Arrays.asList(
new AnnounceEntry("udp://tracker.opentrackr.org:1337/announce")
);
}
public static String WINDOWS_SHORTCUT_LINK() {
return System.getProperty( "user.home" ) + "/desktop/Torrent Tunes.lnk";
}
public static String ICON_LOCATION() {return WEB_HOME() + "/image/favicon.ico";}
public static String ICON_MAC_LOCATION() {return WEB_HOME() + "/image/favicon.icns";}
public static String MAC_ICON_APPLET() {return MAC_APP_LOCATION() + "/Contents/Resources/applet.icns";}
public static String WINDOWS_INSTALL_VBS() {return SOURCE_CODE_HOME() + "/windows_install.vbs";}
public static String LINUX_DESKTOP_FILE() {
return System.getProperty("user.home") + "/.local/share/applications/" + APP_NAME + ".desktop";
}
public static String MAC_INSTALL_APPLESCRIPT() {return SOURCE_CODE_HOME() + "/mac_install.scpt";}
public static String MAC_APP_LOCATION() {return System.getProperty("user.home") + "/Applications/TorrentTunes.app";}
public static final String FETCH_LATEST_RELEASE_URL() {
return "https://github.com/tchoulihan/torrenttunes-client/releases/latest";
}
public static String TEMP_JAR_PATH() {return System.getProperty("user.home") + "/" + APP_NAME + ".jar";}
public static String INSTALLED_VERSION_FILE() {return SOURCE_CODE_HOME() + "/version";}
public static final Date APP_START_DATE = new Date();
public static final String HTML_TEMPLATE_LOCATION() {return WEB_HTML() + "/main.template";}
public static final String STRINGS_EN_LOCATION() {return SOURCE_CODE_HOME() + "/values/strings_en.json";}
public static final String STRINGS_ES_LOCATION() {return SOURCE_CODE_HOME() + "/values/strings_es.json";}
public static final String STRINGS_FR_LOCATION() {return SOURCE_CODE_HOME() + "/values/strings_fr.json";}
public static Integer MAX_DOWNLOAD_SPEED_BYTES = 0;
}