From 799d90e1b5f58d63fe2f981847ce7979d3e2da14 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sat, 23 Apr 2016 18:07:35 +0000
Subject: [PATCH] Addressbook: Move HostTxtEntry to net.i2p.client.naming, in
 prep for use by i2ptunnel

---
 .../java/src/net/i2p/addressbook/AddressBook.java   |  1 +
 .../java/src/net/i2p/addressbook/Daemon.java        |  1 +
 .../src/net/i2p/addressbook/HostTxtIterator.java    |  1 +
 .../java/src/net/i2p/addressbook/HostTxtParser.java |  1 +
 .../net/i2p/addressbook/SubscriptionIterator.java   |  1 +
 .../src/net/i2p/client/naming}/HostTxtEntry.java    | 13 ++++++-------
 .../i2p/client/naming/SingleFileNamingService.java  | 12 ++++--------
 7 files changed, 15 insertions(+), 15 deletions(-)
 rename {apps/addressbook/java/src/net/i2p/addressbook => core/java/src/net/i2p/client/naming}/HostTxtEntry.java (98%)

diff --git a/apps/addressbook/java/src/net/i2p/addressbook/AddressBook.java b/apps/addressbook/java/src/net/i2p/addressbook/AddressBook.java
index faa9979d65..22e8e678b8 100644
--- a/apps/addressbook/java/src/net/i2p/addressbook/AddressBook.java
+++ b/apps/addressbook/java/src/net/i2p/addressbook/AddressBook.java
@@ -30,6 +30,7 @@ import java.util.Map;
 import java.util.regex.Pattern;
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.naming.HostTxtEntry;
 import net.i2p.util.EepGet;
 import net.i2p.util.SecureFile;
 
diff --git a/apps/addressbook/java/src/net/i2p/addressbook/Daemon.java b/apps/addressbook/java/src/net/i2p/addressbook/Daemon.java
index 6f57754dd1..38283aab56 100644
--- a/apps/addressbook/java/src/net/i2p/addressbook/Daemon.java
+++ b/apps/addressbook/java/src/net/i2p/addressbook/Daemon.java
@@ -32,6 +32,7 @@ import java.util.Properties;
 import java.util.Set;
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.naming.HostTxtEntry;
 import net.i2p.client.naming.NamingService;
 import net.i2p.client.naming.SingleFileNamingService;
 import net.i2p.data.DataFormatException;
diff --git a/apps/addressbook/java/src/net/i2p/addressbook/HostTxtIterator.java b/apps/addressbook/java/src/net/i2p/addressbook/HostTxtIterator.java
index ef1b99103c..6ba2dfbab2 100644
--- a/apps/addressbook/java/src/net/i2p/addressbook/HostTxtIterator.java
+++ b/apps/addressbook/java/src/net/i2p/addressbook/HostTxtIterator.java
@@ -32,6 +32,7 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.NoSuchElementException;
 
+import net.i2p.client.naming.HostTxtEntry;
 import net.i2p.data.DataHelper;
 
 /**
diff --git a/apps/addressbook/java/src/net/i2p/addressbook/HostTxtParser.java b/apps/addressbook/java/src/net/i2p/addressbook/HostTxtParser.java
index cfcd7a6251..c907b3b8f6 100644
--- a/apps/addressbook/java/src/net/i2p/addressbook/HostTxtParser.java
+++ b/apps/addressbook/java/src/net/i2p/addressbook/HostTxtParser.java
@@ -14,6 +14,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
+import net.i2p.client.naming.HostTxtEntry;
 import net.i2p.data.DataHelper;
 import net.i2p.util.SecureFile;
 import net.i2p.util.SecureFileOutputStream;
diff --git a/apps/addressbook/java/src/net/i2p/addressbook/SubscriptionIterator.java b/apps/addressbook/java/src/net/i2p/addressbook/SubscriptionIterator.java
index 5a880f2b14..8ef67dd611 100644
--- a/apps/addressbook/java/src/net/i2p/addressbook/SubscriptionIterator.java
+++ b/apps/addressbook/java/src/net/i2p/addressbook/SubscriptionIterator.java
@@ -26,6 +26,7 @@ import java.util.Iterator;
 import java.util.List;
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.naming.HostTxtEntry;
 import net.i2p.util.PortMapper;
 
 /**
diff --git a/apps/addressbook/java/src/net/i2p/addressbook/HostTxtEntry.java b/core/java/src/net/i2p/client/naming/HostTxtEntry.java
similarity index 98%
rename from apps/addressbook/java/src/net/i2p/addressbook/HostTxtEntry.java
rename to core/java/src/net/i2p/client/naming/HostTxtEntry.java
index fe19277068..f510b03d78 100644
--- a/apps/addressbook/java/src/net/i2p/addressbook/HostTxtEntry.java
+++ b/core/java/src/net/i2p/client/naming/HostTxtEntry.java
@@ -1,4 +1,4 @@
-package net.i2p.addressbook;
+package net.i2p.client.naming;
 
 import java.io.BufferedWriter;
 import java.io.IOException;
@@ -13,25 +13,27 @@ import net.i2p.data.DataFormatException;
 import net.i2p.data.DataHelper;
 import net.i2p.data.Destination;
 import net.i2p.data.Signature;
+import net.i2p.data.SigningPrivateKey;
 import net.i2p.data.SigningPublicKey;
 import net.i2p.util.OrderedProperties;
 // for testing only
 import java.io.File;
 import java.io.OutputStreamWriter;
-import java.io.StringWriter;
 import java.util.Arrays;
 import net.i2p.data.Base32;
 import net.i2p.data.PrivateKeyFile;
-import net.i2p.data.SigningPrivateKey;
 import net.i2p.util.RandomSource;
 
 
 /**
  * A hostname, b64 destination, and optional properties.
+ * Includes methods to sign and verify the entry.
+ * Used by addressbook to parse subscription data,
+ * and by i2ptunnel to generate signed metadata.
  * 
  * @since 0.9.26
  */
-class HostTxtEntry {
+public class HostTxtEntry {
 
     private final String name;
     private final String dest;
@@ -344,7 +346,6 @@ class HostTxtEntry {
 
     /**
      * Sign and set the "sig" property
-     * for testing only
      */
     private void sign(SigningPrivateKey spk) {
         signIt(spk, PROP_SIG);
@@ -352,7 +353,6 @@ class HostTxtEntry {
 
     /**
      * Sign and set the "oldsig" property
-     * for testing only
      */
     private void signInner(SigningPrivateKey spk) {
         signIt(spk, PROP_OLDSIG);
@@ -383,7 +383,6 @@ class HostTxtEntry {
     }
 
     /**
-     * for testing only
      * @param sigprop The signature property to set
      */
     private void signIt(SigningPrivateKey spk, String sigprop) {
diff --git a/core/java/src/net/i2p/client/naming/SingleFileNamingService.java b/core/java/src/net/i2p/client/naming/SingleFileNamingService.java
index 5f69b919f5..4eb2536fb2 100644
--- a/core/java/src/net/i2p/client/naming/SingleFileNamingService.java
+++ b/core/java/src/net/i2p/client/naming/SingleFileNamingService.java
@@ -59,10 +59,6 @@ public class SingleFileNamingService extends NamingService {
     private long _lastWrite;
     private volatile boolean _isClosed;
 
-    private static final String RCVD_PROP_PREFIX = "=";
-    private static final String PROPS_SEPARATOR = "#!";
-    private static final char PROP_SEPARATOR = '#';
-
     public SingleFileNamingService(I2PAppContext context, String filename) {
         super(context);
         File file = new File(filename);
@@ -267,7 +263,7 @@ public class SingleFileNamingService extends NamingService {
     }
 
     /** 
-     *  Write the subscription options part of the line (after the #!).
+     *  Write the subscription options part of the line (including the #!).
      *  Only options starting with '=' (if any) are written (with the '=' stripped).
      *  Does not write a newline.
      *
@@ -278,15 +274,15 @@ public class SingleFileNamingService extends NamingService {
         boolean started = false;
         for (Map.Entry<Object, Object> e : options.entrySet()) {
             String k = (String) e.getKey();
-            if (!k.startsWith(RCVD_PROP_PREFIX))
+            if (!k.startsWith("="))
                 continue;
             k = k.substring(1);
             String v = (String) e.getValue();
             if (started) {
-                out.write(PROP_SEPARATOR);
+                out.write(HostTxtEntry.PROP_SEPARATOR);
             } else {
                 started = true;
-                out.write(PROPS_SEPARATOR);
+                out.write(HostTxtEntry.PROPS_SEPARATOR);
             }
             out.write(k);
             out.write('=');
-- 
GitLab