package com.torrenttunes.server;
import java.io.File;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import com.torrenttunes.client.LibtorrentEngine;
import com.torrenttunes.server.db.Actions;
import com.torrenttunes.server.scheduled.ScheduledJobs;
import com.torrenttunes.server.tools.Tools;
import com.torrenttunes.server.webservice.WebService;
public class Main {
static Logger log = (Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
@Option(name="-uninstall",usage="Uninstall torrenttunes-client.(WARNING, this deletes your library)")
private boolean uninstall;
@Option(name="-loglevel", usage="Sets the log level [INFO, DEBUG, etc.]")
private String loglevel = "INFO";
@Option(name="-maintenance", usage="Redirects to the maintenance page")
private boolean maintenanceRedirect;
@Option(name="-ssl", usage="Use ssl")
private boolean ssl;
public void doMain(String[] args) {
parseArguments(args);
// See if the user wants to uninstall it
if (uninstall) {
Tools.uninstall();
}
if (maintenanceRedirect) {
DataSources.BASE_ENDPOINT = DataSources.MAINTENANCE_PAGE_URL();
}
System.out.println(ssl);
DataSources.SSL = ssl;
log.setLevel(Level.toLevel(loglevel));
// log.getLoggerContext().getLogger("org.eclipse.jetty").setLevel(Level.OFF);
// log.getLoggerContext().getLogger("spark.webserver").setLevel(Level.OFF);
com.torrenttunes.client.tools.DataSources.APP_NAME = DataSources.APP_NAME;
com.torrenttunes.client.tools.DataSources.TORRENTTUNES_URL = DataSources.TORRENTTUNES_INTERNAL_URL();
Tools.setupDirectories();
Tools.copyResourcesToHomeDir(true);
Tools.addExternalWebServiceVarToTools();
com.torrenttunes.client.db.InitializeTables.initializeTables();
ScheduledJobs.start();
// Startup the web service
WebService.start();
LibtorrentEngine.INSTANCE.seedLibrary();
}
@Deprecated
public static void saveTorrentFiles() {
for (File f : new File(DataSources.TORRENTS_DIR()).listFiles(Tools.TORRENT_FILE_FILTER)) {
Actions.saveTorrentFileToDB(f);
}
}
private void parseArguments(String[] args) {
CmdLineParser parser = new CmdLineParser(this);
try {
parser.parseArgument(args);
} catch (CmdLineException e) {
// if there's a problem in the command line,
// you'll get this exception. this will report
// an error message.
System.err.println(e.getMessage());
System.err.println("java -jar torrenttunes-client.jar [options...] arguments...");
// print the list of available options
parser.printUsage(System.err);
System.err.println();
System.exit(0);
return;
}
}
public static void main(String[] args) {
new Main().doMain(args);
}
}