diff --git a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java
index dbed0c82e7..106c666733 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java
@@ -5,6 +5,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.IOException;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
@@ -19,7 +20,8 @@ import org.tanukisoftware.wrapper.WrapperManager;
public class LogsHelper extends HelperBase {
private static final String LOCATION_AVAILABLE = "3.3.7";
-
+ private static final String _jstlVersion = jstlVersion();
+
/** @since 0.8.12 */
public String getJettyVersion() {
return Server.getVersion();
@@ -41,6 +43,33 @@ public class LogsHelper extends HelperBase {
return buf.toString();
}
+ /**
+ * @return non-null, "n/a" on failure
+ * @since 0.9.26
+ */
+ public String getJstlVersion() {
+ return _jstlVersion;
+ }
+
+ /**
+ * @return non-null, "n/a" on failure
+ * @since 0.9.26
+ */
+ private static String jstlVersion() {
+ String rv = "n/a";
+ try {
+ Class> cls = Class.forName("org.apache.taglibs.standard.Version", true, ClassLoader.getSystemClassLoader());
+ Method getVersion = cls.getMethod("getVersion");
+ // returns "standard-taglib 1.2.0"
+ Object version = getVersion.invoke(null, (Object[]) null);
+ rv = (String) version;
+ //int sp = rv.indexOf(' ');
+ //if (sp >= 0 && rv.length() > sp + 1)
+ // rv = rv.substring(sp + 1);
+ } catch (Exception e) {}
+ return rv;
+ }
+
/**
* Does not call logManager.flush(); call getCriticalLogs() first to flush
*/
diff --git a/apps/routerconsole/jsp/logs.jsp b/apps/routerconsole/jsp/logs.jsp
index 8840545f24..293ed72edd 100644
--- a/apps/routerconsole/jsp/logs.jsp
+++ b/apps/routerconsole/jsp/logs.jsp
@@ -30,6 +30,7 @@
Wrapper version: <%=System.getProperty("wrapper.version", "none")%>
Server version:
Servlet version: <%=getServletInfo()%>
+JSTL version:
Platform: <%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%>
Processor: <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)
Jbigi: <%=net.i2p.util.NativeBigInteger.loadStatus()%>