diff --git a/apps/i2psnark/java/build.xml b/apps/i2psnark/java/build.xml index 683e812858..5375b33246 100644 --- a/apps/i2psnark/java/build.xml +++ b/apps/i2psnark/java/build.xml @@ -50,6 +50,10 @@ + + + + @@ -71,7 +75,7 @@ - + @@ -179,29 +183,111 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + - - - - diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index abfc320978..5d001e9298 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -388,6 +388,8 @@ public class SnarkManager implements CompleteListener { } private int getStartupDelayMinutes() { + if (!_context.isRouterContext()) + return 0; try { return Integer.parseInt(_config.getProperty(PROP_STARTUP_DELAY)); } catch (NumberFormatException nfe) { @@ -675,7 +677,8 @@ public class SnarkManager implements CompleteListener { * @return String[] -- Array of all the themes found, non-null, unsorted */ public String[] getThemes() { - String[] themes; + String[] themes; + if (_context.isRouterContext()) { // "docs/themes/snark/" File dir = new File(_context.getBaseDir(), "docs/themes/snark"); FileFilter fileFilter = new FileFilter() { public boolean accept(File file) { return file.isDirectory(); } }; @@ -689,8 +692,10 @@ public class SnarkManager implements CompleteListener { } else { themes = new String[0]; } - // return the map. - return themes; + } else { + themes = new String[] { "light", "ubergine", "vanilla" }; + } + return themes; } @@ -815,7 +820,7 @@ public class SnarkManager implements CompleteListener { } } - if (startDelay != null){ + if (startDelay != null && _context.isRouterContext()) { int minutes = _util.getStartupDelay(); try { minutes = Integer.parseInt(startDelay.trim()); } catch (NumberFormatException nfe) {} if ( minutes != _util.getStartupDelay()) { diff --git a/apps/i2psnark/java/src/org/klomp/snark/standalone/RunStandalone.java b/apps/i2psnark/java/src/org/klomp/snark/standalone/RunStandalone.java new file mode 100644 index 0000000000..521d0ec58b --- /dev/null +++ b/apps/i2psnark/java/src/org/klomp/snark/standalone/RunStandalone.java @@ -0,0 +1,62 @@ +package org.klomp.snark.standalone; + +import java.io.File; + +import net.i2p.I2PAppContext; +import net.i2p.apps.systray.UrlLauncher; +import net.i2p.jetty.JettyStart; + +/** + * @since moved from ../web and fixed in 0.9.27 + */ +public class RunStandalone { + + private final JettyStart _jettyStart; + private final I2PAppContext _context; + private int _port = 8002; + private String _host = "127.0.0.1"; + + private RunStandalone(String args[]) throws Exception { + _context = I2PAppContext.getGlobalContext(); + File base = _context.getBaseDir(); + File xml = new File(base, "jetty-i2psnark.xml"); + _jettyStart = new JettyStart(_context, null, new String[] { xml.getAbsolutePath() } ); + if (args.length > 1) { + _port = Integer.parseInt(args[1]); + } + if (args.length > 0) { + _host = args[0]; + } + } + + /** + * Usage: RunStandalone [host [port]] (but must match what's in the jetty-i2psnark.xml file) + */ + public static void main(String args[]) { + try { + RunStandalone runner = new RunStandalone(args); + runner.start(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + public void start() { + try { + _jettyStart.startup(); + String url = "http://" + _host + ':' + _port + "/i2psnark/"; + try { + Thread.sleep(1000); + } catch (InterruptedException ie) {} + UrlLauncher launch = new UrlLauncher(_context, null, new String[] { url } ); + launch.startup(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void stop() { + _jettyStart.shutdown(null); + } +} diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 74688f2c72..fd914e27bc 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -4,7 +4,6 @@ import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.io.Serializable; -import java.text.Collator; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -192,7 +191,10 @@ public class I2PSnarkServlet extends BasicServlet { return; } - _themePath = "/themes/snark/" + _manager.getTheme() + '/'; + if (_context.isRouterContext()) + _themePath = "/themes/snark/" + _manager.getTheme() + '/'; + else + _themePath = _contextPath + WARBASE + "themes/snark/" + _manager.getTheme() + '/'; _imgPath = _themePath + "images/"; req.setCharacterEncoding("UTF-8"); @@ -285,8 +287,9 @@ public class I2PSnarkServlet extends BasicServlet { if (!isConfigure) { delay = _manager.getRefreshDelaySeconds(); if (delay > 0) { + String jsPfx = _context.isRouterContext() ? "" : ".resources"; //out.write("\n"); - out.write("\n" + + out.write("\n" + "