diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbHelper.java index 5cf8a80db5..4b34200b4d 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbHelper.java @@ -6,9 +6,14 @@ import java.util.Locale; import net.i2p.crypto.SigType; import net.i2p.data.DataHelper; import net.i2p.util.SystemVersion; -import net.i2p.router.web.HelperBase; +import net.i2p.router.web.FormHandler; -public class NetDbHelper extends HelperBase { +/** + * /netdb + * A FormHandler since 0.9.38. + * Most output is generated in NetDbRenderer and SybilRender. + */ +public class NetDbHelper extends FormHandler { private String _routerPrefix; private String _version; private String _country; @@ -20,6 +25,8 @@ public class NetDbHelper extends HelperBase { private boolean _debug; private boolean _graphical; private SigType _type; + private String _newNonce; + private boolean _postOK; private static final int DEFAULT_LIMIT = SystemVersion.isARM() ? 250 : 500; private static final int DEFAULT_PAGE = 0; @@ -194,6 +201,25 @@ public class NetDbHelper extends HelperBase { public void allowGraphical() { _graphical = true; } + + /** + * Override to save it + * @since 0.9.38 + */ + @Override + public String getNewNonce() { + _newNonce = super.getNewNonce(); + return _newNonce; + } + + /** + * Now we're a FormHandler + * @since 0.9.38 + */ + protected void processForm() { + _postOK = "Run new analysis".equals(_action) || + "Review analysis".equals(_action); + } /** * storeWriter() must be called previously @@ -205,19 +231,24 @@ public class NetDbHelper extends HelperBase { if (_routerPrefix != null || _version != null || _country != null || _family != null || _caps != null || _ip != null || _sybil != null || _port != 0 || _type != null || _mtu != null || _ipv6 != null || - _ssucaps != null || _transport != null || _cost != 0) + _ssucaps != null || _transport != null || _cost != 0) { renderer.renderRouterInfoHTML(_out, _limit, _page, _routerPrefix, _version, _country, _family, _caps, _ip, _sybil, _port, _type, _mtu, _ipv6, _ssucaps, _transport, _cost); - else if (_lease) + } else if (_lease) { renderer.renderLeaseSetHTML(_out, _debug); - else if (_full == 3) - (new SybilRenderer(_context)).getNetDbSummary(_out, _mode, _date); - else if (_full == 4) + } else if (_full == 3) { + if (_mode == 12 && !_postOK) + _mode = 0; + else if (_mode == 13 && !_postOK) + _mode = 14; + (new SybilRenderer(_context)).getNetDbSummary(_out, _newNonce, _mode, _date); + } else if (_full == 4) { renderLookupForm(); - else + } else { renderer.renderStatusHTML(_out, _limit, _page, _full); + } } catch (IOException ioe) { ioe.printStackTrace(); } @@ -292,6 +323,7 @@ public class NetDbHelper extends HelperBase { */ private void renderLookupForm() throws IOException { _out.write("