Changeset 07caf2e


Ignore:
Timestamp:
Jun 13, 2012 7:02:09 PM (9 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
ad1b356
Parents:
6e52ae3
Message:
  • I2PSocketEepGet: Set port to 80
  • I2PTunnel:
    • Pass port through HTTP client proxy
    • HTTP server proxy sets host header to the value of "spoofedhost.xx" option for port xx
    • Set client options more efficiently
Location:
apps
Files:
7 edited

Legend:

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

    r6e52ae3 r07caf2e  
    4747import java.util.List;
    4848import java.util.Locale;
     49import java.util.Map;
    4950import java.util.Properties;
    5051import java.util.Set;
     
    331332     * Sets the event "clientoptions_onResult" = "ok" after completion.
    332333     *
     334     * Deprecated use setClientOptions()
     335     *
    333336     * @param args each args[i] is a key=value pair to add to the options
    334337     * @param l logger to receive events and output
     
    344347                _clientOptions.setProperty(key, val);
    345348            }
     349        }
     350        notifyEvent("clientoptions_onResult", "ok");
     351    }
     352
     353    /**
     354     * A more efficient runClientOptions()
     355     *
     356     * @param opts non-null
     357     * @since 0.9.1
     358     */
     359    public void setClientOptions(Properties opts) {
     360        _clientOptions.clear();
     361        for (Map.Entry e : opts.entrySet()) {
     362             String key = (String) e.getKey();
     363             String val = (String) e.getValue();
     364             _clientOptions.setProperty(key, val);
    346365        }
    347366        notifyEvent("clientoptions_onResult", "ok");
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java

    r6e52ae3 r07caf2e  
    331331            String userAgent = null;
    332332            String authorization = null;
     333            int remotePort = 0;
    333334            while((line = reader.readLine(method)) != null) {
    334335                line = line.trim();
     
    487488                        host = getHostName(destination);
    488489
    489                         if(requestURI.getPort() >= 0) {
    490                             // TODO support I2P ports someday
    491                             //if (port >= 0)
    492                             //    host = host + ':' + port;
     490                        int rPort = requestURI.getPort();
     491                        if (rPort > 0) {
     492                            // Save it to put in the I2PSocketOptions,
     493                            // but strip it from the URL
     494                            remotePort = rPort;
    493495                            if(_log.shouldLog(Log.WARN)) {
    494496                                _log.warn(getPrefix(requestId) + "Removing port from [" + request + "]");
     
    501503                                break;
    502504                            }
     505                        } else {
     506                            remotePort = 80;
    503507                        }
    504508
     
    965969            // dont want to hard link to here
    966970            //opts.setProperty("i2p.streaming.inactivityTimeoutAction", ""+1);
    967             I2PSocket i2ps = createI2PSocket(clientDest, getDefaultOptions(opts));
     971            I2PSocketOptions sktOpts = getDefaultOptions(opts);
     972            if (remotePort > 0)
     973                sktOpts.setPort(remotePort);
     974            I2PSocket i2ps = createI2PSocket(clientDest, sktOpts);
    968975            byte[] data = newRequest.toString().getBytes("ISO-8859-1");
    969976            Runnable onTimeout = new OnTimeout(s, s.getOutputStream(), targetRequest, usingWWWProxy, currentProxy, requestId);
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java

    r6e52ae3 r07caf2e  
    7878
    7979    private void setupI2PTunnelHTTPServer(String spoofHost) {
    80         _spoofHost = spoofHost;
     80        _spoofHost = (spoofHost != null && spoofHost.trim().length() > 0) ? spoofHost.trim() : null;
    8181        getTunnel().getContext().statManager().createRateStat("i2ptunnel.httpserver.blockingHandleTime", "how long the blocking handle takes to complete", "I2PTunnel.HTTPServer", new long[] { 60*1000, 10*60*1000, 3*60*60*1000 });
    8282        getTunnel().getContext().statManager().createRateStat("i2ptunnel.httpNullWorkaround", "How often an http server works around a streaming lib or i2ptunnel bug", "I2PTunnel.HTTPServer", new long[] { 60*1000, 10*60*1000 });
     
    9797    @Override
    9898    protected void blockingHandle(I2PSocket socket) {
     99        if (_log.shouldLog(Log.INFO))
     100            _log.info("Incoming connection to '" + toString() + "' port " + socket.getLocalPort() +
     101                      " from: " + socket.getPeerDestination().calculateHash() + " port " + socket.getPort());
    99102        long afterAccept = getTunnel().getContext().clock().now();
    100103        long afterSocket = -1;
     
    116119            addEntry(headers, DEST64_HEADER, socket.getPeerDestination().toBase64());
    117120
    118             if ( (_spoofHost != null) && (_spoofHost.trim().length() > 0) )
    119                 setEntry(headers, "Host", _spoofHost);
     121            // Port-specific spoofhost
     122            Properties opts = getTunnel().getClientOptions();
     123            String spoofHost;
     124            int ourPort = socket.getLocalPort();
     125            if (ourPort != 80 && ourPort > 0 && ourPort < 65535 && opts != null) {
     126                String portSpoof = opts.getProperty("spoofedHost." + ourPort);
     127                if (portSpoof != null)
     128                    spoofHost = portSpoof.trim();
     129                else
     130                    spoofHost = _spoofHost;
     131            } else {
     132                spoofHost = _spoofHost;
     133            }
     134            if (spoofHost != null)
     135                setEntry(headers, "Host", spoofHost);
    120136            setEntry(headers, "Connection", "close");
    121137            // we keep the enc sent by the browser before clobbering it, since it may have
     
    135151            // server, reads the response headers, rewriting to include Content-encoding: x-i2p-gzip
    136152            // if it was one of the Accept-encoding: values, and gzip the payload       
    137             Properties opts = getTunnel().getClientOptions();
    138153            boolean allowGZIP = true;
    139154            if (opts != null) {
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCServer.java

    r6e52ae3 r07caf2e  
    112112    @Override
    113113    protected void blockingHandle(I2PSocket socket) {
     114        if (_log.shouldLog(Log.INFO))
     115            _log.info("Incoming connection to '" + toString() + "' port " + socket.getLocalPort() +
     116                      " from: " + socket.getPeerDestination().calculateHash() + " port " + socket.getPort());
    114117        try {
    115118                        String modifiedRegistration;
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java

    r6e52ae3 r07caf2e  
    409409    protected void blockingHandle(I2PSocket socket) {
    410410        if (_log.shouldLog(Log.INFO))
    411             _log.info("Incoming connection to '" + toString() + "' from: " + socket.getPeerDestination().calculateHash().toBase64());
     411            _log.info("Incoming connection to '" + toString() + "' port " + socket.getLocalPort() +
     412                      " from: " + socket.getPeerDestination().calculateHash() + " port " + socket.getPort());
    412413        long afterAccept = I2PAppContext.getGlobalContext().clock().now();
    413414        long afterSocket = -1;
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java

    r6e52ae3 r07caf2e  
    55import java.io.IOException;
    66import java.util.ArrayList;
     7import java.util.HashMap;
    78import java.util.Iterator;
    89import java.util.List;
     10import java.util.Map;
    911import java.util.Properties;
    1012import java.util.Random;
     
    386388   
    387389    private void setSessionOptions() {
    388         List opts = new ArrayList();
    389         for (Iterator iter = _config.keySet().iterator(); iter.hasNext(); ) {
    390             String key = (String)iter.next();
    391             String val = _config.getProperty(key);
     390        Properties opts = new Properties();
     391        for (Map.Entry e : _config.entrySet()) {
     392            String key = (String) e.getKey();
    392393            if (key.startsWith("option.")) {
    393394                key = key.substring("option.".length());
    394                 opts.add(key + "=" + val);
    395             }
    396         }
    397         String args[] = new String[opts.size()];
    398         for (int i = 0; i < opts.size(); i++)
    399             args[i] = (String)opts.get(i);
    400         _tunnel.runClientOptions(args, this);
     395                String val = (String) e.getValue();
     396                opts.setProperty(key, val);
     397            }
     398        }
     399        _tunnel.setClientOptions(opts);
    401400    }
    402401   
  • apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketEepGet.java

    r6e52ae3 r07caf2e  
    144144                props.setProperty(PROP_CONNECT_DELAY, CONNECT_DELAY);
    145145                I2PSocketOptions opts = _socketManager.buildOptions(props);
     146                // TODO pull port out of URL
     147                opts.setPort(80);
    146148                _socket = _socketManager.connect(dest, opts);
    147149            } else {
Note: See TracChangeset for help on using the changeset viewer.