From 010dbfa6f2f669ffadbabb936117312ea0c01615 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 22 Dec 2020 12:37:47 -0500 Subject: [PATCH] Console: Move resource helper to war, doesn't work from jar --- .../src/net/i2p/router/web/ContentHelper.java | 58 ------------ .../router/web/helpers/ResourceHelper.java | 89 +++++++++++++++++++ apps/routerconsole/jsp/console.jsp | 3 +- 3 files changed, 90 insertions(+), 60 deletions(-) create mode 100644 apps/routerconsole/java/src/net/i2p/router/web/helpers/ResourceHelper.java diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java index b16768260..9c0d6abc5 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java @@ -18,7 +18,6 @@ public class ContentHelper extends HelperBase { /** * Caution, use absolute paths only for getContent() and getTextContent(), * do not assume files are in CWD. - * Use relative path for getResource(). */ public void setPage(String page) { _page = page; } @@ -114,61 +113,4 @@ public class ContentHelper extends HelperBase { return newname; return _page; } - - /** - * Convert file.ext to file_lang.ext if it exists. - * Get lang from the cgi lang param, then properties, then from the default locale. - * _context must be set to check the property. - * @return "" on error - * @since 0.9.49 - */ - public String getResource() { - if (_page == null || _page.contains("..")) - return ""; - String lang = _lang; - String page = null; - int lastdot = _page.lastIndexOf('.'); - if (lastdot <= 0) { - page = _page; - } else { - if (lang == null || lang.length() <= 0) { - if (_context != null) - lang = _context.getProperty(Messages.PROP_LANG); - if (lang == null || lang.length() <= 0) { - lang = Locale.getDefault().getLanguage(); - if (lang == null || lang.length() <= 0) - page = _page; - } - } - } - if (page == null) { - if (lang.equals("en")) - page = _page; - else - page = _page.substring(0, lastdot) + '_' + lang + _page.substring(lastdot); - } - InputStream is = ContentHelper.class.getResourceAsStream("/net/i2p/router/web/resources/" + page); - if (is == null) { - is = ContentHelper.class.getResourceAsStream("/net/i2p/router/web/resources/" + _page); - if (is == null) - return ""; - } - BufferedReader in = null; - StringBuilder buf = new StringBuilder(20000); - try { - in = new BufferedReader(new InputStreamReader(is, "UTF-8")); - String line = null; - int i = 0; - while ( (line = in.readLine()) != null) { - buf.append(line); - if (_maxLines > 0 && ++i >= _maxLines) - break; - } - } catch (IOException ioe) { - } finally { - if (in != null) try { in.close(); } catch (IOException ioe) {} - try { is.close(); } catch (IOException ioe) {} - } - return buf.toString(); - } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ResourceHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ResourceHelper.java new file mode 100644 index 000000000..bd33be08c --- /dev/null +++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ResourceHelper.java @@ -0,0 +1,89 @@ +package net.i2p.router.web.helpers; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.IOException; +import java.util.Locale; + +import net.i2p.router.web.HelperBase; +import net.i2p.router.web.Messages; + +/** + * @since 0.9.49 + */ +public class ResourceHelper extends HelperBase { + protected String _page; + private int _maxLines; + + /** + * Use relative path for getResource(). + */ + public void setPage(String page) { _page = page; } + + public void setMaxLines(String lines) { + if (lines != null) { + try { + _maxLines = Integer.parseInt(lines); + } catch (NumberFormatException nfe) { + _maxLines = -1; + } + } else { + _maxLines = -1; + } + } + + /** + * Convert file.ext to file_lang.ext if it exists. + * Get lang from the cgi lang param, then properties, then from the default locale. + * _context must be set to check the property. + * @return "" on error + */ + public String getResource() { + if (_page == null || _page.contains("..")) + return ""; + String lang = null; + String page = null; + int lastdot = _page.lastIndexOf('.'); + if (lastdot <= 0) { + page = _page; + } else { + if (_context != null) + lang = _context.getProperty(Messages.PROP_LANG); + if (lang == null || lang.length() <= 0) { + lang = Locale.getDefault().getLanguage(); + if (lang == null || lang.length() <= 0) + page = _page; + } + } + if (page == null) { + if (lang.equals("en")) + page = _page; + else + page = _page.substring(0, lastdot) + '_' + lang + _page.substring(lastdot); + } + InputStream is = ResourceHelper.class.getResourceAsStream("/net/i2p/router/web/resources/" + page); + if (is == null) { + is = ResourceHelper.class.getResourceAsStream("/net/i2p/router/web/resources/" + _page); + if (is == null) + return ""; + } + BufferedReader in = null; + StringBuilder buf = new StringBuilder(20000); + try { + in = new BufferedReader(new InputStreamReader(is, "UTF-8")); + String line = null; + int i = 0; + while ( (line = in.readLine()) != null) { + buf.append(line); + if (_maxLines > 0 && ++i >= _maxLines) + break; + } + } catch (IOException ioe) { + } finally { + if (in != null) try { in.close(); } catch (IOException ioe) {} + try { is.close(); } catch (IOException ioe) {} + } + return buf.toString(); + } +} diff --git a/apps/routerconsole/jsp/console.jsp b/apps/routerconsole/jsp/console.jsp index 497ac0c8f..6239be2a1 100644 --- a/apps/routerconsole/jsp/console.jsp +++ b/apps/routerconsole/jsp/console.jsp @@ -25,7 +25,7 @@
- +
"> <%=intl._t("> @@ -33,7 +33,6 @@

<%=intl._t("Welcome to I2P")%>

- <% java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/readme.html"); %>