* Beautify PetNameDB API.

* Start of syndie auto address export.
This commit is contained in:
ragnarok
2005-10-09 03:32:34 +00:00
committed by zzz
parent ad574c8504
commit e7ad516685
13 changed files with 100 additions and 78 deletions

View File

@@ -416,12 +416,12 @@ public class BlogManager {
PetNameDB userDb = user.getPetNameDB(); PetNameDB userDb = user.getPetNameDB();
PetNameDB routerDb = _context.petnameDb(); PetNameDB routerDb = _context.petnameDb();
// horribly inefficient... // horribly inefficient...
for (Iterator names = userDb.getNames().iterator(); names.hasNext();) { for (Iterator iter = userDb.iterator(); iter.hasNext();) {
PetName pn = userDb.get((String)names.next()); PetName pn = (PetName)iter.next();
if (pn == null) continue; if (pn == null) continue;
Destination existing = _context.namingService().lookup(pn.getName()); Destination existing = _context.namingService().lookup(pn.getName());
if (existing == null && pn.getNetwork().equalsIgnoreCase("i2p")) { if (existing == null && pn.getNetwork().equalsIgnoreCase("i2p")) {
routerDb.set(pn.getName(), pn); routerDb.add(pn);
try { try {
routerDb.store(); routerDb.store();
} catch (IOException ioe) { } catch (IOException ioe) {
@@ -567,10 +567,10 @@ public class BlogManager {
// no need to quote user/location further, as they've been sanitized // no need to quote user/location further, as they've been sanitized
PetNameDB names = user.getPetNameDB(); PetNameDB names = user.getPetNameDB();
if (names.exists(name)) if (names.containsName(name))
return "<span class=\"b_addrMsgErr\">Name is already in use</span>"; return "<span class=\"b_addrMsgErr\">Name is already in use</span>";
PetName pn = new PetName(name, schema, protocol, location); PetName pn = new PetName(name, schema, protocol, location);
names.set(name, pn); names.add(pn);
try { try {
names.store(user.getAddressbookLocation()); names.store(user.getAddressbookLocation());

View File

@@ -4,6 +4,7 @@ import java.io.*;
import java.text.*; import java.text.*;
import java.util.*; import java.util.*;
import net.i2p.I2PAppContext; import net.i2p.I2PAppContext;
import net.i2p.client.naming.PetName;
import net.i2p.data.*; import net.i2p.data.*;
import net.i2p.syndie.*; import net.i2p.syndie.*;
import net.i2p.syndie.data.*; import net.i2p.syndie.data.*;
@@ -104,7 +105,7 @@ public class HTMLPreviewRenderer extends HTMLRenderer {
String knownName = null; String knownName = null;
if (_user != null) if (_user != null)
knownName = _user.getPetNameDB().getNameByLocation(a.location); knownName = _user.getPetNameDB().getLocation(a.location).getName();
if (knownName != null) { if (knownName != null) {
_postBodyBuffer.append(' ').append(getSpan("summDetailAddrKnown")); _postBodyBuffer.append(' ').append(getSpan("summDetailAddrKnown"));
_postBodyBuffer.append(sanitizeString(knownName)).append("</span>"); _postBodyBuffer.append(sanitizeString(knownName)).append("</span>");
@@ -120,6 +121,7 @@ public class HTMLPreviewRenderer extends HTMLRenderer {
_postBodyBuffer.append("protocol=").append(sanitizeTagParam(a.protocol)).append('&'); _postBodyBuffer.append("protocol=").append(sanitizeTagParam(a.protocol)).append('&');
_postBodyBuffer.append("\">").append(sanitizeString(a.name)).append("</a>"); _postBodyBuffer.append("\">").append(sanitizeString(a.name)).append("</a>");
} }
importAddress(a);
} }
_postBodyBuffer.append("<br />\n"); _postBodyBuffer.append("<br />\n");
} }
@@ -132,7 +134,7 @@ public class HTMLPreviewRenderer extends HTMLRenderer {
_postBodyBuffer.append("\">").append(sanitizeString(a.name)).append("</a>"); _postBodyBuffer.append("\">").append(sanitizeString(a.name)).append("</a>");
if (a.description != null) if (a.description != null)
_postBodyBuffer.append(": ").append(getSpan("summDetailArchiveDesc")).append(sanitizeString(a.description)).append("</span>"); _postBodyBuffer.append(": ").append(getSpan("summDetailArchiveDesc")).append(sanitizeString(a.description)).append("</span>");
if (null == _user.getPetNameDB().getNameByLocation(a.location)) { if (null == _user.getPetNameDB().getLocation(a.location)) {
_postBodyBuffer.append(" <a ").append(getClass("summDetailArchiveBookmark")).append(" href=\""); _postBodyBuffer.append(" <a ").append(getClass("summDetailArchiveBookmark")).append(" href=\"");
_postBodyBuffer.append(getBookmarkURL(a.name, a.location, a.locationSchema, "syndiearchive")); _postBodyBuffer.append(getBookmarkURL(a.name, a.location, a.locationSchema, "syndiearchive"));
_postBodyBuffer.append("\">bookmark</a>"); _postBodyBuffer.append("\">bookmark</a>");

View File

@@ -441,6 +441,21 @@ public class HTMLRenderer extends EventReceiverImpl {
return DataHelper.eq(schema, a.schema) && DataHelper.eq(location, a.location) && DataHelper.eq(protocol, a.protocol) && DataHelper.eq(name, a.name); return DataHelper.eq(schema, a.schema) && DataHelper.eq(location, a.location) && DataHelper.eq(protocol, a.protocol) && DataHelper.eq(name, a.name);
} }
} }
public void importAddress(Address a) {
if (I2PAppContext.getGlobalContext().getProperty("syndie.addressExport", "false").equalsIgnoreCase("true")
&& I2PAppContext.getGlobalContext().namingService().lookup(a.name) == null
&& a.schema.equalsIgnoreCase("i2p")) {
PetName pn = new PetName(a.name, a.schema, a.protocol, a.location);
I2PAppContext.getGlobalContext().petnameDb().add(pn);
try {
I2PAppContext.getGlobalContext().petnameDb().store();
} catch (IOException ioe) {
//ignore
}
}
}
public void receiveAddress(String name, String schema, String protocol, String location, String anchorText) { public void receiveAddress(String name, String schema, String protocol, String location, String anchorText) {
Address a = new Address(); Address a = new Address();
a.name = name; a.name = name;
@@ -451,12 +466,12 @@ public class HTMLRenderer extends EventReceiverImpl {
_addresses.add(a); _addresses.add(a);
if (!continueBody()) { return; } if (!continueBody()) { return; }
if ( (schema == null) || (location == null) ) return; if ( (schema == null) || (location == null) ) return;
String knownName = null; PetName pn = null;
if (_user != null) if (_user != null)
knownName = _user.getPetNameDB().getNameByLocation(location); pn = _user.getPetNameDB().getLocation(location);
if (knownName != null) { if (pn != null) {
_bodyBuffer.append(getSpan("addr")).append(sanitizeString(anchorText)).append("</span>"); _bodyBuffer.append(getSpan("addr")).append(sanitizeString(anchorText)).append("</span>");
_bodyBuffer.append(getSpan("addrKnownName")).append("(").append(sanitizeString(knownName)).append(")</span>"); _bodyBuffer.append(getSpan("addrKnownName")).append("(").append(sanitizeString(pn.getName())).append(")</span>");
} else { } else {
if (_log.shouldLog(Log.DEBUG)) if (_log.shouldLog(Log.DEBUG))
_log.debug("Receiving address [" + location + "]"); _log.debug("Receiving address [" + location + "]");
@@ -616,12 +631,12 @@ public class HTMLRenderer extends EventReceiverImpl {
for (int i = 0; i < _addresses.size(); i++) { for (int i = 0; i < _addresses.size(); i++) {
Address a = (Address)_addresses.get(i); Address a = (Address)_addresses.get(i);
String knownName = null; PetName pn = null;
if (_user != null) if (_user != null)
knownName = _user.getPetNameDB().getNameByLocation(a.location); pn = _user.getPetNameDB().getLocation(a.location);
if (knownName != null) { if (pn != null) {
_postBodyBuffer.append(' ').append(getSpan("summDetailAddrKnown")); _postBodyBuffer.append(' ').append(getSpan("summDetailAddrKnown"));
_postBodyBuffer.append(sanitizeString(knownName)).append("</span>"); _postBodyBuffer.append(sanitizeString(pn.getName())).append("</span>");
} else { } else {
_postBodyBuffer.append(" <a ").append(getClass("summDetailAddrLink")).append(" href=\"addresses.jsp?"); _postBodyBuffer.append(" <a ").append(getClass("summDetailAddrLink")).append(" href=\"addresses.jsp?");
if (a.schema != null) if (a.schema != null)
@@ -634,6 +649,7 @@ public class HTMLRenderer extends EventReceiverImpl {
_postBodyBuffer.append("protocol=").append(sanitizeTagParam(a.protocol)).append('&'); _postBodyBuffer.append("protocol=").append(sanitizeTagParam(a.protocol)).append('&');
_postBodyBuffer.append("\">").append(sanitizeString(a.name)).append("</a>"); _postBodyBuffer.append("\">").append(sanitizeString(a.name)).append("</a>");
} }
importAddress(a);
} }
_postBodyBuffer.append("<br />\n"); _postBodyBuffer.append("<br />\n");
} }
@@ -646,7 +662,7 @@ public class HTMLRenderer extends EventReceiverImpl {
_postBodyBuffer.append("\">").append(sanitizeString(a.name)).append("</a>"); _postBodyBuffer.append("\">").append(sanitizeString(a.name)).append("</a>");
if (a.description != null) if (a.description != null)
_postBodyBuffer.append(": ").append(getSpan("summDetailArchiveDesc")).append(sanitizeString(a.description)).append("</span>"); _postBodyBuffer.append(": ").append(getSpan("summDetailArchiveDesc")).append(sanitizeString(a.description)).append("</span>");
if (null == _user.getPetNameDB().getNameByLocation(a.location)) { if (null == _user.getPetNameDB().getLocation(a.location)) {
_postBodyBuffer.append(" <a ").append(getClass("summDetailArchiveBookmark")).append(" href=\""); _postBodyBuffer.append(" <a ").append(getClass("summDetailArchiveBookmark")).append(" href=\"");
_postBodyBuffer.append(getBookmarkURL(a.name, a.location, a.locationSchema, "syndiearchive")); _postBodyBuffer.append(getBookmarkURL(a.name, a.location, a.locationSchema, "syndiearchive"));
_postBodyBuffer.append("\">bookmark it</a>"); _postBodyBuffer.append("\">bookmark it</a>");
@@ -749,9 +765,9 @@ public class HTMLRenderer extends EventReceiverImpl {
_preBodyBuffer.append("<td nowrap=\"nowrap\" align=\"right\" valign=\"top\" "); _preBodyBuffer.append("<td nowrap=\"nowrap\" align=\"right\" valign=\"top\" ");
_preBodyBuffer.append(getClass("meta")).append(">\n"); _preBodyBuffer.append(getClass("meta")).append(">\n");
String knownName = null; PetName pn = null;
if ( (_entry != null) && (_user != null) ) if ( (_entry != null) && (_user != null) )
knownName = _user.getPetNameDB().getNameByLocation(_entry.getURI().getKeyHash().toBase64()); pn = _user.getPetNameDB().getLocation(_entry.getURI().getKeyHash().toBase64());
//if (knownName != null) //if (knownName != null)
// _preBodyBuffer.append("Pet name: ").append(sanitizeString(knownName)).append(" "); // _preBodyBuffer.append("Pet name: ").append(sanitizeString(knownName)).append(" ");
@@ -760,8 +776,8 @@ public class HTMLRenderer extends EventReceiverImpl {
info = _archive.getBlogInfo(_entry.getURI()); info = _archive.getBlogInfo(_entry.getURI());
if (info != null) { if (info != null) {
_preBodyBuffer.append("<a ").append(getClass("metaLink")).append(" href=\"").append(getMetadataURL()).append("\">"); _preBodyBuffer.append("<a ").append(getClass("metaLink")).append(" href=\"").append(getMetadataURL()).append("\">");
if (knownName != null) { if (pn != null) {
_preBodyBuffer.append(getSpan("metaKnown")).append(sanitizeString(knownName)).append("</span>"); _preBodyBuffer.append(getSpan("metaKnown")).append(sanitizeString(pn.getName())).append("</span>");
} else { } else {
String nameStr = info.getProperty("Name"); String nameStr = info.getProperty("Name");
if (nameStr == null) if (nameStr == null)
@@ -776,7 +792,6 @@ public class HTMLRenderer extends EventReceiverImpl {
if ( (_user != null) && (_user.getAuthenticated()) && (_entry != null) ) { if ( (_user != null) && (_user.getAuthenticated()) && (_entry != null) ) {
PetName pn = _user.getPetNameDB().get(knownName);
if ( (pn == null) || (!pn.isMember("Favorites")) ) if ( (pn == null) || (!pn.isMember("Favorites")) )
_preBodyBuffer.append(" <input ").append(getClass("bookmark")).append(" type=\"submit\" name=\"action\" value=\"Bookmark blog\" />"); _preBodyBuffer.append(" <input ").append(getClass("bookmark")).append(" type=\"submit\" name=\"action\" value=\"Bookmark blog\" />");
if ( (pn == null) || (!pn.isMember("Ignore")) ) if ( (pn == null) || (!pn.isMember("Ignore")) )

View File

@@ -4,6 +4,7 @@ import java.io.*;
import java.util.*; import java.util.*;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import net.i2p.I2PAppContext; import net.i2p.I2PAppContext;
import net.i2p.client.naming.PetName;
import net.i2p.data.*; import net.i2p.data.*;
import net.i2p.syndie.*; import net.i2p.syndie.*;
import net.i2p.syndie.data.*; import net.i2p.syndie.data.*;
@@ -26,7 +27,8 @@ public class RSSRenderer extends HTMLRenderer {
out.write(" <link>" + urlPrefix + sanitizeXML(getEntryURL()) + "</link>\n"); out.write(" <link>" + urlPrefix + sanitizeXML(getEntryURL()) + "</link>\n");
out.write(" <guid isPermalink=\"false\">" + urlPrefix + entry.getURI().toString() + "</guid>\n"); out.write(" <guid isPermalink=\"false\">" + urlPrefix + entry.getURI().toString() + "</guid>\n");
out.write(" <pubDate>" + getRFC822Date(entry.getURI().getEntryId()) + "</pubDate>\n"); out.write(" <pubDate>" + getRFC822Date(entry.getURI().getEntryId()) + "</pubDate>\n");
String author = user.getPetNameDB().getNameByLocation(entry.getURI().getKeyHash().toBase64()); PetName pn = user.getPetNameDB().getLocation(entry.getURI().getKeyHash().toBase64());
String author = pn.getName();
if (author == null) { if (author == null) {
BlogInfo info = archive.getBlogInfo(entry.getURI()); BlogInfo info = archive.getBlogInfo(entry.getURI());
if (info != null) if (info != null)
@@ -192,10 +194,10 @@ public class RSSRenderer extends HTMLRenderer {
_addresses.add(a); _addresses.add(a);
if (!continueBody()) { return; } if (!continueBody()) { return; }
if ( (schema == null) || (location == null) ) return; if ( (schema == null) || (location == null) ) return;
String knownName = null; PetName pn = null;
if (_user != null) if (_user != null)
knownName = _user.getPetNameDB().getNameByLocation(location); pn = _user.getPetNameDB().getLocation(location);
if (knownName != null) { if (pn != null) {
_bodyBuffer.append(sanitizeString(anchorText)); _bodyBuffer.append(sanitizeString(anchorText));
} else { } else {
_bodyBuffer.append(sanitizeString(anchorText)); _bodyBuffer.append(sanitizeString(anchorText));
@@ -250,10 +252,10 @@ public class RSSRenderer extends HTMLRenderer {
for (int i = 0; i < _addresses.size(); i++) { for (int i = 0; i < _addresses.size(); i++) {
Address a = (Address)_addresses.get(i); Address a = (Address)_addresses.get(i);
String knownName = null; PetName pn = null;
if (_user != null) if (_user != null)
knownName = _user.getPetNameDB().getNameByLocation(a.location); pn = _user.getPetNameDB().getLocation(a.location);
if (knownName == null) { if (pn == null) {
StringBuffer url = new StringBuffer(128); StringBuffer url = new StringBuffer(128);
url.append("addresses.jsp?network="); url.append("addresses.jsp?network=");
url.append(sanitizeTagParam(a.schema)).append("&location="); url.append(sanitizeTagParam(a.schema)).append("&location=");

View File

@@ -100,10 +100,9 @@ public class ArchiveViewerBean {
for (int i = 0; i < index.getNewestBlogCount(); i++) { for (int i = 0; i < index.getNewestBlogCount(); i++) {
Hash cur = index.getNewestBlog(i); Hash cur = index.getNewestBlog(i);
String knownName = user.getPetNameDB().getNameByLocation(cur.toBase64()); PetName pn = user.getPetNameDB().getLocation(cur.toBase64());
PetName pn = null; String knownName = null;
if (knownName != null) { if (pn != null) {
pn = user.getPetNameDB().get(knownName);
knownName = pn.getName(); knownName = pn.getName();
} }
if ( (pn != null) && (pn.isMember("Ignore")) ) if ( (pn != null) && (pn.isMember("Ignore")) )
@@ -128,10 +127,9 @@ public class ArchiveViewerBean {
Set blogs = index.getUniqueBlogs(); Set blogs = index.getUniqueBlogs();
for (Iterator iter = blogs.iterator(); iter.hasNext(); ) { for (Iterator iter = blogs.iterator(); iter.hasNext(); ) {
Hash cur = (Hash)iter.next(); Hash cur = (Hash)iter.next();
String knownName = user.getPetNameDB().getNameByLocation(cur.toBase64()); PetName pn = user.getPetNameDB().getLocation(cur.toBase64());
PetName pn = null; String knownName = null;
if (knownName != null) { if (pn != null) {
pn = user.getPetNameDB().get(knownName);
knownName = pn.getName(); knownName = pn.getName();
} }
if ( (pn != null) && (pn.isMember("Ignore")) ) if ( (pn != null) && (pn.isMember("Ignore")) )
@@ -494,7 +492,7 @@ public class ArchiveViewerBean {
PetNameDB db = user.getPetNameDB(); PetNameDB db = user.getPetNameDB();
for (Iterator iter = db.getNames().iterator(); iter.hasNext(); ) { for (Iterator iter = db.getNames().iterator(); iter.hasNext(); ) {
String name = (String)iter.next(); String name = (String)iter.next();
PetName pn = db.get(name); PetName pn = db.getName(name);
if ("syndie".equals(pn.getNetwork()) && "syndieblog".equals(pn.getProtocol()) && pn.isMember(group)) { if ("syndie".equals(pn.getNetwork()) && "syndieblog".equals(pn.getProtocol()) && pn.isMember(group)) {
byte pnLoc[] = Base64.decode(pn.getLocation()); byte pnLoc[] = Base64.decode(pn.getLocation());
if (pnLoc != null) { if (pnLoc != null) {
@@ -517,16 +515,13 @@ public class ArchiveViewerBean {
BlogURI uri = (BlogURI)uris.get(i); BlogURI uri = (BlogURI)uris.get(i);
Hash k = uri.getKeyHash(); Hash k = uri.getKeyHash();
if (k == null) continue; if (k == null) continue;
String pname = user.getPetNameDB().getNameByLocation(k.toBase64()); PetName pn = user.getPetNameDB().getLocation(k.toBase64());
if (pname != null) {
PetName pn = user.getPetNameDB().get(pname);
if ( (pn != null) && (pn.isMember("Ignore")) ) { if ( (pn != null) && (pn.isMember("Ignore")) ) {
uris.remove(i); uris.remove(i);
i--; i--;
} }
} }
} }
}
private static void sort(List uris) { private static void sort(List uris) {
TreeMap ordered = new TreeMap(); TreeMap ordered = new TreeMap();

View File

@@ -99,7 +99,7 @@ public class PostBean {
if (_log.shouldLog(Log.DEBUG)) if (_log.shouldLog(Log.DEBUG))
_log.debug("Posted the entry " + uri.toString() + " (archive = " + _archive + ")"); _log.debug("Posted the entry " + uri.toString() + " (archive = " + _archive + ")");
if ( (uri != null) && BlogManager.instance().authorizeRemote(_user) ) { if ( (uri != null) && BlogManager.instance().authorizeRemote(_user) ) {
PetName pn = _user.getPetNameDB().get(_archive); PetName pn = _user.getPetNameDB().getName(_archive);
if (_log.shouldLog(Log.DEBUG)) if (_log.shouldLog(Log.DEBUG))
_log.debug("Archive to petname? " + pn + " (protocol: " + (pn != null ? pn.getProtocol() : "") + ")"); _log.debug("Archive to petname? " + pn + " (protocol: " + (pn != null ? pn.getProtocol() : "") + ")");
if ( (pn != null) && ("syndiearchive".equals(pn.getProtocol())) ) { if ( (pn != null) && ("syndiearchive".equals(pn.getProtocol())) ) {

View File

@@ -6,6 +6,7 @@ import java.util.*;
import java.util.zip.*; import java.util.zip.*;
import net.i2p.I2PAppContext; import net.i2p.I2PAppContext;
import net.i2p.client.naming.PetNameDB; import net.i2p.client.naming.PetNameDB;
import net.i2p.client.naming.PetName;
import net.i2p.data.*; import net.i2p.data.*;
import net.i2p.util.EepGet; import net.i2p.util.EepGet;
import net.i2p.util.EepGetScheduler; import net.i2p.util.EepGetScheduler;
@@ -61,8 +62,8 @@ public class RemoteArchiveBean {
private boolean ignoreBlog(User user, Hash blog) { private boolean ignoreBlog(User user, Hash blog) {
PetNameDB db = user.getPetNameDB(); PetNameDB db = user.getPetNameDB();
String name = db.getNameByLocation(blog.toBase64()); PetName pn = db.getLocation(blog.toBase64());
return ( (name != null) && (db.get(name).isMember("Ignore")) ); return ( (pn!= null) && (pn.isMember("Ignore")) );
} }
public void fetchMetadata(User user, Map parameters) { public void fetchMetadata(User user, Map parameters) {

View File

@@ -11,13 +11,14 @@ if (user.getAuthenticated() && (null != request.getParameter("action")) ) {
group = "Ignore"; group = "Ignore";
boolean unignore = ("Unignore blog".equals(request.getParameter("action"))); boolean unignore = ("Unignore blog".equals(request.getParameter("action")));
String name = user.getPetNameDB().getNameByLocation(blog); PetName pn = user.getPetNameDB().getLocation(blog);
String name = null;
if (pn != null) name = pn.getName();
if (name == null) if (name == null)
name = request.getParameter("name"); name = request.getParameter("name");
if (name == null) if (name == null)
name = blog; name = blog;
if ( (name != null) && (blog != null) && ( (group != null) || (unignore) ) ) { if ( (name != null) && (blog != null) && ( (group != null) || (unignore) ) ) {
PetName pn = user.getPetNameDB().get(name);
if (pn != null) { if (pn != null) {
if (unignore) if (unignore)
pn.removeGroup("Ignore"); pn.removeGroup("Ignore");
@@ -26,7 +27,7 @@ if (user.getAuthenticated() && (null != request.getParameter("action")) ) {
} else { } else {
pn = new PetName(name, "syndie", "syndieblog", blog); pn = new PetName(name, "syndie", "syndieblog", blog);
pn.addGroup(group); pn.addGroup(group);
user.getPetNameDB().set(name, pn); user.getPetNameDB().add(pn);
} }
BlogManager.instance().saveUser(user); BlogManager.instance().saveUser(user);
} }

View File

@@ -20,7 +20,7 @@ if (!user.getAuthenticated()) {
String action = request.getParameter("action"); String action = request.getParameter("action");
if ( (action != null) && ("Change".equals(action)) ) { if ( (action != null) && ("Change".equals(action)) ) {
String oldPetname = request.getParameter("petname"); String oldPetname = request.getParameter("petname");
PetName cur = names.get(oldPetname); PetName cur = names.getName(oldPetname);
if (cur != null) { if (cur != null) {
cur.setName(request.getParameter("name")); cur.setName(request.getParameter("name"));
cur.setNetwork(request.getParameter("network")); cur.setNetwork(request.getParameter("network"));
@@ -28,8 +28,8 @@ if (!user.getAuthenticated()) {
cur.setIsPublic(null != request.getParameter("isPublic")); cur.setIsPublic(null != request.getParameter("isPublic"));
cur.setLocation(request.getParameter("location")); cur.setLocation(request.getParameter("location"));
cur.setGroups(request.getParameter("groups")); cur.setGroups(request.getParameter("groups"));
names.remove(oldPetname); names.removeName(oldPetname);
names.set(cur.getName(), cur); names.add(cur);
names.store(user.getAddressbookLocation()); names.store(user.getAddressbookLocation());
if ( ("syndiearchive".equals(cur.getProtocol())) && (BlogManager.instance().authorizeRemote(user)) ) { if ( ("syndiearchive".equals(cur.getProtocol())) && (BlogManager.instance().authorizeRemote(user)) ) {
if (null != request.getParameter("scheduleSyndication")) { if (null != request.getParameter("scheduleSyndication")) {
@@ -43,7 +43,7 @@ if (!user.getAuthenticated()) {
%><span class="b_addrMsgOk">Address updated</span><% %><span class="b_addrMsgOk">Address updated</span><%
} }
} else if ( (action != null) && ("Add".equals(action)) ) { } else if ( (action != null) && ("Add".equals(action)) ) {
PetName cur = names.get(request.getParameter("name")); PetName cur = names.getName(request.getParameter("name"));
if (cur != null) { %><span class="b_addrMsgErr">Address already exists</span><% } else { if (cur != null) { %><span class="b_addrMsgErr">Address already exists</span><% } else {
cur = new PetName(); cur = new PetName();
cur.setName(request.getParameter("name")); cur.setName(request.getParameter("name"));
@@ -52,7 +52,7 @@ if (!user.getAuthenticated()) {
cur.setIsPublic(null != request.getParameter("isPublic")); cur.setIsPublic(null != request.getParameter("isPublic"));
cur.setLocation(request.getParameter("location")); cur.setLocation(request.getParameter("location"));
cur.setGroups(request.getParameter("groups")); cur.setGroups(request.getParameter("groups"));
names.set(cur.getName(), cur); names.add(cur);
names.store(user.getAddressbookLocation()); names.store(user.getAddressbookLocation());
if ( ("syndiearchive".equals(cur.getProtocol())) && (BlogManager.instance().authorizeRemote(user)) ) { if ( ("syndiearchive".equals(cur.getProtocol())) && (BlogManager.instance().authorizeRemote(user)) ) {
if (null != request.getParameter("scheduleSyndication")) { if (null != request.getParameter("scheduleSyndication")) {
@@ -63,13 +63,13 @@ if (!user.getAuthenticated()) {
%><span class="b_addrMsgOk">Address added</span><% %><span class="b_addrMsgOk">Address added</span><%
} }
} else if ( (action != null) && ("Delete".equals(action)) ) { } else if ( (action != null) && ("Delete".equals(action)) ) {
PetName cur = names.get(request.getParameter("name")); PetName cur = names.getName(request.getParameter("name"));
if (cur != null) { if (cur != null) {
if ( ("syndiearchive".equals(cur.getProtocol())) && (BlogManager.instance().authorizeRemote(user)) ) { if ( ("syndiearchive".equals(cur.getProtocol())) && (BlogManager.instance().authorizeRemote(user)) ) {
BlogManager.instance().unscheduleSyndication(cur.getLocation()); BlogManager.instance().unscheduleSyndication(cur.getLocation());
BlogManager.instance().writeConfig(); BlogManager.instance().writeConfig();
} }
names.remove(cur.getName()); names.removeName(cur.getName());
names.store(user.getAddressbookLocation()); names.store(user.getAddressbookLocation());
%><span class="b_addrMsgOk">Address removed</span><% %><span class="b_addrMsgOk">Address removed</span><%
} }
@@ -90,7 +90,7 @@ if (!user.getAuthenticated()) {
<% <%
StringBuffer buf = new StringBuffer(128); StringBuffer buf = new StringBuffer(128);
for (Iterator iter = sorted.iterator(); iter.hasNext(); ) { for (Iterator iter = sorted.iterator(); iter.hasNext(); ) {
PetName name = names.get((String)iter.next()); PetName name = names.getName((String)iter.next());
buf.append("<tr class=\"b_addrDetail\"><form action=\"addresses.jsp\" method=\"POST\">"); buf.append("<tr class=\"b_addrDetail\"><form action=\"addresses.jsp\" method=\"POST\">");
buf.append("<input type=\"hidden\" name=\"petname\" value=\"").append(name.getName()).append("\" />"); buf.append("<input type=\"hidden\" name=\"petname\" value=\"").append(name.getName()).append("\" />");
buf.append("<td class=\"b_addrName\"><input class=\"b_addrName\" type=\"text\" size=\"20\" name=\"name\" value=\"").append(name.getName()).append("\" /></td>"); buf.append("<td class=\"b_addrName\"><input class=\"b_addrName\" type=\"text\" size=\"20\" name=\"name\" value=\"").append(name.getName()).append("\" /></td>");

View File

@@ -66,7 +66,7 @@ if (!user.getAuthenticated()) {
PetNameDB db = user.getPetNameDB(); PetNameDB db = user.getPetNameDB();
if (entryHeaders == null) entryHeaders = ""; if (entryHeaders == null) entryHeaders = "";
for (Iterator iter = db.getNames().iterator(); iter.hasNext(); ) { for (Iterator iter = db.getNames().iterator(); iter.hasNext(); ) {
PetName pn = db.get((String)iter.next()); PetName pn = db.getName((String)iter.next());
if ( (pn != null) && (pn.getIsPublic()) ) { if ( (pn != null) && (pn.getIsPublic()) ) {
entryHeaders = entryHeaders + '\n' + HTMLRenderer.HEADER_PETNAME + ": " + entryHeaders = entryHeaders + '\n' + HTMLRenderer.HEADER_PETNAME + ": " +
pn.getName() + "\t" + pn.getNetwork() + "\t" + pn.getProtocol() + "\t" + pn.getLocation(); pn.getName() + "\t" + pn.getNetwork() + "\t" + pn.getProtocol() + "\t" + pn.getLocation();
@@ -107,7 +107,7 @@ PetNameDB db = user.getPetNameDB();
TreeSet names = new TreeSet(); TreeSet names = new TreeSet();
for (Iterator iter = db.getNames().iterator(); iter.hasNext(); ) { for (Iterator iter = db.getNames().iterator(); iter.hasNext(); ) {
String name = (String)iter.next(); String name = (String)iter.next();
PetName pn = db.get(name); PetName pn = db.getName(name);
if ("syndiearchive".equals(pn.getProtocol())) if ("syndiearchive".equals(pn.getProtocol()))
names.add(pn.getName()); names.add(pn.getName());
} }

View File

@@ -29,8 +29,8 @@ if (!BlogManager.instance().authorizeRemote(user)) {
<input class="b_remoteChooserHost" type="text" size="10" name="proxyhost" value="<%=BlogManager.instance().getDefaultProxyHost()%>" /> <input class="b_remoteChooserHost" type="text" size="10" name="proxyhost" value="<%=BlogManager.instance().getDefaultProxyHost()%>" />
<input class="b_remoteChooserPort" type="text" size="4" name="proxyport" value="<%=BlogManager.instance().getDefaultProxyPort()%>" /><br /> <input class="b_remoteChooserPort" type="text" size="4" name="proxyport" value="<%=BlogManager.instance().getDefaultProxyPort()%>" /><br />
<span class="b_remoteChooserField">Bookmarked archives:</span> <select class="b_remoteChooserPN" name="archivepetname"><option value="">Custom location</option><% <span class="b_remoteChooserField">Bookmarked archives:</span> <select class="b_remoteChooserPN" name="archivepetname"><option value="">Custom location</option><%
for (Iterator iter = user.getPetNameDB().getNames().iterator(); iter.hasNext(); ) { for (Iterator iter = user.getPetNameDB().iterator(); iter.hasNext(); ) {
PetName pn = user.getPetNameDB().get((String)iter.next()); PetName pn = (PetName)iter.next();
if ("syndiearchive".equals(pn.getProtocol())) { if ("syndiearchive".equals(pn.getProtocol())) {
%><option value="<%=HTMLRenderer.sanitizeTagParam(pn.getName())%>"><%=HTMLRenderer.sanitizeString(pn.getName())%></option><% %><option value="<%=HTMLRenderer.sanitizeTagParam(pn.getName())%>"><%=HTMLRenderer.sanitizeString(pn.getName())%></option><%
} }
@@ -45,7 +45,7 @@ for (Iterator iter = user.getPetNameDB().getNames().iterator(); iter.hasNext();
String location = request.getParameter("location"); String location = request.getParameter("location");
String pn = request.getParameter("archivepetname"); String pn = request.getParameter("archivepetname");
if ( (pn != null) && (pn.trim().length() > 0) ) { if ( (pn != null) && (pn.trim().length() > 0) ) {
PetName pnval = user.getPetNameDB().get(pn); PetName pnval = user.getPetNameDB().getName(pn);
if (pnval != null) location = pnval.getLocation(); if (pnval != null) location = pnval.getLocation();
} }
remote.fetchIndex(user, request.getParameter("schema"), location, request.getParameter("proxyhost"), request.getParameter("proxyport")); remote.fetchIndex(user, request.getParameter("schema"), location, request.getParameter("proxyhost"), request.getParameter("proxyport"));

View File

@@ -16,14 +16,20 @@ public class PetNameDB {
_names = Collections.synchronizedMap(new HashMap()); _names = Collections.synchronizedMap(new HashMap());
} }
public PetName get(String name) { return (PetName)_names.get(name); } public PetName getName(String name) { return (PetName)_names.get(name); }
public boolean exists(String name) { return _names.containsKey(name); } public void add(PetName pn) { _names.put(pn.getName(), pn); }
public void set(String name, PetName pn) { _names.put(name, pn); } public void clear() { _names.clear(); }
public void remove(String name) { _names.remove(name); } public boolean contains(PetName pn) { return _names.containsValue(pn); }
public boolean containsName(String name) { return _names.containsKey(name); }
public boolean isEmpty() { return _names.isEmpty(); }
public Iterator iterator() { return new LinkedList(_names.values()).iterator(); }
public void remove(PetName pn) { _names.values().remove(pn); }
public void removeName(String name) { _names.remove(name); }
public int size() { return _names.size(); }
public Set getNames() { return new HashSet(_names.keySet()); } public Set getNames() { return new HashSet(_names.keySet()); }
public List getGroups() { public List getGroups() {
List rv = new ArrayList(); List rv = new ArrayList();
for (Iterator iter = new HashSet(_names.values()).iterator(); iter.hasNext(); ) { for (Iterator iter = iterator(); iter.hasNext(); ) {
PetName name = (PetName)iter.next(); PetName name = (PetName)iter.next();
for (int i = 0; i < name.getGroupCount(); i++) for (int i = 0; i < name.getGroupCount(); i++)
if (!rv.contains(name.getGroup(i))) if (!rv.contains(name.getGroup(i)))
@@ -32,13 +38,13 @@ public class PetNameDB {
return rv; return rv;
} }
public String getNameByLocation(String location) { public PetName getLocation(String location) {
if (location == null) return null; if (location == null) return null;
synchronized (_names) { synchronized (_names) {
for (Iterator iter = _names.values().iterator(); iter.hasNext(); ) { for (Iterator iter = iterator(); iter.hasNext(); ) {
PetName name = (PetName)iter.next(); PetName name = (PetName)iter.next();
if ( (name.getLocation() != null) && (name.getLocation().trim().equals(location.trim())) ) if ( (name.getLocation() != null) && (name.getLocation().trim().equals(location.trim())) )
return name.getName(); return name;
} }
} }
return null; return null;
@@ -55,7 +61,7 @@ public class PetNameDB {
while ( (line = in.readLine()) != null) { while ( (line = in.readLine()) != null) {
PetName name = new PetName(line); PetName name = new PetName(line);
if (name.getName() != null) if (name.getName() != null)
_names.put(name.getName(), name); add(name);
} }
} finally { } finally {
in.close(); in.close();
@@ -66,8 +72,8 @@ public class PetNameDB {
Writer out = null; Writer out = null;
try { try {
out = new OutputStreamWriter(new FileOutputStream(location), "UTF-8"); out = new OutputStreamWriter(new FileOutputStream(location), "UTF-8");
for (Iterator names = getNames().iterator(); names.hasNext(); ) { for (Iterator iter = iterator(); iter.hasNext(); ) {
PetName name = get((String)names.next()); PetName name = (PetName)iter.next();
if (name != null) if (name != null)
out.write(name.toString() + "\n"); out.write(name.toString() + "\n");
} }

View File

@@ -51,7 +51,7 @@ public class PetNameNamingService extends NamingService {
} }
public Destination lookup(String hostname) { public Destination lookup(String hostname) {
PetName name = _petnameDb.get(hostname); PetName name = _petnameDb.getName(hostname);
if (name != null && name.getNetwork().equalsIgnoreCase("i2p")) { if (name != null && name.getNetwork().equalsIgnoreCase("i2p")) {
return lookupBase64(name.getLocation()); return lookupBase64(name.getLocation());
} else { } else {
@@ -60,6 +60,6 @@ public class PetNameNamingService extends NamingService {
} }
public String reverseLookup(Destination dest) { public String reverseLookup(Destination dest) {
return _petnameDb.getNameByLocation(dest.toBase64()); return _petnameDb.getLocation(dest.toBase64()).getName();
} }
} }