Changeset 2f2ff4f


Ignore:
Timestamp:
Jul 26, 2018 12:15:42 PM (21 months ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
fc817b0
Parents:
68e8e597
Message:

Console: Split netdb output into pages

Location:
apps/routerconsole
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbHelper.java

    r68e8e597 r2f2ff4f  
    66import net.i2p.crypto.SigType;
    77import net.i2p.data.DataHelper;
     8import net.i2p.util.SystemVersion;
    89import net.i2p.router.web.HelperBase;
    910
     
    1314    private String _country;
    1415    private String _family, _caps, _ip, _sybil, _mtu, _ssucaps, _ipv6, _transport;
    15     private int _full, _port, _cost;
     16    private int _full, _port, _cost, _page;
     17    private int _limit = DEFAULT_LIMIT;
    1618    private boolean _lease;
    1719    private boolean _debug;
    1820    private boolean _graphical;
    1921    private SigType _type;
     22
     23    private static final int DEFAULT_LIMIT = SystemVersion.isARM() ? 250 : 500;
     24    private static final int DEFAULT_PAGE = 0;
    2025   
    2126    private static final String titles[] =
     
    147152        _lease = _debug || "1".equals(l);
    148153    }
     154
     155    /** @since 0.9.36 */
     156    public void setLimit(String f) {
     157        try {
     158            _limit = Integer.parseInt(f);
     159            if (_limit <= 0)
     160                _limit = Integer.MAX_VALUE;
     161            else if (_limit <= 10)
     162                _limit = 10;
     163        } catch (NumberFormatException nfe) {}
     164    }
     165
     166    /** @since 0.9.36 */
     167    public void setPage(String f) {
     168        try {
     169            _page = Integer.parseInt(f) - 1;
     170            if (_page < 0)
     171                _page = 0;
     172        } catch (NumberFormatException nfe) {}
     173    }
    149174   
    150175    /**
     
    167192                _port != 0 || _type != null || _mtu != null || _ipv6 != null ||
    168193                _ssucaps != null || _transport != null || _cost != 0)
    169                 renderer.renderRouterInfoHTML(_out, _routerPrefix, _version, _country,
     194                renderer.renderRouterInfoHTML(_out, _limit, _page,
     195                                              _routerPrefix, _version, _country,
    170196                                              _family, _caps, _ip, _sybil, _port, _type,
    171197                                              _mtu, _ipv6, _ssucaps, _transport, _cost);
     
    177203                renderLookupForm();
    178204            else
    179                 renderer.renderStatusHTML(_out, _full);
     205                renderer.renderStatusHTML(_out, _limit, _page, _full);
    180206        } catch (IOException ioe) {
    181207            ioe.printStackTrace();
  • apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java

    r68e8e597 r2f2ff4f  
    8787     *  One String must be non-null
    8888     *
     89     *  @param page zero-based
    8990     *  @param routerPrefix may be null. "." for our router only
    9091     *  @param version may be null
     
    9293     *  @param family may be null
    9394     */
    94     public void renderRouterInfoHTML(Writer out, String routerPrefix, String version,
     95    public void renderRouterInfoHTML(Writer out, int pageSize, int page,
     96                                     String routerPrefix, String version,
    9597                                     String country, String family, String caps,
    9698                                     String ip, String sybil, int port, SigType type,
     
    102104            renderRouterInfo(buf, _context.router().getRouterInfo(), true, true);
    103105        } else {
     106            StringBuilder ubuf = new StringBuilder();
     107            if (routerPrefix != null)
     108                ubuf.append("&amp;r=").append(routerPrefix);
     109            if (version != null)
     110                ubuf.append("&amp;v=").append(version);
     111            if (country != null)
     112                ubuf.append("&amp;c=").append(country);
     113            if (family != null)
     114                ubuf.append("&amp;fam=").append(family);
     115            if (caps != null)
     116                ubuf.append("&amp;caps=").append(caps);
     117            if (tr != null)
     118                ubuf.append("&amp;tr=").append(tr);
     119            if (type != null)
     120                ubuf.append("&amp;type=").append(type);
     121            if (ip != null)
     122                ubuf.append("&amp;ip=").append(ip);
     123            if (port != 0)
     124                ubuf.append("&amp;port=").append(port);
     125            if (mtu != null)
     126                ubuf.append("&amp;mtu=").append(mtu);
     127            if (ipv6 != null)
     128                ubuf.append("&amp;ipv6=").append(ipv6);
     129            if (ssucaps != null)
     130                ubuf.append("&amp;ssucaps=").append(ssucaps);
     131            if (cost != 0)
     132                ubuf.append("&amp;cost=").append(cost);
     133            if (sybil != null)
     134                ubuf.append("&amp;sybil=").append(sybil);
     135            if (page > 0) {
     136                buf.append("<div class=\"netdbnotfound\">" +
     137                           "<a href=\"/netdb?pg=").append(page)
     138                   .append("&amp;ps=").append(pageSize).append(ubuf).append("\">");
     139                buf.append(_t("Previous Page"));
     140                buf.append("</a>&nbsp;&nbsp;&nbsp;");
     141                buf.append(_t("Page")).append(' ').append(page + 1);
     142                buf.append("</div>");
     143            }
    104144            boolean notFound = true;
    105145            Set<RouterInfo> routers = _context.netDb().getRouters();
     
    123163                }
    124164            }
     165            int toSkip = pageSize * page;
     166            int skipped = 0;
     167            int written = 0;
     168            boolean morePages = false;
     169            outerloop:
    125170            for (RouterInfo ri : routers) {
    126171                Hash key = ri.getIdentity().getHash();
     
    132177                    (tr != null && ri.getTargetAddress(tr) != null) ||
    133178                    (type != null && type == ri.getIdentity().getSigType())) {
     179                    if (skipped < toSkip) {
     180                        skipped++;
     181                        continue;
     182                    }
     183                    if (written++ >= pageSize) {
     184                        morePages = true;
     185                        break;
     186                    }
    134187                    renderRouterInfo(buf, ri, false, true);
    135188                    if (sybil != null)
     
    140193                        if (ipMode == 0) {
    141194                            if (ip.equals(ra.getHost())) {
     195                                if (skipped < toSkip) {
     196                                    skipped++;
     197                                    break;
     198                                }
     199                                if (written++ >= pageSize) {
     200                                    morePages = true;
     201                                    break outerloop;
     202                                }
    142203                                renderRouterInfo(buf, ri, false, true);
    143204                                if (sybil != null)
     
    149210                            String host = ra.getHost();
    150211                            if (host != null && host.startsWith(ip)) {
     212                                if (skipped < toSkip) {
     213                                    skipped++;
     214                                    break;
     215                                }
     216                                if (written++ >= pageSize) {
     217                                    morePages = true;
     218                                    break outerloop;
     219                                }
    151220                                renderRouterInfo(buf, ri, false, true);
    152221                                if (sybil != null)
     
    160229                    for (RouterAddress ra : ri.getAddresses()) {
    161230                        if (port == ra.getPort()) {
     231                            if (skipped < toSkip) {
     232                                skipped++;
     233                                break;
     234                            }
     235                            if (written++ >= pageSize) {
     236                                morePages = true;
     237                                break outerloop;
     238                            }
    162239                            renderRouterInfo(buf, ri, false, true);
    163240                            if (sybil != null)
     
    170247                    for (RouterAddress ra : ri.getAddresses()) {
    171248                        if (mtu.equals(ra.getOption("mtu"))) {
     249                            if (skipped < toSkip) {
     250                                skipped++;
     251                                break;
     252                            }
     253                            if (written++ >= pageSize) {
     254                                morePages = true;
     255                                break outerloop;
     256                            }
    172257                            renderRouterInfo(buf, ri, false, true);
    173258                            if (sybil != null)
     
    181266                        String host = ra.getHost();
    182267                        if (host != null && host.startsWith(ipv6)) {
     268                            if (skipped < toSkip) {
     269                                skipped++;
     270                                break;
     271                            }
     272                            if (written++ >= pageSize) {
     273                                morePages = true;
     274                                break outerloop;
     275                            }
    183276                            renderRouterInfo(buf, ri, false, true);
    184277                            if (sybil != null)
     
    193286                            continue;
    194287                        if (ssucaps.equals(ra.getOption("caps"))) {
     288                            if (skipped < toSkip) {
     289                                skipped++;
     290                                break;
     291                            }
     292                            if (written++ >= pageSize) {
     293                                morePages = true;
     294                                break outerloop;
     295                            }
    195296                            renderRouterInfo(buf, ri, false, true);
    196297                            if (sybil != null)
     
    203304                    for (RouterAddress ra : ri.getAddresses()) {
    204305                        if (cost == ra.getCost()) {
     306                            if (skipped < toSkip) {
     307                                skipped++;
     308                                break;
     309                            }
     310                            if (written++ >= pageSize) {
     311                                morePages = true;
     312                                break outerloop;
     313                            }
    205314                            renderRouterInfo(buf, ri, false, true);
    206315                            if (sybil != null)
     
    224333                    buf.append(_t("Family")).append(' ').append(family);
    225334                buf.append(' ').append(_t("not found in network database"));
     335                buf.append("</div>");
     336            } else if (page > 0 || morePages) {
     337                buf.append("<div class=\"netdbnotfound\">");
     338                if (page > 0) {
     339                    buf.append("<a href=\"/netdb?pg=").append(page)
     340                       .append("&amp;ps=").append(pageSize).append(ubuf).append("\">");
     341                    buf.append(_t("Previous Page"));
     342                    buf.append("</a>&nbsp;&nbsp;&nbsp;");
     343                }
     344                buf.append(_t("Page")).append(' ').append(page + 1);
     345                if (morePages) {
     346                    buf.append("&nbsp;&nbsp;&nbsp;<a href=\"/netdb?pg=").append(page + 2)
     347                       .append("&amp;ps=").append(pageSize).append(ubuf).append("\">");
     348                    buf.append(_t("Next Page"));
     349                    buf.append("</a>");
     350                }
    226351                buf.append("</div>");
    227352            }
     
    451576     *  @param mode 0: charts only; 1: full routerinfos; 2: abbreviated routerinfos
    452577     */
    453     public void renderStatusHTML(Writer out, int mode) throws IOException {
     578    public void renderStatusHTML(Writer out, int pageSize, int page, int mode) throws IOException {
    454579        if (!_context.netDb().isInitialized()) {
    455580            out.write("<div id=\"notinitialized\">");
     
    467592        Hash us = _context.routerHash();
    468593
     594        Set<RouterInfo> routers = new TreeSet<RouterInfo>(new RouterInfoComparator());
     595        routers.addAll(_context.netDb().getRouters());
     596        int toSkip = pageSize * page;
     597        boolean nextpg = routers.size() > toSkip + pageSize;
    469598        StringBuilder buf = new StringBuilder(8192);
    470         if (showStats) {
     599        if (showStats && (page > 0 || nextpg)) {
     600            buf.append("<div class=\"netdbnotfound\">");
     601            if (page > 0) {
     602                buf.append("<a href=\"/netdb?f=").append(mode).append("&amp;pg=").append(page)
     603                   .append("&amp;ps=").append(pageSize).append("\">");
     604                buf.append(_t("Previous Page"));
     605                buf.append("</a>&nbsp;&nbsp;&nbsp;");
     606            }
     607            buf.append(_t("Page")).append(' ').append(page + 1);
     608            if (nextpg) {
     609                buf.append("&nbsp;&nbsp;&nbsp;<a href=\"/netdb?f=").append(mode).append("&amp;pg=").append(page + 2)
     610                   .append("&amp;ps=").append(pageSize).append("\">");
     611                buf.append(_t("Next Page"));
     612                buf.append("</a>");
     613            }
     614            buf.append("</div>");
     615        }
     616        if (showStats && page == 0) {
    471617            RouterInfo ourInfo = _context.router().getRouterInfo();
    472618            renderRouterInfo(buf, ourInfo, true, true);
     
    479625        int[] transportCount = new int[TNAMES.length];
    480626
    481         Set<RouterInfo> routers = new TreeSet<RouterInfo>(new RouterInfoComparator());
    482         routers.addAll(_context.netDb().getRouters());
     627        int skipped = 0;
     628        int written = 0;
     629        boolean morePages = false;
    483630        for (RouterInfo ri : routers) {
    484631            Hash key = ri.getIdentity().getHash();
     
    486633            if (!isUs) {
    487634                if (showStats) {
     635                    if (skipped < toSkip) {
     636                        skipped++;
     637                        continue;
     638                    }
     639                    if (written++ >= pageSize) {
     640                        morePages = true;
     641                        break;
     642                    }
    488643                    renderRouterInfo(buf, ri, false, full);
    489644                    out.write(buf.toString());
     
    498653                transportCount[classifyTransports(ri)]++;
    499654            }
     655        }
     656        if (showStats && (page > 0 || morePages)) {
     657            buf.append("<div class=\"netdbnotfound\">");
     658            if (page > 0) {
     659                buf.append("<a href=\"/netdb?f=").append(mode).append("&amp;pg=").append(page).append("&amp;ps=").append(pageSize).append("\">");
     660                buf.append(_t("Previous Page"));
     661                buf.append("</a>&nbsp;&nbsp;&nbsp;");
     662            }
     663            buf.append(_t("Page")).append(' ').append(page + 1);
     664            if (morePages) {
     665                buf.append("&nbsp;&nbsp;&nbsp;<a href=\"/netdb?f=").append(mode).append("&amp;pg=").append(page + 2).append("&amp;ps=").append(pageSize).append("\">");
     666                buf.append(_t("Next Page"));
     667                buf.append("</a>");
     668            }
     669            buf.append("</div>");
    500670        }
    501671        long end = System.currentTimeMillis();
  • apps/routerconsole/jsp/netdb.jsp

    r68e8e597 r2f2ff4f  
    3737 <jsp:setProperty name="netdbHelper" property="ssucaps" value="<%=request.getParameter(\"ssucaps\")%>" />
    3838 <jsp:setProperty name="netdbHelper" property="transport" value="<%=request.getParameter(\"tr\")%>" />
     39 <jsp:setProperty name="netdbHelper" property="limit" value="<%=request.getParameter(\"ps\")%>" />
     40 <jsp:setProperty name="netdbHelper" property="page" value="<%=request.getParameter(\"pg\")%>" />
    3941 <jsp:getProperty name="netdbHelper" property="netDbSummary" />
    4042</div></body></html>
Note: See TracChangeset for help on using the changeset viewer.