* profiles.jsp: Bulletproofing, less memory usage
* Updates: Verify zip at startup before extracting * Wrapper: Take a couple fields out of the log so it's narrower
This commit is contained in:
@ -117,8 +117,12 @@ wrapper.logfile=$SYSTEM_java_io_tmpdir/wrapper.log
|
|||||||
# no need for a wrapper.java.additional line too.
|
# no need for a wrapper.java.additional line too.
|
||||||
#wrapper.logfile=$INSTALL_PATH/wrapper.log
|
#wrapper.logfile=$INSTALL_PATH/wrapper.log
|
||||||
|
|
||||||
# Format of output for the log file. (See docs for formats)
|
# Format of output for the log file.
|
||||||
wrapper.logfile.format=LPTM
|
# The format consists of the tokens 'L' for log level, 'P' for prefix, 'D' for thread,
|
||||||
|
# 'T' for time, 'Z' for millisecond time, and 'M' for message
|
||||||
|
# Unfortunately the log timezone cannot be changed, see
|
||||||
|
# http://www.nabble.com/Log-message-timezone-td23651317.html
|
||||||
|
wrapper.logfile.format=TM
|
||||||
|
|
||||||
# Log Level for log file output. (See docs for log levels)
|
# Log Level for log file output. (See docs for log levels)
|
||||||
wrapper.logfile.loglevel=INFO
|
wrapper.logfile.loglevel=INFO
|
||||||
|
@ -1109,7 +1109,11 @@ public class Router {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
System.out.println("INFO: Update file exists [" + UPDATE_FILE + "] - installing");
|
System.out.println("INFO: Update file exists [" + UPDATE_FILE + "] - installing");
|
||||||
boolean ok = FileUtil.extractZip(updateFile, _context.getBaseDir());
|
// verify the whole thing first
|
||||||
|
// we could remember this fails, and not bother restarting, but who cares...
|
||||||
|
boolean ok = FileUtil.verifyZip(updateFile);
|
||||||
|
if (ok)
|
||||||
|
ok = FileUtil.extractZip(updateFile, _context.getBaseDir());
|
||||||
if (ok)
|
if (ok)
|
||||||
System.out.println("INFO: Update installed");
|
System.out.println("INFO: Update installed");
|
||||||
else
|
else
|
||||||
@ -1132,6 +1136,7 @@ public class Router {
|
|||||||
updateFile.deleteOnExit();
|
updateFile.deleteOnExit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// exit whether ok or not
|
||||||
if (System.getProperty("wrapper.version") != null)
|
if (System.getProperty("wrapper.version") != null)
|
||||||
System.out.println("INFO: Restarting after update");
|
System.out.println("INFO: Restarting after update");
|
||||||
else
|
else
|
||||||
|
@ -111,10 +111,11 @@ class ProfileOrganizerRenderer {
|
|||||||
if (isIntegrated) buf.append(", Integrated");
|
if (isIntegrated) buf.append(", Integrated");
|
||||||
RouterInfo info = _context.netDb().lookupRouterInfoLocally(peer);
|
RouterInfo info = _context.netDb().lookupRouterInfoLocally(peer);
|
||||||
if (info != null) {
|
if (info != null) {
|
||||||
buf.append(" (").append(info.getCapabilities());
|
// prevent HTML injection in the caps and version
|
||||||
|
buf.append(" (").append(DataHelper.stripHTML(info.getCapabilities()));
|
||||||
String v = info.getOption("router.version");
|
String v = info.getOption("router.version");
|
||||||
if (v != null)
|
if (v != null)
|
||||||
buf.append(' ').append(v);
|
buf.append(' ').append(DataHelper.stripHTML(v));
|
||||||
buf.append(')');
|
buf.append(')');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,6 +154,9 @@ class ProfileOrganizerRenderer {
|
|||||||
buf.append("<td nowrap align=\"center\"><a target=\"_blank\" href=\"dumpprofile.jsp?peer=").append(peer.toBase64().substring(0,6)).append("\">profile</a>");
|
buf.append("<td nowrap align=\"center\"><a target=\"_blank\" href=\"dumpprofile.jsp?peer=").append(peer.toBase64().substring(0,6)).append("\">profile</a>");
|
||||||
buf.append(" <a href=\"configpeer.jsp?peer=").append(peer.toBase64()).append("\">+-</a></td>\n");
|
buf.append(" <a href=\"configpeer.jsp?peer=").append(peer.toBase64()).append("\">+-</a></td>\n");
|
||||||
buf.append("</tr>");
|
buf.append("</tr>");
|
||||||
|
// let's not build the whole page in memory (~500 bytes per peer)
|
||||||
|
out.write(buf.toString());
|
||||||
|
buf.setLength(0);
|
||||||
}
|
}
|
||||||
buf.append("</table>");
|
buf.append("</table>");
|
||||||
|
|
||||||
@ -189,7 +193,7 @@ class ProfileOrganizerRenderer {
|
|||||||
buf.append("</td>");
|
buf.append("</td>");
|
||||||
RouterInfo info = _context.netDb().lookupRouterInfoLocally(peer);
|
RouterInfo info = _context.netDb().lookupRouterInfoLocally(peer);
|
||||||
if (info != null)
|
if (info != null)
|
||||||
buf.append("<td align=\"center\">" + info.getCapabilities() + "</td>");
|
buf.append("<td align=\"center\">").append(DataHelper.stripHTML(info.getCapabilities())).append("</td>");
|
||||||
else
|
else
|
||||||
buf.append("<td> </td>");
|
buf.append("<td> </td>");
|
||||||
buf.append("</code></td>");
|
buf.append("</code></td>");
|
||||||
|
Reference in New Issue
Block a user