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" +
"