Console: Split net.i2p.router.web into two packages, and move the new .helper package to the war

This commit is contained in:
zzz
2017-12-01 14:07:29 +00:00
parent 6c56d679ab
commit 9b2a85df38
118 changed files with 478 additions and 281 deletions

View File

@ -123,7 +123,7 @@
<target name="jar1" depends="compile, bundle-news, bundle-countries, jarUpToDate, listChangedFiles" unless="jar.uptodate" > <target name="jar1" depends="compile, bundle-news, bundle-countries, jarUpToDate, listChangedFiles" unless="jar.uptodate" >
<!-- set if unset --> <!-- set if unset -->
<property name="workspace.changes.j.tr" value="" /> <property name="workspace.changes.j.tr" value="" />
<jar destfile="./build/routerconsole.jar" basedir="./build/obj" includes="**/*.class"> <jar destfile="./build/routerconsole.jar" basedir="./build/obj" excludes="net/i2p/router/web/helpers/*">
<manifest> <manifest>
<!-- DTG added in 0.8.4, not in the classpath for very old installs, before we changed wrapper.config to specify * --> <!-- DTG added in 0.8.4, not in the classpath for very old installs, before we changed wrapper.config to specify * -->
<!-- very old installs don't have i2psnark,jstl,standard in the classpath... not added in WebAppConfiguration any more --> <!-- very old installs don't have i2psnark,jstl,standard in the classpath... not added in WebAppConfiguration any more -->
@ -169,7 +169,7 @@
<compilerarg line="${javac.compilerargs}" /> <compilerarg line="${javac.compilerargs}" />
</javac> </javac>
<!-- jar again to get the latest messages_*.class files --> <!-- jar again to get the latest messages_*.class files -->
<jar destfile="./build/routerconsole.jar" basedir="./build/obj" includes="**/*.class" update="true" /> <jar destfile="./build/routerconsole.jar" basedir="./build/obj" includes="**/messages_*.class" update="true" />
</target> </target>
<target name="jarUpToDate"> <target name="jarUpToDate">
@ -312,6 +312,7 @@
<attribute name="X-Compile-Source-JDK" value="${javac.version}" /> <attribute name="X-Compile-Source-JDK" value="${javac.version}" />
<attribute name="X-Compile-Target-JDK" value="${javac.version}" /> <attribute name="X-Compile-Target-JDK" value="${javac.version}" />
</manifest> </manifest>
<classes dir="./build/obj" includes="net/i2p/router/web/helpers/*" />
</war> </war>
</target> </target>
@ -387,8 +388,7 @@
<pathelement location="../../systray/java/build/obj" /> <pathelement location="../../systray/java/build/obj" />
<pathelement location="../../desktopgui/dist/desktopgui.jar" /> <pathelement location="../../desktopgui/dist/desktopgui.jar" />
<pathelement location="../../../installer/lib/wrapper/all/wrapper.jar" /> <pathelement location="../../../installer/lib/wrapper/all/wrapper.jar" />
<pathelement location="build/routerconsole.jar" /> <pathelement location="build/obj/" />
<pathelement location="build/" />
<pathelement location="../../../router/java/build/router.jar" /> <pathelement location="../../../router/java/build/router.jar" />
<pathelement location="../../../core/java/build/i2p.jar" /> <pathelement location="../../../core/java/build/i2p.jar" />
</classpath> </classpath>
@ -427,8 +427,7 @@
<pathelement location="../../systray/java/build/obj" /> <pathelement location="../../systray/java/build/obj" />
<pathelement location="../../desktopgui/dist/desktopgui.jar" /> <pathelement location="../../desktopgui/dist/desktopgui.jar" />
<pathelement location="../../../installer/lib/wrapper/all/wrapper.jar" /> <pathelement location="../../../installer/lib/wrapper/all/wrapper.jar" />
<pathelement location="build/routerconsole.jar" /> <pathelement location="build/obj/" />
<pathelement location="build" />
<pathelement location="../../../router/java/build/router.jar" /> <pathelement location="../../../router/java/build/router.jar" />
<pathelement location="../../../core/java/build/i2p.jar" /> <pathelement location="../../../core/java/build/i2p.jar" />
</classpath> </classpath>

View File

@ -16,11 +16,10 @@ import net.i2p.data.DataFormatException;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.data.SigningPublicKey; import net.i2p.data.SigningPublicKey;
import net.i2p.router.RouterContext; import net.i2p.router.RouterContext;
import net.i2p.router.web.ConfigClientsHelper;
import net.i2p.router.web.ConfigUpdateHandler; import net.i2p.router.web.ConfigUpdateHandler;
import net.i2p.router.web.LogsHelper;
import net.i2p.router.web.Messages; import net.i2p.router.web.Messages;
import net.i2p.router.web.PluginStarter; import net.i2p.router.web.PluginStarter;
import net.i2p.router.web.RouterConsoleRunner;
import net.i2p.update.*; import net.i2p.update.*;
import net.i2p.util.EepGet; import net.i2p.util.EepGet;
import net.i2p.util.FileUtil; import net.i2p.util.FileUtil;
@ -387,7 +386,7 @@ class PluginUpdateRunner extends UpdateRunner {
_appName = appName; _appName = appName;
_newVersion = version; _newVersion = version;
String minVersion = ConfigClientsHelper.stripHTML(props, "min-i2p-version"); String minVersion = PluginStarter.stripHTML(props, "min-i2p-version");
if (minVersion != null && if (minVersion != null &&
VersionComparator.comp(CoreVersion.VERSION, minVersion) < 0) { VersionComparator.comp(CoreVersion.VERSION, minVersion) < 0) {
to.delete(); to.delete();
@ -395,7 +394,7 @@ class PluginUpdateRunner extends UpdateRunner {
return; return;
} }
minVersion = ConfigClientsHelper.stripHTML(props, "min-java-version"); minVersion = PluginStarter.stripHTML(props, "min-java-version");
if (minVersion != null && if (minVersion != null &&
VersionComparator.comp(System.getProperty("java.version"), minVersion) < 0) { VersionComparator.comp(System.getProperty("java.version"), minVersion) < 0) {
to.delete(); to.delete();
@ -436,22 +435,22 @@ class PluginUpdateRunner extends UpdateRunner {
statusDone("<b>" + _t("Downloaded plugin version {0} is not newer than installed plugin", version) + "</b>"); statusDone("<b>" + _t("Downloaded plugin version {0} is not newer than installed plugin", version) + "</b>");
return; return;
} }
minVersion = ConfigClientsHelper.stripHTML(props, "min-installed-version"); minVersion = PluginStarter.stripHTML(props, "min-installed-version");
if (minVersion != null && if (minVersion != null &&
VersionComparator.comp(minVersion, oldVersion) > 0) { VersionComparator.comp(minVersion, oldVersion) > 0) {
to.delete(); to.delete();
statusDone("<b>" + _t("Plugin update requires installed plugin version {0} or higher", minVersion) + "</b>"); statusDone("<b>" + _t("Plugin update requires installed plugin version {0} or higher", minVersion) + "</b>");
return; return;
} }
String maxVersion = ConfigClientsHelper.stripHTML(props, "max-installed-version"); String maxVersion = PluginStarter.stripHTML(props, "max-installed-version");
if (maxVersion != null && if (maxVersion != null &&
VersionComparator.comp(maxVersion, oldVersion) < 0) { VersionComparator.comp(maxVersion, oldVersion) < 0) {
to.delete(); to.delete();
statusDone("<b>" + _t("Plugin update requires installed plugin version {0} or lower", maxVersion) + "</b>"); statusDone("<b>" + _t("Plugin update requires installed plugin version {0} or lower", maxVersion) + "</b>");
return; return;
} }
oldVersion = LogsHelper.jettyVersion(); oldVersion = RouterConsoleRunner.jettyVersion();
minVersion = ConfigClientsHelper.stripHTML(props, "min-jetty-version"); minVersion = PluginStarter.stripHTML(props, "min-jetty-version");
if (minVersion != null && if (minVersion != null &&
VersionComparator.comp(minVersion, oldVersion) > 0) { VersionComparator.comp(minVersion, oldVersion) > 0) {
to.delete(); to.delete();
@ -465,7 +464,7 @@ class PluginUpdateRunner extends UpdateRunner {
statusDone("<b>" + _t("Plugin requires Jetty version {0} or lower", "8.9999") + "</b>"); statusDone("<b>" + _t("Plugin requires Jetty version {0} or lower", "8.9999") + "</b>");
return; return;
} }
maxVersion = ConfigClientsHelper.stripHTML(props, "max-jetty-version"); maxVersion = PluginStarter.stripHTML(props, "max-jetty-version");
if (maxVersion != null && if (maxVersion != null &&
VersionComparator.comp(maxVersion, oldVersion) < 0) { VersionComparator.comp(maxVersion, oldVersion) < 0) {
to.delete(); to.delete();
@ -536,10 +535,10 @@ class PluginUpdateRunner extends UpdateRunner {
// start everything unless it was disabled and not running before // start everything unless it was disabled and not running before
try { try {
if (PluginStarter.startPlugin(_context, appName)) { if (PluginStarter.startPlugin(_context, appName)) {
String linkName = ConfigClientsHelper.stripHTML(props, "consoleLinkName_" + Messages.getLanguage(_context)); String linkName = PluginStarter.stripHTML(props, "consoleLinkName_" + Messages.getLanguage(_context));
if (linkName == null) if (linkName == null)
linkName = ConfigClientsHelper.stripHTML(props, "consoleLinkName"); linkName = PluginStarter.stripHTML(props, "consoleLinkName");
String linkURL = ConfigClientsHelper.stripHTML(props, "consoleLinkURL"); String linkURL = PluginStarter.stripHTML(props, "consoleLinkURL");
String link; String link;
if (linkName != null && linkURL != null) if (linkName != null && linkURL != null)
link = "<a target=\"_blank\" href=\"" + linkURL + "\"/>" + linkName + ' ' + version + "</a>"; link = "<a target=\"_blank\" href=\"" + linkURL + "\"/>" + linkName + ' ' + version + "</a>";

View File

@ -0,0 +1,19 @@
package net.i2p.router.web;
/**
* @since 0.9.33 moved from HomeHelper
*/
public class App {
public final String name;
public final String desc;
public final String url;
public final String icon;
public App(String name, String desc, String url, String icon) {
this.name = name;
this.desc = desc;
this.url = url;
this.icon = icon;
}
}

View File

@ -18,6 +18,8 @@ public class CSSHelper extends HelperBase {
public static final String PROP_UNIVERSAL_THEMING = "routerconsole.universal.theme"; public static final String PROP_UNIVERSAL_THEMING = "routerconsole.universal.theme";
public static final String PROP_THEME_NAME = "routerconsole.theme"; public static final String PROP_THEME_NAME = "routerconsole.theme";
/** @since 0.9.33 moved from ConfigUIHelper */
public static final String PROP_THEME_PFX = PROP_THEME_NAME + '.';
public static final String DEFAULT_THEME = "light"; public static final String DEFAULT_THEME = "light";
public static final String BASE_THEME_PATH = "/themes/console/"; public static final String BASE_THEME_PATH = "/themes/console/";
private static final String FORCE = "classic"; private static final String FORCE = "classic";

View File

@ -5,6 +5,7 @@ import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Properties; import java.util.Properties;
import net.i2p.I2PAppContext;
import net.i2p.app.ClientApp; import net.i2p.app.ClientApp;
import net.i2p.app.ClientAppManager; import net.i2p.app.ClientAppManager;
import net.i2p.app.ClientAppState; import net.i2p.app.ClientAppState;
@ -29,6 +30,7 @@ public class ConfigServiceHandler extends FormHandler {
private static final String LISTENER_AVAILABLE = "3.2.0"; private static final String LISTENER_AVAILABLE = "3.2.0";
private static final String PROPERTIES_AVAILABLE = "3.2.0"; private static final String PROPERTIES_AVAILABLE = "3.2.0";
private static final String LOCATION_AVAILABLE = "3.3.7";
/** /**
* Register two shutdown hooks, one to rekey and/or tell the wrapper we are stopping, * Register two shutdown hooks, one to rekey and/or tell the wrapper we are stopping,
@ -264,7 +266,7 @@ public class ConfigServiceHandler extends FormHandler {
} catch (Throwable t) { } catch (Throwable t) {
addFormError("Warning: unable to contact the service manager - " + t.getMessage()); addFormError("Warning: unable to contact the service manager - " + t.getMessage());
} }
File wlog = LogsHelper.wrapperLogFile(_context); File wlog = wrapperLogFile(_context);
addFormNotice(_t("Threads dumped to {0}", wlog.getAbsolutePath())); addFormNotice(_t("Threads dumped to {0}", wlog.getAbsolutePath()));
} else if (_t("View console on startup").equals(_action)) { } else if (_t("View console on startup").equals(_action)) {
browseOnStartup(true); browseOnStartup(true);
@ -284,6 +286,37 @@ public class ConfigServiceHandler extends FormHandler {
} }
} }
/**
* Does not necessarily exist.
*
* @return non-null, doesn't necessarily exist
* @since 0.9.1, public since 0.9.27, moved from LogsHelper in 0.9.33
*/
public static File wrapperLogFile(I2PAppContext ctx) {
File f = null;
if (ctx.hasWrapper()) {
String wv = System.getProperty("wrapper.version");
if (wv != null && VersionComparator.comp(wv, LOCATION_AVAILABLE) >= 0) {
try {
f = WrapperManager.getWrapperLogFile();
} catch (Throwable t) {}
}
}
if (f == null || !f.exists()) {
// RouterLaunch puts the location here if no wrapper
String path = System.getProperty("wrapper.logfile");
if (path != null) {
f = new File(path);
} else {
// look in new and old places
f = new File(System.getProperty("java.io.tmpdir"), "wrapper.log");
if (!f.exists())
f = new File(ctx.getBaseDir(), "wrapper.log");
}
}
return f;
}
private void installService() { private void installService() {
try { try {
Runtime.getRuntime().exec("install_i2p_service_winnt.bat"); Runtime.getRuntime().exec("install_i2p_service_winnt.bat");

View File

@ -5,7 +5,7 @@ import java.util.List;
import net.i2p.data.Hash; import net.i2p.data.Hash;
import net.i2p.router.RouterContext; import net.i2p.router.RouterContext;
class ContextHelper { public class ContextHelper {
/** @throws IllegalStateException if no context available */ /** @throws IllegalStateException if no context available */
public static RouterContext getContext(String contextId) { public static RouterContext getContext(String contextId) {

View File

@ -0,0 +1,16 @@
package net.i2p.router.web;
/**
* Basic graph defaults
*
* @since 0.9.33 pulled out of GraphHelper
*/
public class GraphConstants {
private GraphConstants() {}
public static final int DEFAULT_X = 400;
public static final int DEFAULT_Y = 100;
public static final int MAX_X = 2048;
public static final int MAX_Y = 1024;
}

View File

@ -11,8 +11,10 @@ public abstract class HelperBase {
protected RouterContext _context; protected RouterContext _context;
protected Writer _out; protected Writer _out;
static final String PROP_ADVANCED = "routerconsole.advanced"; /** @since public since 0.9.33, was package private */
static final String CHECKED = " checked=\"checked\" "; public static final String PROP_ADVANCED = "routerconsole.advanced";
/** @since public since 0.9.33, was package private */
public static final String CHECKED = " checked=\"checked\" ";
/** /**
* Configure this bean to query a particular router context * Configure this bean to query a particular router context

View File

@ -9,7 +9,8 @@ import net.i2p.util.Translate;
public class Messages extends Translate { public class Messages extends Translate {
private static final String BUNDLE_NAME = "net.i2p.router.web.messages"; private static final String BUNDLE_NAME = "net.i2p.router.web.messages";
static final String COUNTRY_BUNDLE_NAME = "net.i2p.router.countries.messages"; /** @since public since 0.9.33, was package private */
public static final String COUNTRY_BUNDLE_NAME = "net.i2p.router.countries.messages";
/** lang in routerconsole.lang property, else current locale */ /** lang in routerconsole.lang property, else current locale */
public static String getString(String key, I2PAppContext ctx) { public static String getString(String key, I2PAppContext ctx) {

View File

@ -7,7 +7,7 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import net.i2p.I2PAppContext; import net.i2p.I2PAppContext;
import net.i2p.router.web.HomeHelper.App; import net.i2p.router.web.App;
public class NavHelper { public class NavHelper {
private static final Map<String, String> _apps = new ConcurrentHashMap<String, String>(4); private static final Map<String, String> _apps = new ConcurrentHashMap<String, String>(4);
@ -91,12 +91,12 @@ public class NavHelper {
* For HomeHelper * For HomeHelper
* @param ctx unused * @param ctx unused
* @return non-null, possibly empty * @return non-null, possibly empty
* @since 0.9 * @since 0.9, public since 0.9.33, was package private
*/ */
static List<HomeHelper.App> getClientApps(I2PAppContext ctx) { public static List<App> getClientApps(I2PAppContext ctx) {
if (_apps.isEmpty()) if (_apps.isEmpty())
return Collections.emptyList(); return Collections.emptyList();
List<HomeHelper.App> rv = new ArrayList<App>(_apps.size()); List<App> rv = new ArrayList<App>(_apps.size());
for (Map.Entry<String, String> e : _apps.entrySet()) { for (Map.Entry<String, String> e : _apps.entrySet()) {
String name = e.getKey(); String name = e.getKey();
String path = e.getValue(); String path = e.getValue();
@ -113,7 +113,7 @@ public class NavHelper {
icon = "/themes/console/images/email.png"; icon = "/themes/console/images/email.png";
else else
icon = "/themes/console/images/plugin.png"; icon = "/themes/console/images/plugin.png";
HomeHelper.App app = new HomeHelper.App(name, tip, path, icon); App app = new App(name, tip, path, icon);
rv.add(app); rv.add(app);
} }
return rv; return rv;

View File

@ -87,7 +87,10 @@ public class PluginStarter implements Runnable {
_context = ctx; _context = ctx;
} }
static boolean pluginsEnabled(I2PAppContext ctx) { /**
* @since public since 0.9.33, was package private
*/
public static boolean pluginsEnabled(I2PAppContext ctx) {
return ctx.getBooleanPropertyDefaultTrue("router.enablePlugins"); return ctx.getBooleanPropertyDefaultTrue("router.enablePlugins");
} }
@ -106,9 +109,9 @@ public class PluginStarter implements Runnable {
/** /**
* threaded * threaded
* @since 0.8.13 * @since 0.8.13, public since 0.9.33, was package private
*/ */
static void updateAll(RouterContext ctx) { public static void updateAll(RouterContext ctx) {
Thread t = new I2PAppThread(new PluginUpdater(ctx), "PluginUpdater", true); Thread t = new I2PAppThread(new PluginUpdater(ctx), "PluginUpdater", true);
t.start(); t.start();
} }
@ -316,7 +319,7 @@ public class PluginStarter implements Runnable {
// For the following, we use the exact same translated strings as in PluginUpdateRunner // For the following, we use the exact same translated strings as in PluginUpdateRunner
// to avoid duplication // to avoid duplication
String minVersion = ConfigClientsHelper.stripHTML(props, "min-i2p-version"); String minVersion = stripHTML(props, "min-i2p-version");
if (minVersion != null && if (minVersion != null &&
VersionComparator.comp(CoreVersion.VERSION, minVersion) < 0) { VersionComparator.comp(CoreVersion.VERSION, minVersion) < 0) {
String foo = "Plugin " + appName + " requires I2P version " + minVersion + " or higher"; String foo = "Plugin " + appName + " requires I2P version " + minVersion + " or higher";
@ -326,7 +329,7 @@ public class PluginStarter implements Runnable {
throw new Exception(foo); throw new Exception(foo);
} }
minVersion = ConfigClientsHelper.stripHTML(props, "min-java-version"); minVersion = stripHTML(props, "min-java-version");
if (minVersion != null && if (minVersion != null &&
VersionComparator.comp(System.getProperty("java.version"), minVersion) < 0) { VersionComparator.comp(System.getProperty("java.version"), minVersion) < 0) {
String foo = "Plugin " + appName + " requires Java version " + minVersion + " or higher"; String foo = "Plugin " + appName + " requires Java version " + minVersion + " or higher";
@ -336,8 +339,8 @@ public class PluginStarter implements Runnable {
throw new Exception(foo); throw new Exception(foo);
} }
String jVersion = LogsHelper.jettyVersion(); String jVersion = RouterConsoleRunner.jettyVersion();
minVersion = ConfigClientsHelper.stripHTML(props, "min-jetty-version"); minVersion = stripHTML(props, "min-jetty-version");
if (minVersion != null && if (minVersion != null &&
VersionComparator.comp(minVersion, jVersion) > 0) { VersionComparator.comp(minVersion, jVersion) > 0) {
String foo = "Plugin " + appName + " requires Jetty version " + minVersion + " or higher"; String foo = "Plugin " + appName + " requires Jetty version " + minVersion + " or higher";
@ -348,7 +351,7 @@ public class PluginStarter implements Runnable {
} }
String blacklistVersion = jetty9Blacklist.get(appName); String blacklistVersion = jetty9Blacklist.get(appName);
String curVersion = ConfigClientsHelper.stripHTML(props, "version"); String curVersion = stripHTML(props, "version");
if (blacklistVersion != null && if (blacklistVersion != null &&
VersionComparator.comp(curVersion, blacklistVersion) <= 0) { VersionComparator.comp(curVersion, blacklistVersion) <= 0) {
String foo = "Plugin " + appName + " requires Jetty version 8.9999 or lower"; String foo = "Plugin " + appName + " requires Jetty version 8.9999 or lower";
@ -358,7 +361,7 @@ public class PluginStarter implements Runnable {
throw new Exception(foo); throw new Exception(foo);
} }
String maxVersion = ConfigClientsHelper.stripHTML(props, "max-jetty-version"); String maxVersion = stripHTML(props, "max-jetty-version");
if (maxVersion != null && if (maxVersion != null &&
VersionComparator.comp(maxVersion, jVersion) < 0) { VersionComparator.comp(maxVersion, jVersion) < 0) {
String foo = "Plugin " + appName + " requires Jetty version " + maxVersion + " or lower"; String foo = "Plugin " + appName + " requires Jetty version " + maxVersion + " or lower";
@ -379,7 +382,7 @@ public class PluginStarter implements Runnable {
String name = tfiles[i].getName(); String name = tfiles[i].getName();
if (tfiles[i].isDirectory() && (!Arrays.asList(STANDARD_THEMES).contains(tfiles[i]))) { if (tfiles[i].isDirectory() && (!Arrays.asList(STANDARD_THEMES).contains(tfiles[i]))) {
// deprecated // deprecated
ctx.router().setConfigSetting(ConfigUIHelper.PROP_THEME_PFX + name, tfiles[i].getAbsolutePath()); ctx.router().setConfigSetting(CSSHelper.PROP_THEME_PFX + name, tfiles[i].getAbsolutePath());
// we don't need to save // we don't need to save
} }
} }
@ -438,7 +441,7 @@ public class PluginStarter implements Runnable {
} }
} }
// Check for iconfile in plugin.properties // Check for iconfile in plugin.properties
String icfile = ConfigClientsHelper.stripHTML(props, "console-icon"); String icfile = stripHTML(props, "console-icon");
if (icfile != null && !icfile.contains("..")) { if (icfile != null && !icfile.contains("..")) {
StringBuilder buf = new StringBuilder(32); StringBuilder buf = new StringBuilder(32);
buf.append('/').append(appName); buf.append('/').append(appName);
@ -481,14 +484,14 @@ public class PluginStarter implements Runnable {
} }
} }
// add summary bar link // add summary bar link
String name = ConfigClientsHelper.stripHTML(props, "consoleLinkName_" + Messages.getLanguage(ctx)); String name = stripHTML(props, "consoleLinkName_" + Messages.getLanguage(ctx));
if (name == null) if (name == null)
name = ConfigClientsHelper.stripHTML(props, "consoleLinkName"); name = stripHTML(props, "consoleLinkName");
String url = ConfigClientsHelper.stripHTML(props, "consoleLinkURL"); String url = stripHTML(props, "consoleLinkURL");
if (name != null && url != null && name.length() > 0 && url.length() > 0) { if (name != null && url != null && name.length() > 0 && url.length() > 0) {
String tip = ConfigClientsHelper.stripHTML(props, "consoleLinkTooltip_" + Messages.getLanguage(ctx)); String tip = stripHTML(props, "consoleLinkTooltip_" + Messages.getLanguage(ctx));
if (tip == null) if (tip == null)
tip = ConfigClientsHelper.stripHTML(props, "consoleLinkTooltip"); tip = stripHTML(props, "consoleLinkTooltip");
NavHelper.registerApp(name, url, tip, iconfile); NavHelper.registerApp(name, url, tip, iconfile);
} }
@ -546,9 +549,9 @@ public class PluginStarter implements Runnable {
// remove summary bar link // remove summary bar link
Properties props = pluginProperties(ctx, appName); Properties props = pluginProperties(ctx, appName);
String name = ConfigClientsHelper.stripHTML(props, "consoleLinkName_" + Messages.getLanguage(ctx)); String name = stripHTML(props, "consoleLinkName_" + Messages.getLanguage(ctx));
if (name == null) if (name == null)
name = ConfigClientsHelper.stripHTML(props, "consoleLinkName"); name = stripHTML(props, "consoleLinkName");
if (name != null && name.length() > 0) if (name != null && name.length() > 0)
NavHelper.unregisterApp(name); NavHelper.unregisterApp(name);
@ -557,8 +560,11 @@ public class PluginStarter implements Runnable {
return true; return true;
} }
/** @return true on success - caller should call stopPlugin() first */ /**
static boolean deletePlugin(RouterContext ctx, String appName) throws Exception { * @return true on success - caller should call stopPlugin() first
* @since public since 0.9.33, was package private
*/
public static boolean deletePlugin(RouterContext ctx, String appName) throws Exception {
Log log = ctx.logManager().getLog(PluginStarter.class); Log log = ctx.logManager().getLog(PluginStarter.class);
File pluginDir = new File(ctx.getConfigDir(), PLUGIN_DIR + '/' + appName); File pluginDir = new File(ctx.getConfigDir(), PLUGIN_DIR + '/' + appName);
if ((!pluginDir.exists()) || (!pluginDir.isDirectory())) { if ((!pluginDir.exists()) || (!pluginDir.isDirectory())) {
@ -584,7 +590,7 @@ public class PluginStarter implements Runnable {
for (int i = 0; i < tfiles.length; i++) { for (int i = 0; i < tfiles.length; i++) {
String name = tfiles[i].getName(); String name = tfiles[i].getName();
if (tfiles[i].isDirectory() && (!Arrays.asList(STANDARD_THEMES).contains(tfiles[i]))) { if (tfiles[i].isDirectory() && (!Arrays.asList(STANDARD_THEMES).contains(tfiles[i]))) {
removes.add(ConfigUIHelper.PROP_THEME_PFX + name); removes.add(CSSHelper.PROP_THEME_PFX + name);
if (name.equals(current)) if (name.equals(current))
changes.put(CSSHelper.PROP_THEME_NAME, CSSHelper.DEFAULT_THEME); changes.put(CSSHelper.PROP_THEME_NAME, CSSHelper.DEFAULT_THEME);
} }
@ -1033,6 +1039,19 @@ public class PluginStarter implements Runnable {
method.invoke(urlClassLoader, new Object[]{u}); method.invoke(urlClassLoader, new Object[]{u});
} }
/**
* Like in DataHelper but doesn't convert null to ""
* There's a lot worse things a plugin could do but...
* @since moved from ConfigClientsHelper in 0.9.33
*/
public static String stripHTML(Properties props, String key) {
String orig = props.getProperty(key);
if (orig == null) return null;
String t1 = orig.replace('<', ' ');
String rv = t1.replace('>', ' ');
return rv;
}
/** /**
* translate a string * translate a string
* @since 0.9.30 * @since 0.9.30

View File

@ -288,6 +288,11 @@ public class RouterConsoleRunner implements RouterApp {
return _server; return _server;
} }
/** @since 0.8.13, moved from LogsHelper in 0.9.33 */
public static String jettyVersion() {
return Server.getVersion();
}
private void startTrayApp() { private void startTrayApp() {
// if no permissions, don't even try // if no permissions, don't even try
// isLaunchedAsService() always returns true on Linux // isLaunchedAsService() always returns true on Linux

View File

@ -13,6 +13,7 @@ import java.util.concurrent.Semaphore;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.RouterContext; import net.i2p.router.RouterContext;
import static net.i2p.router.web.GraphConstants.*;
import net.i2p.stat.Rate; import net.i2p.stat.Rate;
import net.i2p.stat.RateStat; import net.i2p.stat.RateStat;
import net.i2p.util.FileUtil; import net.i2p.util.FileUtil;
@ -79,8 +80,8 @@ public class StatSummarizer implements Runnable {
} }
} }
/** @since 0.8.7 */ /** @since 0.8.7, public since 0.9.33, was package private */
static boolean isDisabled() { public static boolean isDisabled() {
return _instance == null || _instance._isDisabled; return _instance == null || _instance._isDisabled;
} }
@ -96,10 +97,14 @@ public class StatSummarizer implements Runnable {
} }
} }
/** list of SummaryListener instances */ /**
List<SummaryListener> getListeners() { return _listeners; } * List of SummaryListener instances
* @since public since 0.9.33, was package private
*/
public List<SummaryListener> getListeners() { return _listeners; }
static final String DEFAULT_DATABASES = "bw.sendRate.60000" + /** @since public since 0.9.33, was package private */
public static final String DEFAULT_DATABASES = "bw.sendRate.60000" +
",bw.recvRate.60000" + ",bw.recvRate.60000" +
// ",tunnel.testSuccessTime.60000" + // ",tunnel.testSuccessTime.60000" +
// ",udp.outboundActiveCount.60000" + // ",udp.outboundActiveCount.60000" +
@ -174,7 +179,7 @@ public class StatSummarizer implements Runnable {
} }
public boolean renderPng(Rate rate, OutputStream out) throws IOException { public boolean renderPng(Rate rate, OutputStream out) throws IOException {
return renderPng(rate, out, GraphHelper.DEFAULT_X, GraphHelper.DEFAULT_Y, return renderPng(rate, out, DEFAULT_X, DEFAULT_Y,
false, false, false, false, -1, 0, true); false, false, false, false, -1, 0, true);
} }
@ -220,14 +225,14 @@ public class StatSummarizer implements Runnable {
private boolean locked_renderPng(Rate rate, OutputStream out, int width, int height, boolean hideLegend, private boolean locked_renderPng(Rate rate, OutputStream out, int width, int height, boolean hideLegend,
boolean hideGrid, boolean hideTitle, boolean showEvents, int periodCount, boolean hideGrid, boolean hideTitle, boolean showEvents, int periodCount,
int end, boolean showCredit) throws IOException { int end, boolean showCredit) throws IOException {
if (width > GraphHelper.MAX_X) if (width > MAX_X)
width = GraphHelper.MAX_X; width = MAX_X;
else if (width <= 0) else if (width <= 0)
width = GraphHelper.DEFAULT_X; width = DEFAULT_X;
if (height > GraphHelper.MAX_Y) if (height > MAX_Y)
height = GraphHelper.MAX_Y; height = MAX_Y;
else if (height <= 0) else if (height <= 0)
height = GraphHelper.DEFAULT_Y; height = DEFAULT_Y;
if (end < 0) if (end < 0)
end = 0; end = 0;
for (SummaryListener lsnr : _listeners) { for (SummaryListener lsnr : _listeners) {
@ -321,14 +326,14 @@ public class StatSummarizer implements Runnable {
if (txLsnr == null || rxLsnr == null) if (txLsnr == null || rxLsnr == null)
throw new IOException("no rates for combined graph"); throw new IOException("no rates for combined graph");
if (width > GraphHelper.MAX_X) if (width > MAX_X)
width = GraphHelper.MAX_X; width = MAX_X;
else if (width <= 0) else if (width <= 0)
width = GraphHelper.DEFAULT_X; width = DEFAULT_X;
if (height > GraphHelper.MAX_Y) if (height > MAX_Y)
height = GraphHelper.MAX_Y; height = MAX_Y;
else if (height <= 0) else if (height <= 0)
height = GraphHelper.DEFAULT_Y; height = DEFAULT_Y;
txLsnr.renderPng(out, width, height, hideLegend, hideGrid, hideTitle, showEvents, periodCount, txLsnr.renderPng(out, width, height, hideLegend, hideGrid, hideTitle, showEvents, periodCount,
end, showCredit, rxLsnr, _t("Bandwidth usage")); end, showCredit, rxLsnr, _t("Bandwidth usage"));
return true; return true;
@ -337,8 +342,9 @@ public class StatSummarizer implements Runnable {
/** /**
* @param specs statName.period,statName.period,statName.period * @param specs statName.period,statName.period,statName.period
* @return list of Rate objects * @return list of Rate objects
* @since public since 0.9.33, was package private
*/ */
Set<Rate> parseSpecs(String specs) { public Set<Rate> parseSpecs(String specs) {
if (specs == null) if (specs == null)
return Collections.emptySet(); return Collections.emptySet();
StringTokenizer tok = new StringTokenizer(specs, ","); StringTokenizer tok = new StringTokenizer(specs, ",");

View File

@ -28,8 +28,9 @@ import org.jrobin.core.Sample;
* *
* @since 0.6.1.13 * @since 0.6.1.13
*/ */
class SummaryListener implements RateSummaryListener { public class SummaryListener implements RateSummaryListener {
static final String PROP_PERSISTENT = "routerconsole.graphPersistent"; /** @since public since 0.9.33, was package private */
public static final String PROP_PERSISTENT = "routerconsole.graphPersistent";
/** note that .jrb files are NOT compatible with .rrd files */ /** note that .jrb files are NOT compatible with .rrd files */
static final String RRD_DIR = "rrd"; static final String RRD_DIR = "rrd";
private static final String RRD_PREFIX = "rrd-"; private static final String RRD_PREFIX = "rrd-";
@ -51,7 +52,8 @@ class SummaryListener implements RateSummaryListener {
static final int PERIODS = 60 * 24; // 1440 static final int PERIODS = 60 * 24; // 1440
private static final int MIN_ROWS = PERIODS; private static final int MIN_ROWS = PERIODS;
static final int MAX_ROWS = 91 * MIN_ROWS; /** @since public since 0.9.33, was package private */
public static final int MAX_ROWS = 91 * MIN_ROWS;
private static final long THREE_MONTHS = 91l * 24 * 60 * 60 * 1000; private static final long THREE_MONTHS = 91l * 24 * 60 * 60 * 1000;
public SummaryListener(Rate r) { public SummaryListener(Rate r) {

View File

@ -18,6 +18,7 @@ import net.i2p.I2PAppContext;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.RouterContext; import net.i2p.router.RouterContext;
import net.i2p.router.util.EventLog; import net.i2p.router.util.EventLog;
import static net.i2p.router.web.GraphConstants.*;
import net.i2p.util.Log; import net.i2p.util.Log;
import net.i2p.util.SystemVersion; import net.i2p.util.SystemVersion;
@ -74,8 +75,8 @@ class SummaryRenderer {
RrdGraphDef def = template.getRrdGraphDef(); RrdGraphDef def = template.getRrdGraphDef();
def.setTimeSpan(start/1000, end/1000); // ignore the periods in the template def.setTimeSpan(start/1000, end/1000); // ignore the periods in the template
// FIXME not clear how to get the height and width from the template // FIXME not clear how to get the height and width from the template
int width = GraphHelper.DEFAULT_X; int width = DEFAULT_X;
int height = GraphHelper.DEFAULT_Y; int height = DEFAULT_Y;
def.setWidth(width); def.setWidth(width);
def.setHeight(height); def.setHeight(height);
@ -97,7 +98,7 @@ class SummaryRenderer {
*****/ *****/
} }
public void render(OutputStream out) throws IOException { render(out, GraphHelper.DEFAULT_X, GraphHelper.DEFAULT_Y, public void render(OutputStream out) throws IOException { render(out, DEFAULT_X, DEFAULT_Y,
false, false, false, false, -1, 0, false); } false, false, false, false, -1, 0, false); }
/** /**

View File

@ -52,8 +52,9 @@ public class WebAppStarter {
* Prior to 0.9.28, was not guaranteed to throw on failure. * Prior to 0.9.28, was not guaranteed to throw on failure.
* *
* @throws Exception just about anything, caller would be wise to catch Throwable * @throws Exception just about anything, caller would be wise to catch Throwable
* @since public since 0.9.33, was package private
*/ */
static void startWebApp(RouterContext ctx, ContextHandlerCollection server, public static void startWebApp(RouterContext ctx, ContextHandlerCollection server,
String appName, String warPath) throws Exception { String appName, String warPath) throws Exception {
File tmpdir = new SecureDirectory(ctx.getTempDir(), "jetty-work-" + appName + ctx.random().nextInt()); File tmpdir = new SecureDirectory(ctx.getTempDir(), "jetty-work-" + appName + ctx.random().nextInt());
WebAppContext wac = addWebApp(ctx, server, appName, warPath, tmpdir); WebAppContext wac = addWebApp(ctx, server, appName, warPath, tmpdir);
@ -138,8 +139,9 @@ public class WebAppStarter {
/** /**
* Stop it and remove the context. * Stop it and remove the context.
* Throws just about anything, caller would be wise to catch Throwable * Throws just about anything, caller would be wise to catch Throwable
* @since public since 0.9.33, was package private
*/ */
static void stopWebApp(String appName) { public static void stopWebApp(String appName) {
ContextHandler wac = getWebApp(appName); ContextHandler wac = getWebApp(appName);
if (wac == null) if (wac == null)
return; return;
@ -156,7 +158,8 @@ public class WebAppStarter {
} catch (IllegalStateException ise) {} } catch (IllegalStateException ise) {}
} }
static boolean isWebAppRunning(String appName) { /** @since public since 0.9.33; was package private */
public static boolean isWebAppRunning(String appName) {
ContextHandler wac = getWebApp(appName); ContextHandler wac = getWebApp(appName);
if (wac == null) if (wac == null)
return false; return false;
@ -182,8 +185,11 @@ public class WebAppStarter {
return null; return null;
} }
/** see comments in ConfigClientsHandler */ /**
static ContextHandlerCollection getConsoleServer() { * See comments in ConfigClientsHandler
* @since public since 0.9.33, was package private
*/
public static ContextHandlerCollection getConsoleServer() {
Server s = RouterConsoleRunner.getConsoleServer(); Server s = RouterConsoleRunner.getConsoleServer();
if (s == null) if (s == null)
return null; return null;

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
/* /*
* free (adj.): unencumbered; not under the control of others * free (adj.): unencumbered; not under the control of others
* Written by jrandom in 2003 and released into the public domain * Written by jrandom in 2003 and released into the public domain
@ -20,6 +20,7 @@ import net.i2p.data.DataHelper;
import net.i2p.data.Hash; import net.i2p.data.Hash;
import net.i2p.router.RouterContext; import net.i2p.router.RouterContext;
import net.i2p.router.Banlist; import net.i2p.router.Banlist;
import net.i2p.router.web.Messages;
/** /**
* Moved from Banlist.java * Moved from Banlist.java

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -6,6 +6,7 @@ import java.io.IOException;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.util.FileUtil; import net.i2p.util.FileUtil;
import net.i2p.router.crypto.FamilyKeyCrypto; import net.i2p.router.crypto.FamilyKeyCrypto;
import net.i2p.router.web.HelperBase;
/** /**

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -15,6 +15,7 @@ import javax.servlet.ServletResponse;
import net.i2p.I2PAppContext; import net.i2p.I2PAppContext;
import net.i2p.data.Base64; import net.i2p.data.Base64;
import net.i2p.router.web.NavHelper;
import net.i2p.util.FileUtil; import net.i2p.util.FileUtil;

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
@ -10,6 +10,7 @@ import java.util.Set;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade; import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
import net.i2p.router.web.FormHandler;
/** /**
* Handler to deal with form submissions from the advanced config form and act * Handler to deal with form submissions from the advanced config form and act

View File

@ -1,9 +1,10 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.util.Map; import java.util.Map;
import java.util.TreeMap; import java.util.TreeMap;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.web.HelperBase;
public class ConfigAdvancedHelper extends HelperBase { public class ConfigAdvancedHelper extends HelperBase {
static final String PROP_FLOODFILL_PARTICIPANT = "router.floodfillParticipant"; static final String PROP_FLOODFILL_PARTICIPANT = "router.floodfillParticipant";

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
import java.io.File; import java.io.File;
@ -24,6 +24,15 @@ import net.i2p.router.startup.ClientAppConfig;
import net.i2p.router.startup.LoadClientAppsJob; import net.i2p.router.startup.LoadClientAppsJob;
import net.i2p.router.update.ConsoleUpdateManager; import net.i2p.router.update.ConsoleUpdateManager;
import static net.i2p.update.UpdateType.*; import static net.i2p.update.UpdateType.*;
import net.i2p.router.web.ConfigUpdateHandler;
import net.i2p.router.web.ConsolePasswordManager;
import net.i2p.router.web.FormHandler;
import net.i2p.router.web.Messages;
import net.i2p.router.web.NewsHelper;
import net.i2p.router.web.PluginStarter;
import net.i2p.router.web.RouterConsoleRunner;
import net.i2p.router.web.UpdateHandler;
import net.i2p.router.web.WebAppStarter;
import net.i2p.util.SecureFileOutputStream; import net.i2p.util.SecureFileOutputStream;
import net.i2p.util.PortMapper; import net.i2p.util.PortMapper;
@ -529,7 +538,7 @@ public class ConfigClientsHandler extends FormHandler {
} }
// So that update() will post a status to the summary bar before we reload // So that update() will post a status to the summary bar before we reload
try { try {
Thread.sleep(1000); Thread.sleep(5000);
} catch (InterruptedException ie) {} } catch (InterruptedException ie) {}
} }

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.text.Collator; import java.text.Collator;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -18,6 +18,11 @@ import net.i2p.data.DataHelper;
import net.i2p.router.client.ClientManagerFacadeImpl; import net.i2p.router.client.ClientManagerFacadeImpl;
import net.i2p.router.startup.ClientAppConfig; import net.i2p.router.startup.ClientAppConfig;
import net.i2p.router.startup.LoadClientAppsJob; import net.i2p.router.startup.LoadClientAppsJob;
import net.i2p.router.web.HelperBase;
import net.i2p.router.web.Messages;
import net.i2p.router.web.PluginStarter;
import net.i2p.router.web.RouterConsoleRunner;
import net.i2p.router.web.WebAppStarter;
import net.i2p.util.Addresses; import net.i2p.util.Addresses;
public class ConfigClientsHelper extends HelperBase { public class ConfigClientsHelper extends HelperBase {
@ -389,10 +394,6 @@ public class ConfigClientsHelper extends HelperBase {
* There's a lot worse things a plugin could do but... * There's a lot worse things a plugin could do but...
*/ */
public static String stripHTML(Properties props, String key) { public static String stripHTML(Properties props, String key) {
String orig = props.getProperty(key); return PluginStarter.stripHTML(props, key);
if (orig == null) return null;
String t1 = orig.replace('<', ' ');
String rv = t1.replace('>', ' ');
return rv;
} }
} }

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.File; import java.io.File;
import java.io.InputStream; import java.io.InputStream;
@ -14,6 +14,7 @@ import java.util.Map;
import net.i2p.crypto.CertUtil; import net.i2p.crypto.CertUtil;
import net.i2p.crypto.KeyStoreUtil; import net.i2p.crypto.KeyStoreUtil;
import net.i2p.router.crypto.FamilyKeyCrypto; import net.i2p.router.crypto.FamilyKeyCrypto;
import net.i2p.router.web.FormHandler;
import net.i2p.util.SecureDirectory; import net.i2p.util.SecureDirectory;
/** /**

View File

@ -1,6 +1,7 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import net.i2p.router.crypto.FamilyKeyCrypto; import net.i2p.router.crypto.FamilyKeyCrypto;
import net.i2p.router.web.HelperBase;
/** /**
* @since 0.9.25 * @since 0.9.25

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
@ -6,6 +6,8 @@ import java.util.Iterator;
import java.util.Set; import java.util.Set;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.web.App;
import net.i2p.router.web.FormHandler;
/** /**
* Simple home page configuration. * Simple home page configuration.
@ -52,7 +54,7 @@ public class ConfigHomeHandler extends FormHandler {
return; return;
} }
String config = _context.getProperty(prop, dflt); String config = _context.getProperty(prop, dflt);
Collection<HomeHelper.App> apps; Collection<App> apps;
if ("3".equals(group)) if ("3".equals(group))
apps = HomeHelper.buildSearchApps(config); apps = HomeHelper.buildSearchApps(config);
else else
@ -73,13 +75,13 @@ public class ConfigHomeHandler extends FormHandler {
//url = DataHelper.escapeHTML(url).replace(",", "&#44;"); //url = DataHelper.escapeHTML(url).replace(",", "&#44;");
name = name.replace(",", "."); name = name.replace(",", ".");
url = url.replace(",", "."); // fail url = url.replace(",", "."); // fail
HomeHelper.App app = null; App app = null;
if ("1".equals(group)) if ("1".equals(group))
app = new HomeHelper.App(name, "", url, "/themes/console/images/eepsite.png"); app = new App(name, "", url, "/themes/console/images/eepsite.png");
else if ("2".equals(group)) else if ("2".equals(group))
app = new HomeHelper.App(name, "", url, "/themes/console/images/title_window.png"); app = new App(name, "", url, "/themes/console/images/title_window.png");
else else
app = new HomeHelper.App(name, "", url, "/themes/console/images/question.png"); app = new App(name, "", url, "/themes/console/images/question.png");
apps.add(app); apps.add(app);
addFormNotice(_t("Added") + ": " + app.name); addFormNotice(_t("Added") + ": " + app.name);
} else { } else {
@ -94,8 +96,8 @@ public class ConfigHomeHandler extends FormHandler {
k = k.substring(7); k = k.substring(7);
toDelete.add(k); toDelete.add(k);
} }
for (Iterator<HomeHelper.App> iter = apps.iterator(); iter.hasNext(); ) { for (Iterator<App> iter = apps.iterator(); iter.hasNext(); ) {
HomeHelper.App app = iter.next(); App app = iter.next();
if (toDelete.contains(app.name)) { if (toDelete.contains(app.name)) {
iter.remove(); iter.remove();
addFormNotice(_t("Removed") + ": " + app.name); addFormNotice(_t("Removed") + ": " + app.name);

View File

@ -1,8 +1,9 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import net.i2p.data.DataFormatException; import net.i2p.data.DataFormatException;
import net.i2p.data.Hash; import net.i2p.data.Hash;
import net.i2p.data.SessionKey; import net.i2p.data.SessionKey;
import net.i2p.router.web.FormHandler;
import net.i2p.util.ConvertToHash; import net.i2p.util.ConvertToHash;
/** /**

View File

@ -1,8 +1,10 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.io.StringWriter; import java.io.StringWriter;
import net.i2p.router.web.HelperBase;
public class ConfigKeyringHelper extends HelperBase { public class ConfigKeyringHelper extends HelperBase {
public ConfigKeyringHelper() {} public ConfigKeyringHelper() {}

View File

@ -1,10 +1,11 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.util.Properties; import java.util.Properties;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.web.FormHandler;
import net.i2p.util.LogManager; import net.i2p.util.LogManager;
/** /**

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
@ -7,6 +7,7 @@ import java.util.Set;
import java.util.TreeSet; import java.util.TreeSet;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.web.HelperBase;
import net.i2p.util.Log; import net.i2p.util.Log;
public class ConfigLoggingHelper extends HelperBase { public class ConfigLoggingHelper extends HelperBase {

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.text.Collator; import java.text.Collator;
@ -8,6 +8,10 @@ import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import net.i2p.router.web.HelperBase;
import net.i2p.router.web.Messages;
import net.i2p.router.web.PluginStarter;
/** /**
* Render the configuration menu at the top of all the config pages. * Render the configuration menu at the top of all the config pages.
* refactored from confignav.jsp to reduce size and make translation easier * refactored from confignav.jsp to reduce size and make translation easier

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -15,6 +15,7 @@ import net.i2p.router.transport.TransportManager;
import net.i2p.router.transport.TransportUtil; import net.i2p.router.transport.TransportUtil;
import net.i2p.router.transport.udp.UDPTransport; import net.i2p.router.transport.udp.UDPTransport;
import net.i2p.router.web.ConfigServiceHandler; import net.i2p.router.web.ConfigServiceHandler;
import net.i2p.router.web.FormHandler;
import net.i2p.util.Addresses; import net.i2p.util.Addresses;
/** /**

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
@ -12,6 +12,7 @@ import net.i2p.router.Router;
import net.i2p.router.transport.TransportManager; import net.i2p.router.transport.TransportManager;
import net.i2p.router.transport.TransportUtil; import net.i2p.router.transport.TransportUtil;
import net.i2p.router.transport.udp.UDPTransport; import net.i2p.router.transport.udp.UDPTransport;
import net.i2p.router.web.HelperBase;
import net.i2p.util.Addresses; import net.i2p.util.Addresses;
/** /**

View File

@ -1,8 +1,9 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import net.i2p.data.Hash; import net.i2p.data.Hash;
import net.i2p.data.Base64; import net.i2p.data.Base64;
import net.i2p.router.peermanager.PeerProfile; import net.i2p.router.peermanager.PeerProfile;
import net.i2p.router.web.FormHandler;
/** /**
* *

View File

@ -1,8 +1,10 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.io.StringWriter; import java.io.StringWriter;
import net.i2p.router.web.HelperBase;
public class ConfigPeerHelper extends HelperBase { public class ConfigPeerHelper extends HelperBase {
public ConfigPeerHelper() {} public ConfigPeerHelper() {}

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.InputStream; import java.io.InputStream;
import java.io.IOException; import java.io.IOException;
@ -11,6 +11,8 @@ import java.util.Map;
import net.i2p.router.networkdb.reseed.ReseedChecker; import net.i2p.router.networkdb.reseed.ReseedChecker;
import net.i2p.router.networkdb.reseed.Reseeder; import net.i2p.router.networkdb.reseed.Reseeder;
import net.i2p.router.web.FormHandler;
import net.i2p.router.web.Messages;
/** /**
* @since 0.8.3 * @since 0.8.3

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -6,6 +6,7 @@ import java.util.List;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import net.i2p.router.networkdb.reseed.Reseeder; import net.i2p.router.networkdb.reseed.Reseeder;
import net.i2p.router.web.HelperBase;
/** /**
* @since 0.8.3 * @since 0.8.3

View File

@ -1,8 +1,11 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.Router; import net.i2p.router.Router;
import net.i2p.router.RouterContext; import net.i2p.router.RouterContext;
import net.i2p.router.web.ConfigServiceHandler;
import net.i2p.router.web.ContextHelper;
import net.i2p.router.web.Messages;
import net.i2p.util.RandomSource; import net.i2p.util.RandomSource;
/** /**

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -6,6 +6,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import net.i2p.router.web.FormHandler;
import net.i2p.stat.StatManager; import net.i2p.stat.StatManager;
/** /**

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.text.Collator; import java.text.Collator;
import java.util.ArrayList; import java.util.ArrayList;
@ -11,6 +11,8 @@ import java.util.SortedSet;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.util.TreeMap; import java.util.TreeMap;
import net.i2p.router.web.HelperBase;
import net.i2p.router.web.StatSummarizer;
import net.i2p.stat.FrequencyStat; import net.i2p.stat.FrequencyStat;
import net.i2p.stat.Rate; import net.i2p.stat.Rate;
import net.i2p.stat.RateStat; import net.i2p.stat.RateStat;

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
@ -7,6 +7,9 @@ import java.util.Set;
import java.util.TreeMap; import java.util.TreeMap;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.web.CSSHelper;
import net.i2p.router.web.FormHandler;
/** /**
* Simple summary bar configuration. * Simple summary bar configuration.

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -6,6 +6,7 @@ import java.util.Map;
import net.i2p.data.DataFormatException; import net.i2p.data.DataFormatException;
import net.i2p.data.Hash; import net.i2p.data.Hash;
import net.i2p.router.TunnelPoolSettings; import net.i2p.router.TunnelPoolSettings;
import net.i2p.router.web.FormHandler;
import net.i2p.util.Log; import net.i2p.util.Log;
/** /**

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.util.Properties; import java.util.Properties;
import java.util.Set; import java.util.Set;
@ -6,6 +6,7 @@ import java.util.Set;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.data.Destination; import net.i2p.data.Destination;
import net.i2p.router.TunnelPoolSettings; import net.i2p.router.TunnelPoolSettings;
import net.i2p.router.web.HelperBase;
public class ConfigTunnelsHelper extends HelperBase { public class ConfigTunnelsHelper extends HelperBase {
private static final String HOP = "hop"; private static final String HOP = "hop";

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -6,6 +6,11 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.web.CSSHelper;
import net.i2p.router.web.ConsolePasswordManager;
import net.i2p.router.web.RouterConsoleRunner;
import net.i2p.router.web.FormHandler;
/** set the theme */ /** set the theme */
public class ConfigUIHandler extends FormHandler { public class ConfigUIHandler extends FormHandler {

View File

@ -1,10 +1,16 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.File; import java.io.File;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.TreeSet; import java.util.TreeSet;
import net.i2p.router.web.CSSHelper;
import net.i2p.router.web.ConsolePasswordManager;
import net.i2p.router.web.HelperBase;
import net.i2p.router.web.Messages;
import net.i2p.router.web.RouterConsoleRunner;
public class ConfigUIHelper extends HelperBase { public class ConfigUIHelper extends HelperBase {
public String getSettings() { public String getSettings() {
@ -56,8 +62,6 @@ public class ConfigUIHelper extends HelperBase {
return buf.toString(); return buf.toString();
} }
static final String PROP_THEME_PFX = "routerconsole.theme.";
/** @return standard and user-installed themes, sorted (untranslated) */ /** @return standard and user-installed themes, sorted (untranslated) */
private Set<String> themeSet() { private Set<String> themeSet() {
Set<String> rv = new TreeSet<String>(); Set<String> rv = new TreeSet<String>();
@ -75,8 +79,8 @@ public class ConfigUIHelper extends HelperBase {
// user themes // user themes
Set<String> props = _context.getPropertyNames(); Set<String> props = _context.getPropertyNames();
for (String prop : props) { for (String prop : props) {
if (prop.startsWith(PROP_THEME_PFX) && prop.length() > PROP_THEME_PFX.length()) if (prop.startsWith(CSSHelper.PROP_THEME_PFX) && prop.length() > CSSHelper.PROP_THEME_PFX.length())
rv.add(prop.substring(PROP_THEME_PFX.length())); rv.add(prop.substring(CSSHelper.PROP_THEME_PFX.length()));
} }
return rv; return rv;
} }

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.io.Writer; import java.io.Writer;
@ -16,6 +16,8 @@ import java.util.TreeMap;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.util.EventLog; import net.i2p.router.util.EventLog;
import net.i2p.router.web.CSSHelper;
import net.i2p.router.web.FormHandler;
import net.i2p.util.SystemVersion; import net.i2p.util.SystemVersion;
/** /**

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@ -18,6 +18,8 @@ import java.util.jar.Manifest;
import net.i2p.crypto.SHA256Generator; import net.i2p.crypto.SHA256Generator;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.web.HelperBase;
import net.i2p.router.web.PluginStarter;
import net.i2p.util.FileUtil; import net.i2p.util.FileUtil;
import net.i2p.util.SystemVersion; import net.i2p.util.SystemVersion;

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
@ -11,6 +11,13 @@ import java.util.Set;
import java.util.TreeSet; import java.util.TreeSet;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.web.CSSHelper;
import net.i2p.router.web.FormHandler;
import static net.i2p.router.web.GraphConstants.*;
import net.i2p.router.web.HelperBase;
import net.i2p.router.web.NavHelper;
import net.i2p.router.web.StatSummarizer;
import net.i2p.router.web.SummaryListener;
import net.i2p.stat.Rate; import net.i2p.stat.Rate;
/** /**
@ -34,13 +41,9 @@ public class GraphHelper extends FormHandler {
private static final String PROP_PERIODS = "routerconsole.graphPeriods"; private static final String PROP_PERIODS = "routerconsole.graphPeriods";
private static final String PROP_EVENTS = "routerconsole.graphEvents"; private static final String PROP_EVENTS = "routerconsole.graphEvents";
private static final String PROP_LEGEND = "routerconsole.graphHideLegend"; private static final String PROP_LEGEND = "routerconsole.graphHideLegend";
public static final int DEFAULT_X = 400;
public static final int DEFAULT_Y = 100;
private static final int DEFAULT_REFRESH = 5*60; private static final int DEFAULT_REFRESH = 5*60;
private static final int DEFAULT_PERIODS = 60; private static final int DEFAULT_PERIODS = 60;
private static final boolean DEFAULT_LEGEND = false; private static final boolean DEFAULT_LEGEND = false;
static final int MAX_X = 2048;
static final int MAX_Y = 1024;
private static final int MIN_X = 200; private static final int MIN_X = 200;
private static final int MIN_Y = 60; private static final int MIN_Y = 60;
private static final int MIN_C = 20; private static final int MIN_C = 20;

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collection; import java.util.Collection;
@ -9,6 +9,11 @@ import java.util.TreeSet;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.RouterContext; import net.i2p.router.RouterContext;
import net.i2p.router.web.App;
import net.i2p.router.web.ConfigUpdateHandler;
import net.i2p.router.web.HelperBase;
import net.i2p.router.web.Messages;
import net.i2p.router.web.NavHelper;
import net.i2p.util.PortMapper; import net.i2p.util.PortMapper;
/** /**
@ -250,20 +255,6 @@ public class HomeHelper extends HelperBase {
return buf.toString(); return buf.toString();
} }
static class App {
public final String name;
public final String desc;
public final String url;
public final String icon;
public App(String name, String desc, String url, String icon) {
this.name = name;
this.desc = desc;
this.url = url;
this.icon = icon;
}
}
/** ignore case, current locale */ /** ignore case, current locale */
private static class AppComparator implements Comparator<App>, Serializable { private static class AppComparator implements Comparator<App>, Serializable {
public int compare(App l, App r) { public int compare(App l, App r) {

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.io.StringWriter; import java.io.StringWriter;
@ -12,6 +12,7 @@ import java.util.List;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.Job; import net.i2p.router.Job;
import net.i2p.router.JobStats; import net.i2p.router.JobStats;
import net.i2p.router.web.HelperBase;
import net.i2p.util.ObjectCounter; import net.i2p.util.ObjectCounter;
public class JobQueueHelper extends HelperBase { public class JobQueueHelper extends HelperBase {

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;
@ -11,25 +11,18 @@ import java.util.List;
import net.i2p.I2PAppContext; import net.i2p.I2PAppContext;
import net.i2p.crypto.SigType; import net.i2p.crypto.SigType;
import net.i2p.router.web.ConfigServiceHandler;
import net.i2p.router.web.HelperBase;
import net.i2p.router.web.RouterConsoleRunner;
import net.i2p.util.FileUtil; import net.i2p.util.FileUtil;
import net.i2p.util.VersionComparator;
import org.eclipse.jetty.server.Server;
import org.tanukisoftware.wrapper.WrapperManager;
public class LogsHelper extends HelperBase { public class LogsHelper extends HelperBase {
private static final String LOCATION_AVAILABLE = "3.3.7";
private static final String _jstlVersion = jstlVersion(); private static final String _jstlVersion = jstlVersion();
/** @since 0.8.12 */ /** @since 0.8.12 */
public String getJettyVersion() { public String getJettyVersion() {
return Server.getVersion(); return RouterConsoleRunner.jettyVersion();
}
/** @since 0.8.13 */
public static String jettyVersion() {
return Server.getVersion();
} }
/** @since 0.9.15 */ /** @since 0.9.15 */
@ -85,40 +78,9 @@ public class LogsHelper extends HelperBase {
_context.logManager().flush(); _context.logManager().flush();
return formatMessages(_context.logManager().getBuffer().getMostRecentCriticalMessages()); return formatMessages(_context.logManager().getBuffer().getMostRecentCriticalMessages());
} }
/**
* Does not necessarily exist.
*
* @return non-null, doesn't necessarily exist
* @since 0.9.1, public since 0.9.27
*/
public static File wrapperLogFile(I2PAppContext ctx) {
File f = null;
if (ctx.hasWrapper()) {
String wv = System.getProperty("wrapper.version");
if (wv != null && VersionComparator.comp(wv, LOCATION_AVAILABLE) >= 0) {
try {
f = WrapperManager.getWrapperLogFile();
} catch (Throwable t) {}
}
}
if (f == null || !f.exists()) {
// RouterLaunch puts the location here if no wrapper
String path = System.getProperty("wrapper.logfile");
if (path != null) {
f = new File(path);
} else {
// look in new and old places
f = new File(System.getProperty("java.io.tmpdir"), "wrapper.log");
if (!f.exists())
f = new File(ctx.getBaseDir(), "wrapper.log");
}
}
return f;
}
public String getServiceLogs() { public String getServiceLogs() {
File f = wrapperLogFile(_context); File f = ConfigServiceHandler.wrapperLogFile(_context);
String str; String str;
if (_context.hasWrapper()) { if (_context.hasWrapper()) {
// platform encoding // platform encoding

View File

@ -1,8 +1,9 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import net.i2p.crypto.SigType; import net.i2p.crypto.SigType;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.web.HelperBase;
public class NetDbHelper extends HelperBase { public class NetDbHelper extends HelperBase {
private String _routerPrefix; private String _routerPrefix;

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
/* /*
* free (adj.): unencumbered; not under the control of others * free (adj.): unencumbered; not under the control of others
* Written by jrandom in 2003 and released into the public domain * Written by jrandom in 2003 and released into the public domain
@ -36,6 +36,7 @@ import net.i2p.router.RouterContext;
import net.i2p.router.TunnelPoolSettings; import net.i2p.router.TunnelPoolSettings;
import net.i2p.router.util.HashDistance; // debug import net.i2p.router.util.HashDistance; // debug
import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade; import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
import net.i2p.router.web.Messages;
import net.i2p.util.Log; import net.i2p.util.Log;
import net.i2p.util.ObjectCounter; import net.i2p.util.ObjectCounter;
import net.i2p.util.Translate; import net.i2p.util.Translate;

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
@ -10,6 +10,7 @@ import net.i2p.CoreVersion;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.data.Hash; import net.i2p.data.Hash;
import net.i2p.router.RouterVersion; import net.i2p.router.RouterVersion;
import net.i2p.router.web.HelperBase;
public class OldConsoleHelper extends HelperBase { public class OldConsoleHelper extends HelperBase {

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
@ -20,7 +20,8 @@ import net.i2p.router.transport.ntcp.NTCPConnection;
import net.i2p.router.transport.ntcp.NTCPTransport; import net.i2p.router.transport.ntcp.NTCPTransport;
import net.i2p.router.transport.udp.PeerState; import net.i2p.router.transport.udp.PeerState;
import net.i2p.router.transport.udp.UDPTransport; import net.i2p.router.transport.udp.UDPTransport;
import static net.i2p.router.web.UDPSorters.*; import net.i2p.router.web.HelperBase;
import static net.i2p.router.web.helpers.UDPSorters.*;
import net.i2p.util.SystemVersion; import net.i2p.util.SystemVersion;

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
@ -15,6 +15,8 @@ import net.i2p.router.RouterContext;
import net.i2p.router.peermanager.DBHistory; import net.i2p.router.peermanager.DBHistory;
import net.i2p.router.peermanager.PeerProfile; import net.i2p.router.peermanager.PeerProfile;
import net.i2p.router.peermanager.ProfileOrganizer; import net.i2p.router.peermanager.ProfileOrganizer;
import net.i2p.router.web.HelperBase;
import net.i2p.router.web.Messages;
import net.i2p.stat.Rate; import net.i2p.stat.Rate;
import net.i2p.stat.RateAverages; import net.i2p.stat.RateAverages;
import net.i2p.stat.RateStat; import net.i2p.stat.RateStat;

View File

@ -1,7 +1,9 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import net.i2p.router.web.HelperBase;
public class ProfilesHelper extends HelperBase { public class ProfilesHelper extends HelperBase {
private int _full; private int _full;

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.util.Date; import java.util.Date;
@ -6,6 +6,7 @@ import net.i2p.data.DataHelper;
import net.i2p.data.router.RouterAddress; import net.i2p.data.router.RouterAddress;
import net.i2p.data.router.RouterInfo; import net.i2p.data.router.RouterInfo;
import net.i2p.data.Signature; import net.i2p.data.Signature;
import net.i2p.router.web.HelperBase;
/** /**
* Sign a statement about this router. * Sign a statement about this router.

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
/* /*
* free (adj.): unencumbered; not under the control of others * free (adj.): unencumbered; not under the control of others
* Written by jrandom in 2003 and released into the public domain * Written by jrandom in 2003 and released into the public domain

View File

@ -1,8 +1,10 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import net.i2p.router.web.HelperBase;
/** /**
* Handler to create a i2preseed.zip file * Handler to create a i2preseed.zip file
* @since 0.9.19 * @since 0.9.19

View File

@ -1,6 +1,8 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import net.i2p.router.RouterContext; import net.i2p.router.RouterContext;
import net.i2p.router.web.ContextHelper;
import net.i2p.router.web.HelperBase;
/** /**
* Handler to deal with reseed requests. * Handler to deal with reseed requests.

View File

@ -1,9 +1,10 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.util.Map; import java.util.Map;
import java.util.TreeMap; import java.util.TreeMap;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.web.HelperBase;
/** /**
* Helper for searches. * Helper for searches.

View File

@ -1,10 +1,11 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.util.Set; import java.util.Set;
import net.i2p.data.DataFormatException; import net.i2p.data.DataFormatException;
import net.i2p.data.Hash; import net.i2p.data.Hash;
import net.i2p.router.web.HelperBase;
/** /**
* Dump the peer profile data if given a full B64 peer string or prefix. * Dump the peer profile data if given a full B64 peer string or prefix.

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.io.Writer; import java.io.Writer;
@ -13,6 +13,7 @@ import java.util.TreeMap;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.router.RouterContext; import net.i2p.router.RouterContext;
import net.i2p.router.web.Messages;
import net.i2p.stat.Frequency; import net.i2p.stat.Frequency;
import net.i2p.stat.FrequencyStat; import net.i2p.stat.FrequencyStat;
import net.i2p.stat.Rate; import net.i2p.stat.Rate;

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -16,6 +16,11 @@ import net.i2p.data.DataHelper;
import net.i2p.router.RouterContext; import net.i2p.router.RouterContext;
import net.i2p.router.news.NewsEntry; import net.i2p.router.news.NewsEntry;
import net.i2p.router.news.NewsManager; import net.i2p.router.news.NewsManager;
import net.i2p.router.web.CSSHelper;
import net.i2p.router.web.Messages;
import net.i2p.router.web.NavHelper;
import net.i2p.router.web.NewsHelper;
import net.i2p.router.web.StatSummarizer;
import net.i2p.util.PortMapper; import net.i2p.util.PortMapper;
import net.i2p.util.SystemVersion; import net.i2p.util.SystemVersion;

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.text.Collator; import java.text.Collator;
@ -25,6 +25,9 @@ import net.i2p.router.TunnelPoolSettings;
import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade; import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
import net.i2p.router.networkdb.reseed.ReseedChecker; import net.i2p.router.networkdb.reseed.ReseedChecker;
import net.i2p.router.transport.TransportUtil; import net.i2p.router.transport.TransportUtil;
import net.i2p.router.web.CSSHelper;
import net.i2p.router.web.HelperBase;
import net.i2p.router.web.NewsHelper;
import net.i2p.stat.Rate; import net.i2p.stat.Rate;
import net.i2p.stat.RateStat; import net.i2p.stat.RateStat;
import net.i2p.util.PortMapper; import net.i2p.util.PortMapper;

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
@ -31,6 +31,7 @@ import net.i2p.router.peermanager.DBHistory;
import net.i2p.router.peermanager.PeerProfile; import net.i2p.router.peermanager.PeerProfile;
import net.i2p.router.tunnel.pool.TunnelPool; import net.i2p.router.tunnel.pool.TunnelPool;
import net.i2p.router.util.HashDistance; import net.i2p.router.util.HashDistance;
import net.i2p.router.web.Messages;
import net.i2p.stat.Rate; import net.i2p.stat.Rate;
import net.i2p.stat.RateAverages; import net.i2p.stat.RateAverages;
import net.i2p.stat.RateStat; import net.i2p.stat.RateStat;

View File

@ -1,8 +1,10 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.io.StringWriter; import java.io.StringWriter;
import net.i2p.router.web.HelperBase;
public class TunnelHelper extends HelperBase { public class TunnelHelper extends HelperBase {
public TunnelHelper() {} public TunnelHelper() {}

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
@ -18,6 +18,8 @@ import net.i2p.router.RouterContext;
import net.i2p.router.TunnelInfo; import net.i2p.router.TunnelInfo;
import net.i2p.router.tunnel.HopConfig; import net.i2p.router.tunnel.HopConfig;
import net.i2p.router.tunnel.pool.TunnelPool; import net.i2p.router.tunnel.pool.TunnelPool;
import net.i2p.router.web.HelperBase;
import net.i2p.router.web.Messages;
import net.i2p.stat.RateStat; import net.i2p.stat.RateStat;
/** /**

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collections; import java.util.Collections;

View File

@ -1,4 +1,4 @@
package net.i2p.router.web; package net.i2p.router.web.helpers;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;

View File

@ -0,0 +1,24 @@
<html>
<body>
<p>
Helpers and handlers for the router console user interface,
with these classes supporting the webapp in routerconsole.war.
All of these classes are packaged in routerconsole.war.
These classes are only accessible from the jsp files.
</p><p>
Most jsp pages in the console use a "Helper" or a "Renderer" class to
assist in generating the HTML.
For configuration pages that accept changes via POST, there
is additionally a "Handler" class to process the POST data.
Helpers usually extend HelperBase, and Handlers usually extend FormHandler.
</p><p>
This package was created in release 0.9.33 by moving
these classes from net.i2p.router.web to here,
and moving them from routerconsole.war to routerconsole.jar.
</p><p>
No classes contained here are part of a public API.
Subject to change.
Not for public use.
</p>
</body>
</html>

View File

@ -4,6 +4,23 @@
The router console user interface, implemented in routerconsole.jar, with these classes The router console user interface, implemented in routerconsole.jar, with these classes
supporting the webapp in routerconsole.war. supporting the webapp in routerconsole.war.
Entry point is RouterConsoleRunner, started from clients.config. Entry point is RouterConsoleRunner, started from clients.config.
</p><p>
Most jsp pages in the console use a "Helper" or a "Renderer" class to
assist in generating the HTML.
For configuration pages that accept changes via POST, there
is additionally a "Handler" class to process the POST data.
Helpers usually extend <a href="HelperBase.html">HelperBase</a>,
and Handlers usually extend <a href="FormHandler.html">FormHandler</a>.
The base classes are in this package, but most Helpers, Handlers, and Renderers are in
<a href="helpers/package-summary.html">the helpers package</a>.
</p><p>
This package was split in release 0.9.33, with most of the helpers and handlers
moved to net.i2p.router.web.console,
and moving them from routerconsole.war to routerconsole.jar.
</p><p>
No classes contained here are part of a public API.
Subject to change.
Not for public use.
</p> </p>
</body> </body>
</html> </html>

View File

@ -10,7 +10,7 @@
</head><body onload="initAjax()"> </head><body onload="initAjax()">
<%@include file="summary.jsi" %><h1><%=intl._t("Certificates")%></h1> <%@include file="summary.jsi" %><h1><%=intl._t("Certificates")%></h1>
<div class="main" id="certs"> <div class="main" id="certs">
<jsp:useBean class="net.i2p.router.web.CertHelper" id="certhelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.CertHelper" id="certhelper" scope="request" />
<jsp:setProperty name="certhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="certhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<% certhelper.storeWriter(out); %> <% certhelper.storeWriter(out); %>
<jsp:getProperty name="certhelper" property="summary" /> <jsp:getProperty name="certhelper" property="summary" />

View File

@ -12,13 +12,13 @@
<%@include file="summary.jsi" %> <%@include file="summary.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigNetHelper" id="nethelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigNetHelper" id="nethelper" scope="request" />
<jsp:setProperty name="nethelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="nethelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<h1><%=intl._t("I2P Bandwidth Configuration")%></h1> <h1><%=intl._t("I2P Bandwidth Configuration")%></h1>
<div class="main" id="config_bandwidth"> <div class="main" id="config_bandwidth">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigNetHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigNetHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<form action="" method="POST"> <form action="" method="POST">
<input type="hidden" name="nonce" value="<%=pageNonce%>"> <input type="hidden" name="nonce" value="<%=pageNonce%>">

View File

@ -12,7 +12,7 @@
<%@include file="summary.jsi" %> <%@include file="summary.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigAdvancedHelper" id="advancedhelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigAdvancedHelper" id="advancedhelper" scope="request" />
<jsp:setProperty name="advancedhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="advancedhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<h1><%=intl._t("I2P Advanced Configuration")%></h1> <h1><%=intl._t("I2P Advanced Configuration")%></h1>
@ -20,7 +20,7 @@
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigAdvancedHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigAdvancedHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<div class="configure"> <div class="configure">
<div class="wideload"> <div class="wideload">

View File

@ -17,14 +17,14 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
<%@include file="summary.jsi" %> <%@include file="summary.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigClientsHelper" id="clientshelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigClientsHelper" id="clientshelper" scope="request" />
<jsp:setProperty name="clientshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="clientshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<jsp:setProperty name="clientshelper" property="edit" value="<%=request.getParameter(\"edit\")%>" /> <jsp:setProperty name="clientshelper" property="edit" value="<%=request.getParameter(\"edit\")%>" />
<h1><%=intl._t("I2P Client Configuration")%></h1> <h1><%=intl._t("I2P Client Configuration")%></h1>
<div class="main" id="config_clients"> <div class="main" id="config_clients">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigClientsHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigClientsHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<div class="configure"> <div class="configure">
<h3 id="i2pclientconfig"><%=intl._t("Client Configuration")%>&nbsp; <h3 id="i2pclientconfig"><%=intl._t("Client Configuration")%>&nbsp;

View File

@ -11,13 +11,13 @@
<%@include file="summary.jsi" %> <%@include file="summary.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigFamilyHelper" id="familyHelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigFamilyHelper" id="familyHelper" scope="request" />
<jsp:setProperty name="familyHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="familyHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<h1><%=intl._t("I2P Router Family Configuration")%></h1> <h1><%=intl._t("I2P Router Family Configuration")%></h1>
<div class="main" id="config_family"> <div class="main" id="config_family">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigFamilyHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigFamilyHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<p class="infohelp"><%=intl._t("Routers in the same family share a family key.")%> <p class="infohelp"><%=intl._t("Routers in the same family share a family key.")%>

View File

@ -21,9 +21,9 @@ input.default {
<div class="main" id="config_homepage"> <div class="main" id="config_homepage">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigHomeHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigHomeHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<jsp:useBean class="net.i2p.router.web.HomeHelper" id="homehelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.HomeHelper" id="homehelper" scope="request" />
<jsp:setProperty name="homehelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="homehelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<h3 class="tabletitle"><%=intl._t("Default Home Page")%></h3> <h3 class="tabletitle"><%=intl._t("Default Home Page")%></h3>

View File

@ -17,14 +17,14 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
<%@include file="summary.jsi" %> <%@include file="summary.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigClientsHelper" id="clientshelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigClientsHelper" id="clientshelper" scope="request" />
<jsp:setProperty name="clientshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="clientshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<jsp:setProperty name="clientshelper" property="edit" value="<%=request.getParameter(\"edit\")%>" /> <jsp:setProperty name="clientshelper" property="edit" value="<%=request.getParameter(\"edit\")%>" />
<h1><%=intl._t("I2P Client Configuration")%></h1> <h1><%=intl._t("I2P Client Configuration")%></h1>
<div class="main" id="config_i2cp"> <div class="main" id="config_i2cp">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigClientsHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigClientsHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<div class="configure"> <div class="configure">
<h3 id="advancedclientconfig"><a name="i2cp"></a><%=intl._t("Advanced Client Interface Configuration")%></h3> <h3 id="advancedclientconfig"><a name="i2cp"></a><%=intl._t("Advanced Client Interface Configuration")%></h3>

View File

@ -14,9 +14,9 @@
<div class="main" id="config_keyring"> <div class="main" id="config_keyring">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigKeyringHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigKeyringHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigKeyringHelper" id="keyringhelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigKeyringHelper" id="keyringhelper" scope="request" />
<jsp:setProperty name="keyringhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="keyringhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<p id="keyringhelp" class="infohelp"> <p id="keyringhelp" class="infohelp">
<%=intl._t("The router keyring is used to decrypt encrypted leaseSets.")%> <%=intl._t("The router keyring is used to decrypt encrypted leaseSets.")%>

View File

@ -9,7 +9,7 @@
<script src="/js/ajax.js" type="text/javascript"></script> <script src="/js/ajax.js" type="text/javascript"></script>
<%@include file="summaryajax.jsi" %> <%@include file="summaryajax.jsi" %>
</head><body onload="initAjax()"> </head><body onload="initAjax()">
<jsp:useBean class="net.i2p.router.web.ConfigLoggingHelper" id="logginghelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigLoggingHelper" id="logginghelper" scope="request" />
<jsp:setProperty name="logginghelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="logginghelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<%@include file="summary.jsi" %> <%@include file="summary.jsi" %>
@ -17,7 +17,7 @@
<div class="main" id="config_logging"> <div class="main" id="config_logging">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigLoggingHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigLoggingHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<form action="" method="POST"> <form action="" method="POST">
<input type="hidden" name="nonce" value="<%=pageNonce%>" > <input type="hidden" name="nonce" value="<%=pageNonce%>" >

View File

@ -3,7 +3,7 @@
* Included ~10 times, keep whitespace to a minimum * Included ~10 times, keep whitespace to a minimum
*/ */
%> %>
<jsp:useBean class="net.i2p.router.web.ConfigNavHelper" id="navHelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigNavHelper" id="navHelper" scope="request" />
<jsp:setProperty name="navHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="navHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<% navHelper.storeWriter(out); %> <% navHelper.storeWriter(out); %>
<div class="confignav" id="confignav"> <div class="confignav" id="confignav">

View File

@ -11,13 +11,13 @@
<%@include file="summary.jsi" %> <%@include file="summary.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigNetHelper" id="nethelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigNetHelper" id="nethelper" scope="request" />
<jsp:setProperty name="nethelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="nethelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<h1><%=intl._t("I2P Network Configuration")%></h1> <h1><%=intl._t("I2P Network Configuration")%></h1>
<div class="main" id="config_network"> <div class="main" id="config_network">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigNetHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigNetHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<form action="" method="POST"> <form action="" method="POST">
<input type="hidden" name="nonce" value="<%=pageNonce%>" > <input type="hidden" name="nonce" value="<%=pageNonce%>" >

View File

@ -11,9 +11,9 @@
<h1><%=intl._t("I2P Peer Configuration")%></h1> <h1><%=intl._t("I2P Peer Configuration")%></h1>
<div class="main" id="config_peers"> <div class="main" id="config_peers">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigPeerHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigPeerHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigPeerHelper" id="peerhelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigPeerHelper" id="peerhelper" scope="request" />
<jsp:setProperty name="peerhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="peerhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<% String peer = ""; <% String peer = "";
if (request.getParameter("peer") != null) if (request.getParameter("peer") != null)
@ -62,7 +62,7 @@
</table> </table>
</form> </form>
<a name="banlist"> </a><h3 id="bannedpeers"><%=intl._t("Banned Peers")%></h3> <a name="banlist"> </a><h3 id="bannedpeers"><%=intl._t("Banned Peers")%></h3>
<jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ProfilesHelper" id="profilesHelper" scope="request" />
<jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<% profilesHelper.storeWriter(out); %> <% profilesHelper.storeWriter(out); %>
<jsp:getProperty name="profilesHelper" property="banlistSummary" /> <jsp:getProperty name="profilesHelper" property="banlistSummary" />

View File

@ -17,14 +17,14 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
<%@include file="summary.jsi" %> <%@include file="summary.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigClientsHelper" id="clientshelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigClientsHelper" id="clientshelper" scope="request" />
<jsp:setProperty name="clientshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="clientshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<jsp:setProperty name="clientshelper" property="edit" value="<%=request.getParameter(\"edit\")%>" /> <jsp:setProperty name="clientshelper" property="edit" value="<%=request.getParameter(\"edit\")%>" />
<h1><%=intl._t("Plugin Configuration")%></h1> <h1><%=intl._t("Plugin Configuration")%></h1>
<div class="main" id="config_plugins"> <div class="main" id="config_plugins">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigClientsHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigClientsHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<div class="configure"> <div class="configure">
<% <%

View File

@ -11,13 +11,13 @@
<%@include file="summary.jsi" %> <%@include file="summary.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigReseedHelper" id="reseedHelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigReseedHelper" id="reseedHelper" scope="request" />
<jsp:setProperty name="reseedHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="reseedHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<h1><%=intl._t("I2P Reseeding Configuration")%></h1> <h1><%=intl._t("I2P Reseeding Configuration")%></h1>
<div class="main" id="config_reseed"> <div class="main" id="config_reseed">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigReseedHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigReseedHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<p class="infohelp"> <p class="infohelp">

View File

@ -83,7 +83,7 @@
<h3 class="ptitle" id="browseronstart"><%=intl._t("Launch browser on router startup?")%></h3> <h3 class="ptitle" id="browseronstart"><%=intl._t("Launch browser on router startup?")%></h3>
<p class="infohelp"> <p class="infohelp">
<%=intl._t("I2P's main configuration interface is this web console, so for your convenience I2P can launch a web browser on startup pointing at")%> <%=intl._t("I2P's main configuration interface is this web.helpers, so for your convenience I2P can launch a web browser on startup pointing at")%>
<a href="http://127.0.0.1:7657/">http://127.0.0.1:7657/</a> .</p> <a href="http://127.0.0.1:7657/">http://127.0.0.1:7657/</a> .</p>
<hr><div class="formaction" id="browserstart"> <hr><div class="formaction" id="browserstart">
<input type="submit" class="check" name="action" value="<%=intl._t("View console on startup")%>" > <input type="submit" class="check" name="action" value="<%=intl._t("View console on startup")%>" >

View File

@ -21,12 +21,12 @@ input.default {
<div class="main" id="config_summarybar"> <div class="main" id="config_summarybar">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigSummaryHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigSummaryHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<% <%
formhandler.setMovingAction(); formhandler.setMovingAction();
%> %>
<jsp:useBean class="net.i2p.router.web.SummaryHelper" id="summaryhelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.SummaryHelper" id="summaryhelper" scope="request" />
<jsp:setProperty name="summaryhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="summaryhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<h3 class="tabletitle"><%=intl._t("Refresh Interval")%></h3> <h3 class="tabletitle"><%=intl._t("Refresh Interval")%></h3>

View File

@ -66,9 +66,9 @@ function toggleAll(category)
<div class="main" id="config_stats"> <div class="main" id="config_stats">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigStatsHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigStatsHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigStatsHelper" id="statshelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigStatsHelper" id="statshelper" scope="request" />
<jsp:setProperty name="statshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="statshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<div class="configure"> <div class="configure">
<form id="statsForm" name="statsForm" action="" method="POST"> <form id="statsForm" name="statsForm" action="" method="POST">

View File

@ -11,12 +11,12 @@
<%@include file="summary.jsi" %> <%@include file="summary.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigTunnelsHelper" id="tunnelshelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigTunnelsHelper" id="tunnelshelper" scope="request" />
<jsp:setProperty name="tunnelshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="tunnelshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<h1><%=intl._t("I2P Tunnel Configuration")%></h1> <h1><%=intl._t("I2P Tunnel Configuration")%></h1>
<div class="main" id="config_tunnels"> <div class="main" id="config_tunnels">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigTunnelsHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigTunnelsHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<p id="tunnelconfig" class="infowarn"> <p id="tunnelconfig" class="infowarn">
<%=intl._t("The default settings work for most people.")%> <%=intl._t("The default settings work for most people.")%>

View File

@ -19,7 +19,7 @@ input.default {
<%@include file="summary.jsi" %> <%@include file="summary.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigUIHelper" id="uihelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigUIHelper" id="uihelper" scope="request" />
<jsp:setProperty name="uihelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="uihelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<h1><%=uihelper._t("I2P UI Configuration")%></h1> <h1><%=uihelper._t("I2P UI Configuration")%></h1>
@ -27,7 +27,7 @@ input.default {
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigUIHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigUIHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<h3 id="themeheading"><%=uihelper._t("Router Console Theme")%></h3> <h3 id="themeheading"><%=uihelper._t("Router Console Theme")%></h3>
<form action="" method="POST"> <form action="" method="POST">

View File

@ -17,14 +17,14 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
<%@include file="summary.jsi" %> <%@include file="summary.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigClientsHelper" id="clientshelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigClientsHelper" id="clientshelper" scope="request" />
<jsp:setProperty name="clientshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="clientshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<jsp:setProperty name="clientshelper" property="edit" value="<%=request.getParameter(\"edit\")%>" /> <jsp:setProperty name="clientshelper" property="edit" value="<%=request.getParameter(\"edit\")%>" />
<h1><%=intl._t("WebApp Configuration")%></h1> <h1><%=intl._t("WebApp Configuration")%></h1>
<div class="main" id="config_webapps"> <div class="main" id="config_webapps">
<%@include file="confignav.jsi" %> <%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigClientsHandler" id="formhandler" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.ConfigClientsHandler" id="formhandler" scope="request" />
<%@include file="formhandler.jsi" %> <%@include file="formhandler.jsi" %>
<div class="configure"> <div class="configure">
<h3 id="webappconfig"><a name="webapp"></a><%=intl._t("WebApp Configuration")%></h3><p> <h3 id="webappconfig"><a name="webapp"></a><%=intl._t("WebApp Configuration")%></h3><p>

View File

@ -1,4 +1,4 @@
<jsp:useBean class="net.i2p.router.web.ReseedGenerator" id="gen" scope="request" /><jsp:setProperty name="gen" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /><% <jsp:useBean class="net.i2p.router.web.helpers.ReseedGenerator" id="gen" scope="request" /><jsp:setProperty name="gen" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /><%
/* /*
* USE CAUTION WHEN EDITING * USE CAUTION WHEN EDITING
* Trailing whitespace OR NEWLINE on the last line will cause * Trailing whitespace OR NEWLINE on the last line will cause

View File

@ -1,5 +1,5 @@
<%@page contentType="text/plain" <%@page contentType="text/plain"
%><jsp:useBean id="helper" class="net.i2p.router.web.StatHelper" %><jsp:useBean id="helper" class="net.i2p.router.web.helpers.StatHelper"
/><jsp:setProperty name="helper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /><jsp:setProperty name="helper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>"
/><jsp:setProperty name="helper" property="peer" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter(\"peer\"))%>" /><jsp:setProperty name="helper" property="peer" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter(\"peer\"))%>"
/><% helper.storeWriter(out); /><% helper.storeWriter(out);

View File

@ -61,7 +61,7 @@
<p> <p>
<b>I2P version:</b> <%=net.i2p.router.RouterVersion.FULL_VERSION%><br> <b>I2P version:</b> <%=net.i2p.router.RouterVersion.FULL_VERSION%><br>
<b>Java version:</b> <%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%> (<%=System.getProperty("java.runtime.name")%> <%=System.getProperty("java.runtime.version")%>)<br> <b>Java version:</b> <%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%> (<%=System.getProperty("java.runtime.name")%> <%=System.getProperty("java.runtime.version")%>)<br>
<jsp:useBean class="net.i2p.router.web.LogsHelper" id="logsHelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.LogsHelper" id="logsHelper" scope="request" />
<jsp:setProperty name="logsHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="logsHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<jsp:getProperty name="logsHelper" property="unavailableCrypto" /> <jsp:getProperty name="logsHelper" property="unavailableCrypto" />
<b>Wrapper version:</b> <%=System.getProperty("wrapper.version", "none")%><br> <b>Wrapper version:</b> <%=System.getProperty("wrapper.version", "none")%><br>

View File

@ -6,7 +6,7 @@
<html><head> <html><head>
<%@include file="css.jsi" %> <%@include file="css.jsi" %>
<%=intl.title("events")%> <%=intl.title("events")%>
<jsp:useBean class="net.i2p.router.web.EventLogHelper" id="eventHelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.EventLogHelper" id="eventHelper" scope="request" />
<jsp:setProperty name="eventHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="eventHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<% /* GraphHelper sets the defaults in setContextId, so setting the properties must be after the context */ %> <% /* GraphHelper sets the defaults in setContextId, so setting the properties must be after the context */ %>
<jsp:setProperty name="eventHelper" property="*" /> <jsp:setProperty name="eventHelper" property="*" />

View File

@ -6,7 +6,7 @@
* Included ~15 times, keep whitespace to a minimum * Included ~15 times, keep whitespace to a minimum
* *
* Include this directly after the line: * Include this directly after the line:
* <jsp:useBean class="net.i2p.router.web.xxxHandler" id="formhandler" scope="request" /> * <jsp:useBean class="net.i2p.router.web.helpers.xxxHandler" id="formhandler" scope="request" />
*/ */
// This initializes the RouterContext - must be the first thing // This initializes the RouterContext - must be the first thing

View File

@ -5,7 +5,7 @@
<html><head> <html><head>
<%@include file="css.jsi" %> <%@include file="css.jsi" %>
<%=intl.title("graphs")%> <%=intl.title("graphs")%>
<jsp:useBean class="net.i2p.router.web.GraphHelper" id="graphHelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.GraphHelper" id="graphHelper" scope="request" />
<jsp:setProperty name="graphHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="graphHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<% /* GraphHelper sets the defaults in setContextId, so setting the properties must be after the context */ %> <% /* GraphHelper sets the defaults in setContextId, so setting the properties must be after the context */ %>
<jsp:setProperty name="graphHelper" property="*" /> <jsp:setProperty name="graphHelper" property="*" />

View File

@ -6,7 +6,7 @@
<html><head> <html><head>
<%@include file="css.jsi" %> <%@include file="css.jsi" %>
<%=intl.title("graphs")%> <%=intl.title("graphs")%>
<jsp:useBean class="net.i2p.router.web.GraphHelper" id="graphHelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.helpers.GraphHelper" id="graphHelper" scope="request" />
<jsp:setProperty name="graphHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <jsp:setProperty name="graphHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<% /* GraphHelper sets the defaults in setContextId, so setting the properties must be after the context */ %> <% /* GraphHelper sets the defaults in setContextId, so setting the properties must be after the context */ %>
<jsp:setProperty name="graphHelper" property="*" /> <jsp:setProperty name="graphHelper" property="*" />

Some files were not shown because too many files have changed in this diff Show More