Changeset ca5484a


Ignore:
Timestamp:
Mar 24, 2011 3:00:47 AM (9 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
7751661f
Parents:
d6999a33
Message:
  • Add details page in susidns
  • Add source in Daemon
  • Honor list property in BFNS.lookup()
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • apps/addressbook/java/src/net/i2p/addressbook/Daemon.java

    rd6999a33 rca5484a  
    116116        // when scanning large subscription results (i.e. those that return the whole file, not just the new entries) -
    117117        // we load all the known hostnames into a Set one time.
     118        // This also has the advantage of not flushing the NamingService's LRU cache.
    118119        String nsClass = router.getClass().getSimpleName();
    119120        boolean isTextFile = nsClass.equals("HostsTxtNamingService") || nsClass.equals("SingleFileNamingService");
     
    153154                        if (AddressBook.isValidKey(key)) {
    154155                            Destination dest = new Destination(entry.getValue());
    155                             boolean success = router.put(key, dest);
     156                            Properties props = new Properties();
     157                            props.setProperty("s", sub.getLocation());
     158                            boolean success = router.put(key, dest, props);
    156159                            if (log != null) {
    157160                                if (success)
  • apps/susidns/src/java/src/i2p/susi/dns/AddressBean.java

    rd6999a33 rca5484a  
    2525package i2p.susi.dns;
    2626
     27import java.util.Date;
     28import java.util.Properties;
     29
    2730import net.i2p.I2PAppContext;
    2831import net.i2p.data.Base32;
    2932import net.i2p.data.Base64;
     33import net.i2p.data.Certificate;
    3034
    3135public class AddressBean
    3236{
    33         private String name, destination;
     37        private final String name, destination;
     38        private Properties props;
    3439
    35         public AddressBean()
    36         {
    37                
    38         }
    39        
    4040        public AddressBean(String name, String destination)
    4141        {
     
    4949        }
    5050
    51         public void setDestination(String destination)
    52         {
    53                 this.destination = destination;
    54         }
    55 
    5651        public String getName()
    5752        {
    5853                return name;
    59         }
    60 
    61         public void setName(String name)
    62         {
    63                 this.name = name;
    6454        }
    6555
     
    7363                return Base32.encode(hash) + ".b32.i2p";
    7464        }
     65
     66        /** @since 0.8.6 */
     67        public void setProperties(Properties p) {
     68                props = p;
     69        }
     70
     71        /** @since 0.8.6 */
     72        public String getSource() {
     73                String rv = getProp("s");
     74                if (rv.startsWith("http://"))
     75                    rv = "<a href=\"" + rv + "\">" + rv + "</a>";
     76                return rv;
     77        }
     78
     79        /** @since 0.8.6 */
     80        public String getAdded() {
     81                return getDate("a");
     82        }
     83
     84        /** @since 0.8.6 */
     85        public String getModded() {
     86                return getDate("m");
     87        }
     88
     89
     90        /** @since 0.8.6 */
     91        public String getNotes() {
     92                return getProp("notes");
     93        }
     94
     95        /**
     96         * Do this the easy way
     97         * @since 0.8.6
     98         */
     99        public String getCert() {
     100                // (4 / 3) * (pubkey length + signing key length)
     101                String cert = destination.substring(512);
     102                if (cert.equals("AAAA"))
     103                        return _("None");
     104                byte[] enc = Base64.decode(cert);
     105                if (enc == null)
     106                        // shouldn't happen
     107                        return "invalid";
     108                int type = enc[0] & 0xff;
     109                switch (type) {
     110                        case Certificate.CERTIFICATE_TYPE_HASHCASH:
     111                                return _("Hashcash");
     112                        case Certificate.CERTIFICATE_TYPE_HIDDEN:
     113                                return _("Hidden");
     114                        case Certificate.CERTIFICATE_TYPE_SIGNED:
     115                                return _("Signed");
     116                        default:
     117                                return _("Type {0}", type);
     118                }
     119        }
     120
     121        /** @since 0.8.6 */
     122        private String getProp(String p) {
     123                if (props == null)
     124                    return "";
     125                String rv = props.getProperty(p);
     126                return rv != null ? rv : "";
     127        }
     128
     129        /** @since 0.8.6 */
     130        private String getDate(String key) {
     131                String d = getProp(key);
     132                if (d.length() > 0) {
     133                        try {
     134                                d = FormatDate.format(Long.parseLong(d));
     135                        } catch (NumberFormatException nfe) {}
     136                }
     137                return d;
     138        }
     139
     140        /** translate */
     141        private static String _(String s) {
     142                return Messages.getString(s);
     143        }
     144
     145        /** translate */
     146        private static String _(String s, Object o) {
     147                return Messages.getString(s, o);
     148        }
    75149}
  • apps/susidns/src/java/src/i2p/susi/dns/NamingServiceBean.java

    rd6999a33 rca5484a  
    4646{
    4747        private static final String DEFAULT_NS = "BlockfileNamingService";
     48        private String detail;
    4849
    4950        private boolean isDirect() {
     
    210211                        Properties nsOptions = new Properties();
    211212                        // only blockfile needs this
    212                         nsOptions.setProperty("list", getFileName());
     213                        nsOptions.setProperty("list", getFileName());
    213214                        if( lastSerial != null && serial != null && serial.compareTo( lastSerial ) == 0 ) {
    214215                                boolean changed = false;
     
    281282                return message;
    282283        }
     284
     285        public void setH(String h) {
     286                this.detail = h;
     287        }
     288
     289        public AddressBean getLookup() {
     290                if (this.detail == null)
     291                        return null;
     292                Properties nsOptions = new Properties();
     293                Properties outProps = new Properties();
     294                nsOptions.setProperty("list", getFileName());
     295                Destination dest = getNamingService().lookup(this.detail, nsOptions, outProps);
     296                if (dest == null)
     297                        return null;
     298                AddressBean rv = new AddressBean(this.detail, dest.toBase64());
     299                rv.setProperties(outProps);
     300                return rv;
     301        }
    283302}
  • apps/susidns/src/jsp/addressbook.jsp

    rd6999a33 rca5484a  
    154154</td><td class="names">
    155155<span class="addrhlpr">(<a href="http://${addr.b32}/">b32</a>)</span>
    156 <span class="addrhlpr">(<a href="http://${addr.name}/?i2paddresshelper=${addr.destination}"><%=intl._("helper")%></a>)</span>
     156<span class="addrhlpr">(<a href="details.jsp?h=${addr.name}"><%=intl._("details")%></a>)</span>
    157157</td>
    158158<td class="destinations"><textarea rows="1" style="height: 3em;" cols="40" wrap="off" readonly="readonly" name="dest_${addr.name}" >${addr.destination}</textarea></td>
  • core/java/src/net/i2p/client/naming/BlockfileNamingService.java

    rd6999a33 rca5484a  
    348348    ////////// Start NamingService API
    349349
     350    /*
     351     * @param options If non-null and contains the key "list", lookup in
     352     *                that list only, otherwise all lists
     353     */
    350354    @Override
    351355    public Destination lookup(String hostname, Properties lookupOptions, Properties storedOptions) {
    352         Destination d = super.lookup(hostname, null, null);
    353         if (d != null)
    354             return d;
     356        String listname = null;
     357        if (lookupOptions != null)
     358            listname = lookupOptions.getProperty("list");
     359
     360        Destination d = null;
     361        // only use cache if we aren't retreiving options or specifying the list
     362        if (listname == null && storedOptions == null) {
     363            d = super.lookup(hostname, null, null);
     364            if (d != null)
     365                return d;
     366        }
    355367
    356368        String key = hostname.toLowerCase();
     
    359371                return null;
    360372            for (String list : _lists) {
     373                if (listname != null && !list.equals(listname))
     374                    continue;
    361375                try {
    362376                    DestEntry de = getEntry(list, key);
Note: See TracChangeset for help on using the changeset viewer.