From 4e635aa48533845bcb8c03f54bced6b60f7e474c Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sat, 16 Apr 2016 16:05:19 +0000
Subject: [PATCH] Console: Add JSTL version to /logs

---
 .../src/net/i2p/router/web/LogsHelper.java    | 31 ++++++++++++++++++-
 apps/routerconsole/jsp/logs.jsp               |  1 +
 2 files changed, 31 insertions(+), 1 deletion(-)

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 @@
 <b>Wrapper version:</b> <%=System.getProperty("wrapper.version", "none")%><br>
 <b>Server version:</b> <jsp:getProperty name="logsHelper" property="jettyVersion" /><br>
 <b>Servlet version:</b> <%=getServletInfo()%><br>
+<b>JSTL version:</b> <jsp:getProperty name="logsHelper" property="jstlVersion" /><br>
 <b>Platform:</b> <%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%><br>
 <b>Processor:</b> <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)<br>
 <b>Jbigi:</b> <%=net.i2p.util.NativeBigInteger.loadStatus()%><br>
-- 
GitLab