diff --git a/apps/syndie/java/src/net/i2p/syndie/BlogManager.java b/apps/syndie/java/src/net/i2p/syndie/BlogManager.java index 8c3fe86347dc6d6424f49831cb60eb0242b82ace..010172c0f148da2db3b445c9c19d0204089901db 100644 --- a/apps/syndie/java/src/net/i2p/syndie/BlogManager.java +++ b/apps/syndie/java/src/net/i2p/syndie/BlogManager.java @@ -4,6 +4,8 @@ import java.io.*; import java.text.*; import java.util.*; import net.i2p.I2PAppContext; +import net.i2p.client.naming.PetName; +import net.i2p.client.naming.PetNameDB; import net.i2p.data.*; import net.i2p.syndie.data.*; import net.i2p.syndie.sml.*; diff --git a/apps/syndie/java/src/net/i2p/syndie/User.java b/apps/syndie/java/src/net/i2p/syndie/User.java index badb40c332497719de6bdbdf8a5d5d55eee9d61f..d11856c62cdaccfbe13d132f655c960c7c5d1e49 100644 --- a/apps/syndie/java/src/net/i2p/syndie/User.java +++ b/apps/syndie/java/src/net/i2p/syndie/User.java @@ -4,6 +4,7 @@ import java.io.UnsupportedEncodingException; import java.io.IOException; import java.util.*; import net.i2p.I2PAppContext; +import net.i2p.client.naming.PetNameDB; import net.i2p.data.*; /** diff --git a/apps/syndie/java/src/net/i2p/syndie/sml/HTMLRenderer.java b/apps/syndie/java/src/net/i2p/syndie/sml/HTMLRenderer.java index ff26a507d6164d42f3d41cd607b4416d1e41771f..ada257d2bb271b9a5bbfbcd3c025235a7fa28f99 100644 --- a/apps/syndie/java/src/net/i2p/syndie/sml/HTMLRenderer.java +++ b/apps/syndie/java/src/net/i2p/syndie/sml/HTMLRenderer.java @@ -4,6 +4,7 @@ import java.io.*; import java.text.*; import java.util.*; import net.i2p.I2PAppContext; +import net.i2p.client.naming.PetName; import net.i2p.data.*; import net.i2p.syndie.*; import net.i2p.syndie.data.*; diff --git a/apps/syndie/java/src/net/i2p/syndie/web/ArchiveViewerBean.java b/apps/syndie/java/src/net/i2p/syndie/web/ArchiveViewerBean.java index 5df8d080688f25cfed09c82d838922e9590232f6..f5ce3394cb12b3365a985070cec8cc8e0956e255 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/ArchiveViewerBean.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/ArchiveViewerBean.java @@ -4,6 +4,8 @@ import java.io.*; import java.text.*; import java.util.*; import net.i2p.I2PAppContext; +import net.i2p.client.naming.PetName; +import net.i2p.client.naming.PetNameDB; import net.i2p.data.*; import net.i2p.syndie.*; import net.i2p.syndie.data.*; diff --git a/apps/syndie/java/src/net/i2p/syndie/web/PostBean.java b/apps/syndie/java/src/net/i2p/syndie/web/PostBean.java index fbc3d03587d2cd27941f86d2f417003e9a384394..a058a26f49c0bdc19e84b3b3b90437a9e3a42517 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/PostBean.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/PostBean.java @@ -3,6 +3,7 @@ package net.i2p.syndie.web; import java.io.*; import java.util.*; import net.i2p.I2PAppContext; +import net.i2p.client.naming.PetName; import net.i2p.syndie.*; import net.i2p.syndie.data.BlogURI; import net.i2p.syndie.sml.HTMLPreviewRenderer; diff --git a/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java b/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java index 427aa4d03334538e5d220264c79d4a0df897ad1b..619b7ec29bec0e96161a0873bd285ba4564f81a3 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java @@ -5,6 +5,7 @@ import java.text.*; import java.util.*; import java.util.zip.*; import net.i2p.I2PAppContext; +import net.i2p.client.naming.PetNameDB; import net.i2p.data.*; import net.i2p.util.EepGet; import net.i2p.util.EepGetScheduler; diff --git a/apps/syndie/jsp/_bodyindex.jsp b/apps/syndie/jsp/_bodyindex.jsp index d9fc9c51a2999582e1e3ea7a30a422147072fefd..fe80cd836973cd386bdbb30adb06f5896b0b6be5 100644 --- a/apps/syndie/jsp/_bodyindex.jsp +++ b/apps/syndie/jsp/_bodyindex.jsp @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=UTF-8" import="net.i2p.syndie.web.ArchiveViewerBean, net.i2p.syndie.*" %> +<%@page contentType="text/html; charset=UTF-8" import="net.i2p.syndie.web.ArchiveViewerBean, net.i2p.syndie.*, net.i2p.client.naming.PetName" %> <% request.setCharacterEncoding("UTF-8"); %> <jsp:useBean scope="session" class="net.i2p.syndie.User" id="user" /><% if (user.getAuthenticated() && (null != request.getParameter("action")) ) { diff --git a/apps/syndie/jsp/addresses.jsp b/apps/syndie/jsp/addresses.jsp index cb51fd6b803d67028566426d5294fc7101802172..c152499064f0cb60218b41daaf27fba13243e20d 100644 --- a/apps/syndie/jsp/addresses.jsp +++ b/apps/syndie/jsp/addresses.jsp @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="net.i2p.data.Base64, net.i2p.syndie.web.*, net.i2p.syndie.sml.*, net.i2p.syndie.data.*, net.i2p.syndie.*, org.mortbay.servlet.MultiPartRequest, java.util.*, java.io.*" %><% +<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="net.i2p.data.Base64, net.i2p.syndie.web.*, net.i2p.syndie.sml.*, net.i2p.syndie.data.*, net.i2p.syndie.*, net.i2p.client.naming.PetName, net.i2p.client.naming.PetNameDB, org.mortbay.servlet.MultiPartRequest, java.util.*, java.io.*" %><% request.setCharacterEncoding("UTF-8"); %><jsp:useBean scope="session" class="net.i2p.syndie.User" id="user" /><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd"> <html> diff --git a/apps/syndie/jsp/post.jsp b/apps/syndie/jsp/post.jsp index 0afc1cc315d83db8ad5572353b92baf81d835dd9..a22be401fe2690afb30b419051abc2cd2dd4b9cf 100644 --- a/apps/syndie/jsp/post.jsp +++ b/apps/syndie/jsp/post.jsp @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="net.i2p.data.Base64, net.i2p.syndie.web.*, net.i2p.syndie.sml.*, net.i2p.syndie.data.*, net.i2p.syndie.*, org.mortbay.servlet.MultiPartRequest, java.util.*" %><% +<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="net.i2p.data.Base64, net.i2p.client.naming.PetName, net.i2p.client.naming.PetNameDB, net.i2p.syndie.web.*, net.i2p.syndie.sml.*, net.i2p.syndie.data.*, net.i2p.syndie.*, org.mortbay.servlet.MultiPartRequest, java.util.*" %><% request.setCharacterEncoding("UTF-8"); %><jsp:useBean scope="session" class="net.i2p.syndie.User" id="user" /><jsp:useBean scope="session" class="net.i2p.syndie.web.PostBean" id="post" diff --git a/apps/syndie/jsp/remote.jsp b/apps/syndie/jsp/remote.jsp index bc47b1a8f3d21aa8cb16daed93685153e13a130b..0bdf684ccc3c433263bce1be14a0f6c1a4cb7337 100644 --- a/apps/syndie/jsp/remote.jsp +++ b/apps/syndie/jsp/remote.jsp @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="net.i2p.syndie.web.*, net.i2p.syndie.*, net.i2p.syndie.sml.*, java.util.*" %><% +<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="net.i2p.client.naming.PetName, net.i2p.syndie.web.*, net.i2p.syndie.*, net.i2p.syndie.sml.*, java.util.*" %><% request.setCharacterEncoding("UTF-8"); %><jsp:useBean scope="session" class="net.i2p.syndie.web.RemoteArchiveBean" id="remote" /><jsp:useBean scope="session" class="net.i2p.syndie.User" id="user" diff --git a/apps/syndie/java/src/net/i2p/syndie/PetName.java b/core/java/src/net/i2p/client/naming/PetName.java similarity index 99% rename from apps/syndie/java/src/net/i2p/syndie/PetName.java rename to core/java/src/net/i2p/client/naming/PetName.java index c63d1498791242b3c8752dcded7e63f766118704..73ee4edf54e241ac66ffcf3f4af198b58b0bedec 100644 --- a/apps/syndie/java/src/net/i2p/syndie/PetName.java +++ b/core/java/src/net/i2p/client/naming/PetName.java @@ -1,4 +1,4 @@ -package net.i2p.syndie; +package net.i2p.client.naming; import java.util.*; import net.i2p.data.DataHelper; diff --git a/apps/syndie/java/src/net/i2p/syndie/PetNameDB.java b/core/java/src/net/i2p/client/naming/PetNameDB.java similarity index 98% rename from apps/syndie/java/src/net/i2p/syndie/PetNameDB.java rename to core/java/src/net/i2p/client/naming/PetNameDB.java index 700464924c2e950e8ffbb098940ec8532599a935..730cc4e6b44a08d74efa76043277e8b62d89a5a1 100644 --- a/apps/syndie/java/src/net/i2p/syndie/PetNameDB.java +++ b/core/java/src/net/i2p/client/naming/PetNameDB.java @@ -1,8 +1,9 @@ -package net.i2p.syndie; +package net.i2p.client.naming; import java.io.*; import java.util.*; + /** * */ diff --git a/core/java/src/net/i2p/client/naming/PetNameNamingService.java b/core/java/src/net/i2p/client/naming/PetNameNamingService.java new file mode 100644 index 0000000000000000000000000000000000000000..7c197cb63adeb727c2b807623156f7f5b342ef73 --- /dev/null +++ b/core/java/src/net/i2p/client/naming/PetNameNamingService.java @@ -0,0 +1,65 @@ +package net.i2p.client.naming; + +import java.io.File; +import java.io.IOException; +import java.util.Iterator; +import java.util.Properties; + +import net.i2p.I2PAppContext; +import net.i2p.data.DataHelper; +import net.i2p.data.Destination; + +public class PetNameNamingService extends NamingService { + + private PetNameDB _petnameDb; + public final static String PROP_PETNAME_FILE = "i2p.petnamefile"; + public final static String DEFAULT_PETNAME_FILE = "petnames.txt"; + + public PetNameNamingService(I2PAppContext context) { + super(context); + _petnameDb = new PetNameDB(); + String file = _context.getProperty(PROP_PETNAME_FILE, DEFAULT_PETNAME_FILE); + + //If the petnamedb file doesn't exist, create it, using the + //contents of hosts.txt. + File nameFile = new File(file); + if (!nameFile.exists()) { + Properties hosts = new Properties(); + File hostsFile = new File("hosts.txt"); + if (hostsFile.exists() && hostsFile.canRead()) { + try { + DataHelper.loadProps(hosts, hostsFile); + } catch (IOException ioe) { + } + } + Iterator iter = hosts.keySet().iterator(); + while (iter.hasNext()) { + String hostname = (String)iter.next(); + PetName pn = new PetName(hostname, "i2p", "http", hosts.getProperty(hostname)); + _petnameDb.set(hostname, pn); + } + try { + _petnameDb.store(file); + } catch (IOException ioe) { + } + } + + try { + _petnameDb.load(file); + } catch (IOException ioe) { + } + } + + public Destination lookup(String hostname) { + PetName name = _petnameDb.get(hostname); + if (name != null && name.getNetwork().equals("i2p")) { + return lookupBase64(name.getLocation()); + } else { + return lookupBase64(hostname); + } + } + + public String reverseLookup(Destination dest) { + return _petnameDb.getNameByLocation(dest.toBase64()); + } +}