Changeset 2f2ff4f
- Timestamp:
- Jul 26, 2018 12:15:42 PM (3 years ago)
- Branches:
- master
- Children:
- fc817b0
- Parents:
- 68e8e597
- Location:
- apps/routerconsole
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbHelper.java
r68e8e597 r2f2ff4f 6 6 import net.i2p.crypto.SigType; 7 7 import net.i2p.data.DataHelper; 8 import net.i2p.util.SystemVersion; 8 9 import net.i2p.router.web.HelperBase; 9 10 … … 13 14 private String _country; 14 15 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; 16 18 private boolean _lease; 17 19 private boolean _debug; 18 20 private boolean _graphical; 19 21 private SigType _type; 22 23 private static final int DEFAULT_LIMIT = SystemVersion.isARM() ? 250 : 500; 24 private static final int DEFAULT_PAGE = 0; 20 25 21 26 private static final String titles[] = … … 147 152 _lease = _debug || "1".equals(l); 148 153 } 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 } 149 174 150 175 /** … … 167 192 _port != 0 || _type != null || _mtu != null || _ipv6 != null || 168 193 _ssucaps != null || _transport != null || _cost != 0) 169 renderer.renderRouterInfoHTML(_out, _routerPrefix, _version, _country, 194 renderer.renderRouterInfoHTML(_out, _limit, _page, 195 _routerPrefix, _version, _country, 170 196 _family, _caps, _ip, _sybil, _port, _type, 171 197 _mtu, _ipv6, _ssucaps, _transport, _cost); … … 177 203 renderLookupForm(); 178 204 else 179 renderer.renderStatusHTML(_out, _ full);205 renderer.renderStatusHTML(_out, _limit, _page, _full); 180 206 } catch (IOException ioe) { 181 207 ioe.printStackTrace(); -
apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java
r68e8e597 r2f2ff4f 87 87 * One String must be non-null 88 88 * 89 * @param page zero-based 89 90 * @param routerPrefix may be null. "." for our router only 90 91 * @param version may be null … … 92 93 * @param family may be null 93 94 */ 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, 95 97 String country, String family, String caps, 96 98 String ip, String sybil, int port, SigType type, … … 102 104 renderRouterInfo(buf, _context.router().getRouterInfo(), true, true); 103 105 } else { 106 StringBuilder ubuf = new StringBuilder(); 107 if (routerPrefix != null) 108 ubuf.append("&r=").append(routerPrefix); 109 if (version != null) 110 ubuf.append("&v=").append(version); 111 if (country != null) 112 ubuf.append("&c=").append(country); 113 if (family != null) 114 ubuf.append("&fam=").append(family); 115 if (caps != null) 116 ubuf.append("&caps=").append(caps); 117 if (tr != null) 118 ubuf.append("&tr=").append(tr); 119 if (type != null) 120 ubuf.append("&type=").append(type); 121 if (ip != null) 122 ubuf.append("&ip=").append(ip); 123 if (port != 0) 124 ubuf.append("&port=").append(port); 125 if (mtu != null) 126 ubuf.append("&mtu=").append(mtu); 127 if (ipv6 != null) 128 ubuf.append("&ipv6=").append(ipv6); 129 if (ssucaps != null) 130 ubuf.append("&ssucaps=").append(ssucaps); 131 if (cost != 0) 132 ubuf.append("&cost=").append(cost); 133 if (sybil != null) 134 ubuf.append("&sybil=").append(sybil); 135 if (page > 0) { 136 buf.append("<div class=\"netdbnotfound\">" + 137 "<a href=\"/netdb?pg=").append(page) 138 .append("&ps=").append(pageSize).append(ubuf).append("\">"); 139 buf.append(_t("Previous Page")); 140 buf.append("</a> "); 141 buf.append(_t("Page")).append(' ').append(page + 1); 142 buf.append("</div>"); 143 } 104 144 boolean notFound = true; 105 145 Set<RouterInfo> routers = _context.netDb().getRouters(); … … 123 163 } 124 164 } 165 int toSkip = pageSize * page; 166 int skipped = 0; 167 int written = 0; 168 boolean morePages = false; 169 outerloop: 125 170 for (RouterInfo ri : routers) { 126 171 Hash key = ri.getIdentity().getHash(); … … 132 177 (tr != null && ri.getTargetAddress(tr) != null) || 133 178 (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 } 134 187 renderRouterInfo(buf, ri, false, true); 135 188 if (sybil != null) … … 140 193 if (ipMode == 0) { 141 194 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 } 142 203 renderRouterInfo(buf, ri, false, true); 143 204 if (sybil != null) … … 149 210 String host = ra.getHost(); 150 211 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 } 151 220 renderRouterInfo(buf, ri, false, true); 152 221 if (sybil != null) … … 160 229 for (RouterAddress ra : ri.getAddresses()) { 161 230 if (port == ra.getPort()) { 231 if (skipped < toSkip) { 232 skipped++; 233 break; 234 } 235 if (written++ >= pageSize) { 236 morePages = true; 237 break outerloop; 238 } 162 239 renderRouterInfo(buf, ri, false, true); 163 240 if (sybil != null) … … 170 247 for (RouterAddress ra : ri.getAddresses()) { 171 248 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 } 172 257 renderRouterInfo(buf, ri, false, true); 173 258 if (sybil != null) … … 181 266 String host = ra.getHost(); 182 267 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 } 183 276 renderRouterInfo(buf, ri, false, true); 184 277 if (sybil != null) … … 193 286 continue; 194 287 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 } 195 296 renderRouterInfo(buf, ri, false, true); 196 297 if (sybil != null) … … 203 304 for (RouterAddress ra : ri.getAddresses()) { 204 305 if (cost == ra.getCost()) { 306 if (skipped < toSkip) { 307 skipped++; 308 break; 309 } 310 if (written++ >= pageSize) { 311 morePages = true; 312 break outerloop; 313 } 205 314 renderRouterInfo(buf, ri, false, true); 206 315 if (sybil != null) … … 224 333 buf.append(_t("Family")).append(' ').append(family); 225 334 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("&ps=").append(pageSize).append(ubuf).append("\">"); 341 buf.append(_t("Previous Page")); 342 buf.append("</a> "); 343 } 344 buf.append(_t("Page")).append(' ').append(page + 1); 345 if (morePages) { 346 buf.append(" <a href=\"/netdb?pg=").append(page + 2) 347 .append("&ps=").append(pageSize).append(ubuf).append("\">"); 348 buf.append(_t("Next Page")); 349 buf.append("</a>"); 350 } 226 351 buf.append("</div>"); 227 352 } … … 451 576 * @param mode 0: charts only; 1: full routerinfos; 2: abbreviated routerinfos 452 577 */ 453 public void renderStatusHTML(Writer out, int mode) throws IOException {578 public void renderStatusHTML(Writer out, int pageSize, int page, int mode) throws IOException { 454 579 if (!_context.netDb().isInitialized()) { 455 580 out.write("<div id=\"notinitialized\">"); … … 467 592 Hash us = _context.routerHash(); 468 593 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; 469 598 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("&pg=").append(page) 603 .append("&ps=").append(pageSize).append("\">"); 604 buf.append(_t("Previous Page")); 605 buf.append("</a> "); 606 } 607 buf.append(_t("Page")).append(' ').append(page + 1); 608 if (nextpg) { 609 buf.append(" <a href=\"/netdb?f=").append(mode).append("&pg=").append(page + 2) 610 .append("&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) { 471 617 RouterInfo ourInfo = _context.router().getRouterInfo(); 472 618 renderRouterInfo(buf, ourInfo, true, true); … … 479 625 int[] transportCount = new int[TNAMES.length]; 480 626 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; 483 630 for (RouterInfo ri : routers) { 484 631 Hash key = ri.getIdentity().getHash(); … … 486 633 if (!isUs) { 487 634 if (showStats) { 635 if (skipped < toSkip) { 636 skipped++; 637 continue; 638 } 639 if (written++ >= pageSize) { 640 morePages = true; 641 break; 642 } 488 643 renderRouterInfo(buf, ri, false, full); 489 644 out.write(buf.toString()); … … 498 653 transportCount[classifyTransports(ri)]++; 499 654 } 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("&pg=").append(page).append("&ps=").append(pageSize).append("\">"); 660 buf.append(_t("Previous Page")); 661 buf.append("</a> "); 662 } 663 buf.append(_t("Page")).append(' ').append(page + 1); 664 if (morePages) { 665 buf.append(" <a href=\"/netdb?f=").append(mode).append("&pg=").append(page + 2).append("&ps=").append(pageSize).append("\">"); 666 buf.append(_t("Next Page")); 667 buf.append("</a>"); 668 } 669 buf.append("</div>"); 500 670 } 501 671 long end = System.currentTimeMillis(); -
apps/routerconsole/jsp/netdb.jsp
r68e8e597 r2f2ff4f 37 37 <jsp:setProperty name="netdbHelper" property="ssucaps" value="<%=request.getParameter(\"ssucaps\")%>" /> 38 38 <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\")%>" /> 39 41 <jsp:getProperty name="netdbHelper" property="netDbSummary" /> 40 42 </div></body></html>
Note: See TracChangeset
for help on using the changeset viewer.