Changeset cc4158a


Ignore:
Timestamp:
Dec 30, 2010 12:36:41 AM (9 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
01f9be4, 5d6edad
Parents:
6ee1620
Message:
  • i2ptunnel:
    • Use dropdown box to select interface for clients
    • Warn on index page if required fields not set
Location:
apps/i2ptunnel
Files:
6 edited

Legend:

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

    r6ee1620 rcc4158a  
    260260    /*
    261261     *  Streamr client is a UDP server, use the listenPort field for targetPort
    262      *  and the listenOnInterface field for the targetHost
    263262     */
    264263    private void startStreamrClient() {
    265         String targetHost = getListenOnInterface();
     264        String targetHost = getTargetHost();
    266265        String targetPort = getListenPort();
    267266        String dest = getTargetDestination();
     
    271270    /**
    272271     *  Streamr server is a UDP client, use the targetPort field for listenPort
    273      *  and the targetHost field for the listenOnInterface
    274272     */
    275273    private void startStreamrServer() {
    276         String listenOn = getTargetHost();
     274        String listenOn = getListenOnInterface();
    277275        if ( (listenOn != null) && (listenOn.length() > 0) ) {
    278276            _tunnel.runListenOn(new String[] { listenOn }, this);
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java

    r6ee1620 rcc4158a  
    1313import java.util.Properties;
    1414import java.util.StringTokenizer;
     15import java.util.Set;
    1516
    1617import net.i2p.data.Base64;
     
    2324import net.i2p.i2ptunnel.TunnelController;
    2425import net.i2p.i2ptunnel.TunnelControllerGroup;
     26import net.i2p.util.Addresses;
    2527
    2628/**
     
    313315    public boolean isRouterContext() {
    314316        return _context.isRouterContext();
     317    }
     318
     319    /** @since 0.8.3 */
     320    public Set<String> interfaceSet() {
     321        return Addresses.getAllAddresses();
    315322    }
    316323
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java

    r6ee1620 rcc4158a  
    6464    private String _port;
    6565    private String _reachableBy;
    66     private String _reachableByOther;
    6766    private String _targetDestination;
    6867    private String _targetHost;
     
    433432    public String getClientInterface(int tunnel) {
    434433        TunnelController tun = getController(tunnel);
    435         if (tun != null)
    436             return tun.getListenOnInterface();
    437         else
    438             return "";
     434        if (tun != null) {
     435            if ("streamrclient".equals(tun.getType()))
     436                return tun.getTargetHost();
     437            else
     438                return tun.getListenOnInterface();
     439        } else
     440            return "127.0.0.1";
    439441    }
    440442   
     
    479481    }
    480482   
     483    /**
     484     * Call this to see if it is ok to linkify getServerTarget()
     485     * @since 0.8.3
     486     */
     487    public boolean isServerTargetLinkValid(int tunnel) {
     488        TunnelController tun = getController(tunnel);
     489        return tun != null &&
     490               "httpserver".equals(tun.getType()) &&
     491               tun.getTargetHost() != null &&
     492               tun.getTargetPort() != null;
     493    }
     494
     495    /**
     496     * @return valid host:port only if isServerTargetLinkValid() is true
     497     */
    481498    public String getServerTarget(int tunnel) {
    482499        TunnelController tun = getController(tunnel);
    483         if (tun != null)
    484             return tun.getTargetHost() + ':' + tun.getTargetPort();
    485         else
     500        if (tun != null) {
     501            String host;
     502            if ("streamrserver".equals(tun.getType()))
     503                host = tun.getListenOnInterface();
     504            else
     505                host = tun.getTargetHost();
     506            String port = tun.getTargetPort();
     507            if (host == null)
     508                host = "<font color=\"red\">" + _("Host not set") + "</font>";
     509            else if (host.indexOf(':') >= 0)
     510                host = '[' + host + ']';
     511            if (port == null)
     512                port = "<font color=\"red\">" + _("Port not set") + "</font>";
     513            return host + ':' + port;
     514       }  else
    486515            return "";
    487516    }
     
    576605    }
    577606    /**
    578      * what interface should this client/httpclient/ircclient listen on (unless
    579      * overridden by the setReachableByOther() field)
     607     * what interface should this client/httpclient/ircclient listen on
    580608     */
    581609    public void setReachableBy(String reachableBy) {
    582610        _reachableBy = (reachableBy != null ? reachableBy.trim() : null);
    583     }
    584     /**
    585      * If specified, defines the exact IP interface to listen for requests
    586      * on (in the case of client/httpclient/ircclient tunnels)
    587      */
    588     public void setReachableByOther(String reachableByOther) {
    589         _reachableByOther = (reachableByOther != null ? reachableByOther.trim() : null);
    590611    }
    591612    /** What peer does this client tunnel point at */
     
    892913        updateConfigGeneric(config);
    893914       
     915        if ((isClient(_type) && !"streamrclient".equals(_type)) || "streamrserver".equals(_type)) {
     916            // streamrserver uses interface
     917            if (_reachableBy != null)
     918                config.setProperty("interface", _reachableBy);
     919            else
     920                config.setProperty("interface", "");
     921        } else {
     922            // streamrclient uses targetHost
     923            if (_targetHost != null)
     924                config.setProperty("targetHost", _targetHost);
     925        }
     926
    894927        if (isClient(_type)) {
    895928            // generic client stuff
    896929            if (_port != null)
    897930                config.setProperty("listenPort", _port);
    898             if (_reachableByOther != null)
    899                 config.setProperty("interface", _reachableByOther);
    900             else if (_reachableBy != null)
    901                 config.setProperty("interface", _reachableBy);
    902             else
    903                 config.setProperty("interface", "");
    904 
    905931            config.setProperty("sharedClient", _sharedClient + "");
    906932            for (String p : _booleanClientOpts)
     
    911937        } else {
    912938            // generic server stuff
    913             if (_targetHost != null)
    914                 config.setProperty("targetHost", _targetHost);
    915939            if (_targetPort != null)
    916940                config.setProperty("targetPort", _targetPort);
     
    941965            if (_port != null)
    942966                config.setProperty("listenPort", _port);
    943             if (_reachableByOther != null)
    944                 config.setProperty("interface", _reachableByOther);
    945             else if (_reachableBy != null)
     967            if (_reachableBy != null)
    946968                config.setProperty("interface", _reachableBy);
    947969            else if (_targetHost != null)
  • apps/i2ptunnel/jsp/editClient.jsp

    r6ee1620 rcc4158a  
    8181         <% } else { %>
    8282                <label><%=intl._("Access Point")%>:</label>
    83          <% } %>
     83         <% } /* streamrclient */ %>
    8484            </div>
    8585            <div id="portField" class="rowItem">
     
    9696                <input type="text" size="6" maxlength="5" id="port" name="port" title="Access Port Number" value="<%=editBean.getClientPort(curTunnel)%>" class="freetext" />               
    9797            </div>
    98          <% String otherInterface = "";
    99             String clientInterface = editBean.getClientInterface(curTunnel);
    100             if ("streamrclient".equals(tunnelType)) {   
    101                 otherInterface = clientInterface;
    102             } else { %>
    10398            <div id="reachField" class="rowItem">
    10499                <label for="reachableBy" accesskey="r">
    105                     <%=intl._("Reachable by")%>(<span class="accessKey">R</span>):
    106                 </label>
    107                 <select id="reachableBy" name="reachableBy" title="Valid IP for Client Access" class="selectbox">
    108                   <%   if (!("127.0.0.1".equals(clientInterface)) &&
    109                            !("0.0.0.0".equals(clientInterface)) &&
    110                             (clientInterface != null) &&
    111                             (clientInterface.trim().length() > 0)) {
    112                             otherInterface = clientInterface;
    113                        }
    114                   %><option value="127.0.0.1"<%=("127.0.0.1".equals(clientInterface) ? " selected=\"selected\"" : "")%>><%=intl._("Locally (127.0.0.1)")%></option>
    115                     <option value="0.0.0.0"<%=("0.0.0.0".equals(clientInterface) ? " selected=\"selected\"" : "")%>><%=intl._("Everyone (0.0.0.0)")%></option>
    116                     <option value="other"<%=(!("".equals(otherInterface))    ? " selected=\"selected\"" : "")%>><%=intl._("LAN Hosts (Please specify your LAN address)")%></option>
    117                 </select>               
    118             </div>
    119          <% } // streamrclient %>
    120             <div id="otherField" class="rowItem">
    121                 <label for="reachableByOther" accesskey="O">
    122          <% if ("streamrclient".equals(tunnelType)) { %>
    123                     Host:
    124                     <% String vvv = otherInterface;
    125                        if (vvv == null || "".equals(vvv.trim())) {
     100         <%
     101            if ("streamrclient".equals(tunnelType)) {
     102                       out.write("Host:");
     103                       String targetHost = editBean.getTargetHost(curTunnel);
     104                       if (targetHost == null || "".equals(targetHost.trim())) {
    126105                           out.write(" <font color=\"red\">(");
    127106                           out.write(intl._("required"));
    128107                           out.write(")</font>");
    129108                       }   
    130                      %>
     109          %>
     110                </label>
     111                <input type="text" size="20" id="targetHost" name="targetHost" title="Target Hostname or IP" value="<%=targetHost%>" class="freetext" />               
    131112         <% } else { %>
    132                     <%=intl._("Other")%>(<span class="accessKey">O</span>):
    133          <% } %>
    134                 </label>
    135                 <input type="text" size="20" id="reachableByOther" name="reachableByOther" title="Alternative IP for Client Access" value="<%=otherInterface%>" class="freetext" />               
    136             </div>
    137                                            
     113                    <%=intl._("Reachable by")%>(<span class="accessKey">R</span>):
     114                </label>
     115                <select id="reachableBy" name="reachableBy" title="IP for Client Access" class="selectbox">
     116              <%
     117                    String clientInterface = editBean.getClientInterface(curTunnel);
     118                    for (String ifc : editBean.interfaceSet()) {
     119                        out.write("<option value=\"");
     120                        out.write(ifc);
     121                        out.write('\"');
     122                        if (ifc.equals(clientInterface))
     123                            out.write(" selected=\"selected\"");
     124                        out.write('>');
     125                        out.write(ifc);
     126                        out.write("</option>\n");
     127                    }
     128              %>
     129                </select>               
     130         <% } /* streamrclient */ %>
     131            </div>
     132
    138133            <div class="subdivider">
    139134                <hr />
  • apps/i2ptunnel/jsp/editServer.jsp

    r6ee1620 rcc4158a  
    9090         <% } %>
    9191            </div>
     92         <% if (!"streamrserver".equals(tunnelType)) { %>
    9293            <div id="hostField" class="rowItem">
    9394                <label for="targetHost" accesskey="H">
    94          <% if ("streamrserver".equals(tunnelType)) { %>
    95                     <%=intl._("Reachable by")%>(<span class="accessKey">R</span>):
    96          <% } else { %>
    9795                    <%=intl._("Host")%>(<span class="accessKey">H</span>):
    98          <% } %>
    9996                </label>
    10097                <input type="text" size="20" id="targetHost" name="targetHost" title="Target Hostname or IP" value="<%=editBean.getTargetHost(curTunnel)%>" class="freetext" />               
    10198            </div>
     99         <% } /* !streamrserver */ %>
    102100            <div id="portField" class="rowItem">
    103101                <label for="targetPort" accesskey="P">
     
    114112            </div>
    115113           
    116             <% if ("httpbidirserver".equals(tunnelType)) {
    117             %>
     114         <% if ("httpbidirserver".equals(tunnelType)) { %>
    118115            <div class="subdivider">
    119116                <hr />
     
    135132                 <input type="text" size="6" maxlength="5" id="port" name="port" title="Access Port Number" value="<%=editBean.getClientPort(curTunnel)%>" class="freetext" />
    136133            </div>
    137             <% String otherInterface = "";
    138             String clientInterface = editBean.getClientInterface(curTunnel);
    139             %>
     134         <% } /* httpbidirserver */ %>
     135         <% if ("httpbidirserver".equals(tunnelType) || "streamrserver".equals(tunnelType)) { %>
    140136            <div id="reachField" class="rowItem">
    141137                <label for="reachableBy" accesskey="r">
    142138                    <%=intl._("Reachable by")%>(<span class="accessKey">R</span>):
    143139                </label>
    144                 <select id="reachableBy" name="reachableBy" title="Valid IP for Client Access" class="selectbox">
    145                   <%   if (!("127.0.0.1".equals(clientInterface)) &&
    146                            !("0.0.0.0".equals(clientInterface)) &&
    147                             (clientInterface != null) &&
    148                             (clientInterface.trim().length() > 0)) {
    149                             otherInterface = clientInterface;
    150                        }
    151                   %><option value="127.0.0.1"<%=("127.0.0.1".equals(clientInterface) ? " selected=\"selected\"" : "")%>><%=intl._("Locally (127.0.0.1)")%></option>
    152                     <option value="0.0.0.0"<%=("0.0.0.0".equals(clientInterface) ? " selected=\"selected\"" : "")%>><%=intl._("Everyone (0.0.0.0)")%></option>
    153                     <option value="other"<%=(!("".equals(otherInterface))    ? " selected=\"selected\"" : "")%>><%=intl._("LAN Hosts (Please specify your LAN address)")%></option>
     140                <select id="reachableBy" name="reachableBy" title="IP for Client Access" class="selectbox">
     141              <%
     142                    String clientInterface = editBean.getClientInterface(curTunnel);
     143                    for (String ifc : editBean.interfaceSet()) {
     144                        out.write("<option value=\"");
     145                        out.write(ifc);
     146                        out.write('\"');
     147                        if (ifc.equals(clientInterface))
     148                            out.write(" selected=\"selected\"");
     149                        out.write('>');
     150                        out.write(ifc);
     151                        out.write("</option>\n");
     152                    }
     153              %>
    154154                </select>               
    155             </div>
    156             <div id="otherField" class="rowItem">
    157                 <label for="reachableByOther" accesskey="O">
    158                     <%=intl._("Other")%>(<span class="accessKey">O</span>):
    159                 </label>
    160                 <input type="text" size="20" id="reachableByOther" name="reachableByOther" title="Alternative IP for Client Access" value="<%=otherInterface%>" class="freetext" />               
    161             </div>
    162             <% } %>
     155            </div>
     156         <% } /* httpbidirserver || streamrserver */ %>
     157
    163158            <div class="subdivider">
    164159                <hr />
     
    303298                <hr />
    304299            </div>
    305          <% } // !streamrserver %>
     300         <% } /* !streamrserver */ %>
    306301
    307302            <div id="optionsField" class="rowItem">
  • apps/i2ptunnel/jsp/index.jsp

    r6ee1620 rcc4158a  
    9696            <span class="text">
    9797        <%
    98             if ("httpserver".equals(indexBean.getInternalType(curServer))) {
     98            if (indexBean.isServerTargetLinkValid(curServer)) {
    9999          %>
    100100            <a href="http://<%=indexBean.getServerTarget(curServer)%>/" title="Test HTTP server, bypassing I2P"><%=indexBean.getServerTarget(curServer)%></a>
     
    214214        <div class="portField rowItem">
    215215            <label><%=intl._("Port")%>:</label>
    216             <span class="text"><%=indexBean.getClientPort(curClient)%></span>
     216            <span class="text">
     217         <%
     218               String cPort= indexBean.getClientPort(curClient);
     219               if ("".equals(cPort)) {
     220                   out.write("<font color=\"red\">");
     221                   out.write(intl._("Port not set"));
     222                   out.write("</font>");
     223               } else {
     224                   out.write(cPort);
     225               }
     226          %>
     227            </span>
    217228        </div>
    218229        <div class="typeField rowItem">
     
    222233        <div class="interfaceField rowItem">
    223234            <label><%=intl._("Interface")%>:</label>
    224             <span class="text"><%=indexBean.getClientInterface(curClient)%></span>
     235            <span class="text">
     236         <%
     237               /* should only happen for streamr client */
     238               String cHost= indexBean.getClientInterface(curClient);
     239               if ("".equals(cHost)) {
     240                   out.write("<font color=\"red\">");
     241                   out.write(intl._("Hort not set"));
     242                   out.write("</font>");
     243               } else {
     244                   out.write(cHost);
     245               }
     246          %>
     247            </span>
    225248        </div>
    226249        <div class="statusField rowItem">
Note: See TracChangeset for help on using the changeset viewer.