Changeset 33964fac


Ignore:
Timestamp:
Mar 1, 2012 11:38:22 PM (8 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
75eda7e
Parents:
e7bcff5e
Message:

Fixes for:

IPv6 addresses
Reject all hostnames w/o dots except IPv6
http://i2p/b64dest

Log tweaks
Add nicer ahelper-notfound error page

Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java

    re7bcff5e r33964fac  
    109109         "wrong BASE64 I2P Destination or the link you are following is "+
    110110         "bad. The host (or the WWW proxy, if you're using one) could also "+
    111      "be temporarily offline.  You may want to <b>retry</b>.  "+
     111         "be temporarily offline.  You may want to <b>retry</b>.  "+
    112112         "Could not find the following Destination:<BR><BR><div>")
    113113        .getBytes();
     
    439439                    host = requestURI.getHost();
    440440                    if (protocol == null || host == null) {
    441                         _log.warn(request);
     441                        _log.warn("Null protocol or host: " + request);
    442442                        method = null;
    443443                        break;
     
    476476                            host = getHostName(destination);
    477477                            targetRequest = requestURI.toASCIIString();
    478                             String newPath = dest.substring(slash);
    479                             String newURI = requestURI.getRawPath();
     478                            String newURI = oldPath.substring(slash);
    480479                            String query = requestURI.getRawQuery();
    481480                            if (query != null)
     
    490489                            }
    491490                        } else {
    492                             _log.warn(request);
     491                            _log.warn("Bad http://i2p/b64dest " + request);
    493492                            host = null;
    494493                            break;
     
    502501                        if (requestURI.getPort() >= 0) {
    503502                            // TODO support I2P ports someday
     503                            //if (port >= 0)
     504                            //    host = host + ':' + port;
    504505                            if (_log.shouldLog(Log.WARN))
    505506                                _log.warn(getPrefix(requestId) + "Removing port from [" + request + "]");
     
    652653                        s.close();
    653654                        return;
    654                     } else if (host.indexOf(".") != -1) {
    655                         host = host + ":" + port;
     655                    } else if (host.contains(".") || host.startsWith("[")) {
     656                        if (port >= 0)
     657                            host = host + ':' + port;
    656658                        // The request must be forwarded to a WWW proxy
    657659                        if (_log.shouldLog(Log.DEBUG))
     
    680682                        // and not a destination ???
    681683                        // Perhaps something in privatehosts.txt ...
     684                        // Rather than look it up, just bail out.
    682685                        if (_log.shouldLog(Log.WARN))
    683686                            _log.warn("NODOTS, NOI2P: " + request);
    684                         destination = requestURI.getHost();
    685                         host = getHostName(destination);
    686                         targetRequest = requestURI.toASCIIString();
    687                         // FIXME treat as I2P or not???
     687                        if (out != null) {
     688                            out.write(getErrorPage("denied", ERR_REQUEST_DENIED));
     689                            writeFooter(out);
     690                        }
     691                        s.close();
     692                        return;
    688693                    }   // end host name processing
    689694
     
    855860            if (addressHelper != null) {
    856861                clientDest = _context.namingService().lookup(addressHelper);
    857                 // remove bad entries
    858                 if (clientDest == null)
     862                if (clientDest == null) {
     863                    // remove bad entries
    859864                    addressHelpers.remove(destination.toLowerCase(Locale.US));
     865                    if (_log.shouldLog(Log.WARN))
     866                        _log.warn(getPrefix(requestId) + "Could not find destination for " + addressHelper);
     867                    byte[] header = getErrorPage("ahelper-notfound", ERR_AHELPER_NOTFOUND);
     868                    writeErrorMessage(header, out, targetRequest, false, destination, null);
     869                    s.close();
     870                    return;
     871                }
    860872            } else if ("i2p".equals(host)) {
    861873                clientDest = null;
Note: See TracChangeset for help on using the changeset viewer.