Changeset 1e8c968b


Ignore:
Timestamp:
Jan 17, 2012 12:56:49 AM (9 years ago)
Author:
str4d <str4d@…>
Branches:
master
Children:
452096b
Parents:
0a5e0838
Message:

Fix for #588 - HTML escape and unescape descriptions on configclients page

Location:
apps/routerconsole/java/src/net/i2p/router/web
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java

    r0a5e0838 r1e8c968b  
    166166                ca.disabled = val == null;
    167167            // edit of an existing entry
    168             String desc = getJettyString("desc" + cur);
     168            String desc = unescapeHTML(getJettyString("desc" + cur));
    169169            if (desc != null) {
    170170                int spc = desc.indexOf(" ");
     
    182182
    183183        int newClient = clients.size();
    184         String newDesc = getJettyString("desc" + newClient);
     184        String newDesc = unescapeHTML(getJettyString("desc" + newClient));
    185185        if (newDesc != null && newDesc.trim().length() > 0) {
    186186            // new entry
     
    400400        addFormNotice(_("Interface configuration saved successfully - restart required to take effect."));
    401401    }
     402
     403    /**
     404     *  Unescapes a string taken from HTML
     405     */
     406    private String unescapeHTML(String escaped) {
     407        Map<String, String> map = new HashMap<String, String>();
     408        map.put("&quot;","\"");
     409        map.put("&amp;","&");
     410        map.put("&lt;","<");
     411        map.put("&gt;",">");
     412        String unescaped = escaped;
     413        for (Map.Entry<String, String> entry : map.entrySet()) {
     414            String k = entry.getKey();
     415            String v = entry.getValue();
     416            unescaped = unescaped.replaceAll(k, v);
     417        }
     418        return unescaped;
     419    }
    402420}
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java

    r0a5e0838 r1e8c968b  
    44import java.util.ArrayList;
    55import java.util.Date;
     6import java.util.HashMap;
    67import java.util.Iterator;
    78import java.util.List;
     9import java.util.Map;
    810import java.util.Properties;
    911import java.util.Set;
     
    235237                            boolean showEditButton, boolean showUpdateButton, boolean showStopButton,
    236238                            boolean showDeleteButton, boolean showStartButton) {
     239        String escapeddesc = escapeHTML(desc);
    237240        buf.append("<tr><td class=\"mediumtags\" align=\"right\" width=\"25%\">");
    238241        if (urlify && enabled) {
     
    280283        if (edit && !ro) {
    281284            buf.append("<input type=\"text\" size=\"80\" name=\"desc").append(index).append("\" value=\"");
    282             buf.append(desc);
     285            buf.append(escapeddesc);
    283286            buf.append("\" >");
    284287        } else {
    285             buf.append(desc);
     288            buf.append(escapeddesc);
    286289        }
    287290        buf.append("</td></tr>\n");
     
    299302        return rv;
    300303    }
     304
     305    /**
     306     *  Escapes a string for inclusion in HTML
     307     */
     308    private String escapeHTML(String unescaped) {
     309        Map<String, String> map = new HashMap<String, String>();
     310        map.put("\"","&quot;");
     311        map.put("&","&amp;");
     312        map.put("<","&lt;");
     313        map.put(">","&gt;");
     314        String escaped = unescaped;
     315        for (Map.Entry<String, String> entry : map.entrySet()) {
     316            String k = entry.getKey();
     317            String v = entry.getValue();
     318            escaped = escaped.replaceAll(k, v);
     319        }
     320        return escaped;
     321    }
    301322}
Note: See TracChangeset for help on using the changeset viewer.