- Enable new NewsManager to load/store feed items on disk by UUID
- News items are stored forever, not lost when they are removed from feed
- News read in once at startup, not at every summary bar refresh
- Convert old initialNews.xml and news.xml to NewsEntry format
- Limit display to 2 news items in summary bar, /home and /console
- New /news page to show all news
Full version is used as the su3 version.
Uses same su3 certs as release updates. Users may add additional certs
to ~/.i2p/certificates/router/ as necessary.
Copy echelon's reseed key for use as a router signer.
Unsigned update remains a separate option for now.
Various update subsystem cleanups.
- Move multipart form support from susimail to jetty-i2p.jar
so console can use it
- Add multipart form support to formhandler.jsi and FormHandler.java
Reseed:
- Fix zip magic number
- Finish manual reseed from local file
package.html files for jetty-i2p.jar
- Add form to manually reseed from zip or su3 URL
(result status not yet working)
- Add form to manually reseed from local zip or su3 file
(not yet working, needs multipart/form-date moved from susimail)
- Add form to create reseed zip file to share
(working)
- Backend support and refactoring in reseed code
Added:
nativeJbigiVersion()
nativeGMPMajorVersion()
nativeGMPMinorVersion()
nativeGMPPatchVersion()
nativeModInverse()
nativeModPowCT()
Support negative vaules in conversion functions
Support negative base value in modPow()
Throw ArithmeticException for bad arguments rather than crashing
Switch to GMP 6.0.0
New build targets
NativeBigInteger changes:
Test improvements
Version reporting
Crypto changes:
Use constant time modPow() for signing and decryption
Use native modInverse()
XSSFilter patch from str4d:
XSSFilter and XSSRequestWrapper were from http://ricardozuasti.com/2012/stronger-anti-cross-site-scripting-xss-filter-for-java-web-apps/
No provided license, but it is clearly intended for public consumption.
But most of it is boilerplate provided by the Servlet Filter system.
In fact, now that I have stripped out his JS-specific patterns and replaced it with the whitelist,
it is effectively identical to what I would have written from scratch.