Fix for #588 part 2: moved escape/unescape functions to net.i2p.data.DataHelper

This commit is contained in:
str4d
2012-01-17 02:11:56 +00:00
parent 1e8c968bd6
commit 452096b976
3 changed files with 47 additions and 41 deletions

View File

@ -10,6 +10,7 @@ import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.Set; import java.util.Set;
import net.i2p.data.DataHelper;
import net.i2p.router.client.ClientManagerFacadeImpl; import net.i2p.router.client.ClientManagerFacadeImpl;
import net.i2p.router.startup.ClientAppConfig; import net.i2p.router.startup.ClientAppConfig;
import net.i2p.router.startup.LoadClientAppsJob; import net.i2p.router.startup.LoadClientAppsJob;
@ -165,7 +166,7 @@ public class ConfigClientsHandler extends FormHandler {
if (! ("webConsole".equals(ca.clientName) || "Web console".equals(ca.clientName))) if (! ("webConsole".equals(ca.clientName) || "Web console".equals(ca.clientName)))
ca.disabled = val == null; ca.disabled = val == null;
// edit of an existing entry // edit of an existing entry
String desc = unescapeHTML(getJettyString("desc" + cur)); String desc = DataHelper.unescapeHTML(getJettyString("desc" + cur));
if (desc != null) { if (desc != null) {
int spc = desc.indexOf(" "); int spc = desc.indexOf(" ");
String clss = desc; String clss = desc;
@ -181,7 +182,7 @@ public class ConfigClientsHandler extends FormHandler {
} }
int newClient = clients.size(); int newClient = clients.size();
String newDesc = unescapeHTML(getJettyString("desc" + newClient)); String newDesc = DataHelper.unescapeHTML(getJettyString("desc" + newClient));
if (newDesc != null && newDesc.trim().length() > 0) { if (newDesc != null && newDesc.trim().length() > 0) {
// new entry // new entry
int spc = newDesc.indexOf(" "); int spc = newDesc.indexOf(" ");
@ -399,22 +400,4 @@ public class ConfigClientsHandler extends FormHandler {
_context.router().saveConfig(); _context.router().saveConfig();
addFormNotice(_("Interface configuration saved successfully - restart required to take effect.")); addFormNotice(_("Interface configuration saved successfully - restart required to take effect."));
} }
/**
* Unescapes a string taken from HTML
*/
private String unescapeHTML(String escaped) {
Map<String, String> map = new HashMap<String, String>();
map.put("&quot;","\"");
map.put("&amp;","&");
map.put("&lt;","<");
map.put("&gt;",">");
String unescaped = escaped;
for (Map.Entry<String, String> entry : map.entrySet()) {
String k = entry.getKey();
String v = entry.getValue();
unescaped = unescaped.replaceAll(k, v);
}
return unescaped;
}
} }

View File

@ -3,14 +3,13 @@ package net.i2p.router.web;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.TreeSet; import java.util.TreeSet;
import net.i2p.data.DataHelper;
import net.i2p.router.client.ClientManagerFacadeImpl; import net.i2p.router.client.ClientManagerFacadeImpl;
import net.i2p.router.startup.ClientAppConfig; import net.i2p.router.startup.ClientAppConfig;
import net.i2p.util.Addresses; import net.i2p.util.Addresses;
@ -236,7 +235,7 @@ public class ConfigClientsHelper extends HelperBase {
boolean enabled, boolean ro, String desc, boolean edit, boolean enabled, boolean ro, String desc, boolean edit,
boolean showEditButton, boolean showUpdateButton, boolean showStopButton, boolean showEditButton, boolean showUpdateButton, boolean showStopButton,
boolean showDeleteButton, boolean showStartButton) { boolean showDeleteButton, boolean showStartButton) {
String escapeddesc = escapeHTML(desc); String escapeddesc = DataHelper.escapeHTML(desc);
buf.append("<tr><td class=\"mediumtags\" align=\"right\" width=\"25%\">"); buf.append("<tr><td class=\"mediumtags\" align=\"right\" width=\"25%\">");
if (urlify && enabled) { if (urlify && enabled) {
String link = "/"; String link = "/";
@ -301,22 +300,4 @@ public class ConfigClientsHelper extends HelperBase {
String rv = t1.replace('>', ' '); String rv = t1.replace('>', ' ');
return rv; return rv;
} }
/**
* Escapes a string for inclusion in HTML
*/
private String escapeHTML(String unescaped) {
Map<String, String> map = new HashMap<String, String>();
map.put("\"","&quot;");
map.put("&","&amp;");
map.put("<","&lt;");
map.put(">","&gt;");
String escaped = unescaped;
for (Map.Entry<String, String> entry : map.entrySet()) {
String k = entry.getKey();
String v = entry.getValue();
escaped = escaped.replaceAll(k, v);
}
return escaped;
}
} }

View File

@ -1468,6 +1468,48 @@ public class DataHelper {
return rv; return rv;
} }
/**
* Escape a string for inclusion in HTML
* @param unescaped the unescaped string, may be null
* @return the escaped string, or an empty string if null is passed in
*/
public static String escapeHTML(String unescaped) {
if (unescaped == null) return "";
Map<String, String> map = new HashMap<String, String>();
map.put("\"","&quot;");
map.put("&","&amp;");
map.put("<","&lt;");
map.put(">","&gt;");
String escaped = unescaped;
for (Map.Entry<String, String> entry : map.entrySet()) {
String k = entry.getKey();
String v = entry.getValue();
escaped = escaped.replaceAll(k, v);
}
return escaped;
}
/**
* Unescape a string taken from HTML
* @param escaped the escaped string, may be null
* @return the unescaped string, or an empty string if null is passed in
*/
public static String unescapeHTML(String escaped) {
if (escaped == null) return "";
Map<String, String> map = new HashMap<String, String>();
map.put("&quot;","\"");
map.put("&amp;","&");
map.put("&lt;","<");
map.put("&gt;",">");
String unescaped = escaped;
for (Map.Entry<String, String> entry : map.entrySet()) {
String k = entry.getKey();
String v = entry.getValue();
unescaped = unescaped.replaceAll(k, v);
}
return unescaped;
}
public static final int MAX_UNCOMPRESSED = 40*1024; public static final int MAX_UNCOMPRESSED = 40*1024;
public static final int MAX_COMPRESSION = Deflater.BEST_COMPRESSION; public static final int MAX_COMPRESSION = Deflater.BEST_COMPRESSION;
public static final int NO_COMPRESSION = Deflater.NO_COMPRESSION; public static final int NO_COMPRESSION = Deflater.NO_COMPRESSION;