From 8418bda5a5fadbcc6f644b9b16a1dc5a84534a5a Mon Sep 17 00:00:00 2001
From: zzz <zzz@i2pmail.org>
Date: Tue, 5 Apr 2022 08:22:26 -0400
Subject: [PATCH] Console: Add netdb search options for v1 or v2 only
 transports

---
 .../i2p/router/web/helpers/NetDbHelper.java   |  4 +++
 .../i2p/router/web/helpers/NetDbRenderer.java | 35 +++++++++++++++++--
 2 files changed, 37 insertions(+), 2 deletions(-)

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 acc0c0bf0a..3a2dad4db4 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
@@ -408,8 +408,12 @@ public class NetDbHelper extends FormHandler {
         _out.write("</select></td><td></td></tr>\n" +
                    "<tr><td>Transport:</td><td><select name=\"tr\"><option value=\"\" selected=\"selected\">" +
                    "<option value=\"NTCP\">NTCP</option>\n" +
+                   "<option value=\"NTCP_1\">NTCP (v1 only)</option>\n" +
+                   "<option value=\"NTCP_2\">NTCP (v2 supported)</option>\n" +
                    "<option value=\"NTCP2\">NTCP2</option>\n" +
                    "<option value=\"SSU\">SSU</option>\n" +
+                   "<option value=\"SSU_1\">SSU (v1 only)</option>\n" +
+                   "<option value=\"SSU_2\">SSU (v2 supported)</option>\n" +
                    "<option value=\"SSU2\">SSU2</option>\n" +
                    "</select></td><td></td></tr>\n" +
                    "<tr><td>Transport Capabilities:</td><td><input type=\"text\" name=\"ssucaps\"></td><td></td></tr>\n" +
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java
index 9ef915f209..a2da4513e2 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java
@@ -225,7 +225,6 @@ class NetDbRenderer {
                     (country != null && country.equals(_context.commSystem().getCountry(key))) ||
                     // 'O' will catch PO and XO also
                     (caps != null && hasCap(ri, caps)) ||
-                    (tr != null && ri.getTargetAddress(tr) != null) ||
                     (type != null && type == ri.getIdentity().getSigType()) ||
                     (etype != null && etype == ri.getIdentity().getEncType())) {
                     if (skipped < toSkip) {
@@ -240,6 +239,38 @@ class NetDbRenderer {
                     if (sybil != null)
                         sybils.add(key);
                     notFound = false;
+                } else if (tr != null) {
+                    boolean found;
+                    if (tr.equals("NTCP_1")) {
+                        RouterAddress ra = ri.getTargetAddress("NTCP");
+                        found = ra != null && ra.getOption("v") == null;
+                    } else if (tr.equals("NTCP_2")) {
+                        RouterAddress ra = ri.getTargetAddress("NTCP");
+                        found = ra != null && ra.getOption("v") != null;
+                    } else if (tr.equals("SSU_1")) {
+                        RouterAddress ra = ri.getTargetAddress("SSU");
+                        found = ra != null && ra.getOption("v") == null;
+                    } else if (tr.equals("SSU_2")) {
+                        RouterAddress ra = ri.getTargetAddress("SSU");
+                        found = ra != null && ra.getOption("v") != null;
+                    } else {
+                        RouterAddress ra = ri.getTargetAddress(tr);
+                        found = ra != null;
+                    }
+                    if (!found)
+                        continue;
+                    if (skipped < toSkip) {
+                        skipped++;
+                        continue;
+                    }
+                    if (written++ >= pageSize) {
+                        morePages = true;
+                        break;
+                    }
+                    renderRouterInfo(buf, ri, false, true);
+                    if (sybil != null)
+                        sybils.add(key);
+                    notFound = false;
                 } else if (family != null) {
                     String rifam = ri.getOption("family");
                     if (rifam != null && rifam.toLowerCase(Locale.US).contains(family)) {
@@ -421,7 +452,7 @@ class NetDbRenderer {
                 if (ssucaps != null)
                     buf.append("Caps ").append(ssucaps).append(' ');
                 if (tr != null)
-                    buf.append("Transport ").append(tr).append(' ');
+                    buf.append(_t("Transport")).append(' ').append(tr).append(' ');
                 buf.append(_t("not found in network database"));
                 buf.append("</div>");
             } else if (page > 0 || morePages) {
-- 
GitLab