Changeset ab039b8


Ignore:
Timestamp:
Apr 30, 2018 1:59:23 PM (2 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
4e5a2d00
Parents:
8ed1b96
Message:

SSL Wizard: Update and save tunnel config

File:
1 edited

Legend:

Unmodified
Added
Removed
  • apps/i2ptunnel/jsp/ssl.jsp

    r8ed1b96 rab039b8  
    5151  if (!ctx.isRouterContext()) {
    5252      %>Unsupported in app context<%
     53  } else if (curTunnel < 0) {
     54      %>Tunnel not found<%
     55  } else if (editBean.isClient(curTunnel)) {
     56      %>Not supported for client tunnels<%
    5357  } else if (editBean.isInitialized()) {
    5458
     
    5963    String tunnelType;
    6064    boolean valid = false;
    61     if (curTunnel >= 0) {
    62         tunnelTypeName = editBean.getTunnelType(curTunnel);
    63         tunnelType = editBean.getInternalType(curTunnel);
    64       %><h2><%=intl._t("SSL Wizard")%> (<%=editBean.getTunnelName(curTunnel)%>)</h2><%
    65     } else {
    66         tunnelTypeName = "new";
    67         tunnelType = "new";
    68       %><h2>Fail</h2><p>Tunnel not found</p><%
    69     }
     65    tunnelTypeName = editBean.getTunnelType(curTunnel);
     66    tunnelType = editBean.getInternalType(curTunnel);
     67%><h2><%=intl._t("SSL Wizard")%> (<%=editBean.getTunnelName(curTunnel)%>)</h2><%
    7068
    7169    // set a bunch of variables for the current configuration
     
    10199        name = editBean.getTunnelName(curTunnel);
    102100    if (!"new".equals(tunnelType)) {
     101        // build tables for vhost and targets
     102        java.util.TreeSet<Integer> ports = new java.util.TreeSet<Integer>();
     103        java.util.Map<Integer, String> tgts = new java.util.HashMap<Integer, String>(4);
     104        java.util.Map<Integer, String> spoofs = new java.util.HashMap<Integer, String>(4);
     105        String custom = editBean.getCustomOptions(curTunnel);
     106        String[] opts = DataHelper.split(custom, "[, ]");
     107        for (int i = 0; i < opts.length; i++) {
     108            String opt = opts[i];
     109            boolean isTgt = false;
     110            if (opt.startsWith("targetForPort.")) {
     111                opt = opt.substring("targetForPort.".length());
     112                isTgt = true;
     113            } else if (opt.startsWith("spoofedHost.")) {
     114                opt = opt.substring("spoofedHost.".length());
     115            } else {
     116                 continue;
     117            }
     118            int eq = opt.indexOf('=');
     119            if (eq <= 0)
     120                 continue;
     121            int port;
     122            try {
     123                port = Integer.parseInt(opt.substring(0, eq));
     124            } catch (NumberFormatException nfe) {
     125                 continue;
     126            }
     127            String tgt = opt.substring(eq + 1);
     128            Integer iport = Integer.valueOf(port);
     129            ports.add(iport);
     130            if (isTgt)
     131                tgts.put(iport, tgt);
     132            else
     133                spoofs.put(iport, tgt);
     134        }
     135
    103136        // POST handling
    104137        String action = request.getParameter("action");
     
    110143            String ksPath = request.getParameter("nofilter_ksPath");
    111144            String jettySSLConfigPath = request.getParameter("nofilter_jettySSLFile");
     145            String host = request.getParameter("jettySSLHost");
     146            String port = request.getParameter("jettySSLPort");
    112147            if (newpw != null) {
    113148                newpw = newpw.trim();
     
    120155                kspw = net.i2p.crypto.KeyStoreUtil.DEFAULT_KEYSTORE_PASSWORD;
    121156            }
    122             if (!editBean.haveNonce(nonce)) {
     157            if (!net.i2p.i2ptunnel.web.IndexBean.haveNonce(nonce)) {
    123158                out.println(intl._t("Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit.")
    124159                            + ' ' +
     
    128163            } else if (newpw == null) {
    129164                out.println("Password required");
    130             } else if (appNum == null || ksPath == null || jettySSLConfigPath == null) {
     165            } else if (appNum == null || ksPath == null || jettySSLConfigPath == null || host == null || port == null) {
    131166                out.println("Missing parameters");
    132167            } else if (b32.length() <= 0) {
     
    145180                if (altb32 != null && altb32.length() > 0)
    146181                    altNames.add(altb32);
     182                altNames.addAll(spoofs.values());
    147183                File ks = new File(ksPath);
    148184                try {
     
    234270                // stop and restart jetty
    235271
    236                 // stop tunnel
    237                 if (ok) {
    238 
    239                 }
    240272
    241273                // rewrite i2ptunnel.config
    242                 if (ok) {
    243 
    244                 }
    245 
    246                 // restart tunnel
    247                 if (ok) {
    248 
     274                Integer i443 = Integer.valueOf(443);
     275                if (ok && !tgts.containsKey(i443)) {
     276                    // update table for display
     277                    tgts.put(i443, host + ':' + port);
     278                    ports.add(i443);
     279                    // add ssl config
     280                    custom += " targetForPort.443=" + host + ':' + port;
     281                    editBean.setNofilter_customOptions(custom);
     282                    // copy over existing settings
     283                    // we only set the applicable server settings
     284                    editBean.setTunnel(tun);
     285                    editBean.setType(tunnelType);
     286                    editBean.setName(editBean.getTunnelName(curTunnel));
     287                    editBean.setTargetHost(editBean.getTargetHost(curTunnel));
     288                    editBean.setTargetPort(editBean.getTargetPort(curTunnel));
     289                    editBean.setSpoofedHost(editBean.getSpoofedHost(curTunnel));
     290                    editBean.setPrivKeyFile(editBean.getPrivateKeyFile(curTunnel));
     291                    editBean.setAltPrivKeyFile(editBean.getAltPrivateKeyFile(curTunnel));
     292                    editBean.setNofilter_description(editBean.getTunnelDescription(curTunnel));
     293                    editBean.setTunnelDepth(Integer.toString(editBean.getTunnelDepth(curTunnel, 3)));
     294                    editBean.setTunnelQuantity(Integer.toString(editBean.getTunnelQuantity(curTunnel, 2)));
     295                    editBean.setTunnelBackupQuantity(Integer.toString(editBean.getTunnelBackupQuantity(curTunnel, 0)));
     296                    editBean.setTunnelVariance(Integer.toString(editBean.getTunnelVariance(curTunnel, 0)));
     297                    editBean.setTunnelDepthOut(Integer.toString(editBean.getTunnelDepthOut(curTunnel, 3)));
     298                    editBean.setTunnelQuantityOut(Integer.toString(editBean.getTunnelQuantityOut(curTunnel, 2)));
     299                    editBean.setTunnelBackupQuantityOut(Integer.toString(editBean.getTunnelBackupQuantityOut(curTunnel, 0)));
     300                    editBean.setTunnelVarianceOut(Integer.toString(editBean.getTunnelVarianceOut(curTunnel, 0)));
     301                    editBean.setReduceCount(Integer.toString(editBean.getReduceCount(curTunnel)));
     302                    editBean.setReduceTime(Integer.toString(editBean.getReduceTime(curTunnel)));
     303                    editBean.setCert(Integer.toString(editBean.getCert(curTunnel)));
     304                    editBean.setLimitMinute(Integer.toString(editBean.getLimitMinute(curTunnel)));
     305                    editBean.setLimitHour(Integer.toString(editBean.getLimitHour(curTunnel)));
     306                    editBean.setLimitDay(Integer.toString(editBean.getLimitDay(curTunnel)));
     307                    editBean.setTotalMinute(Integer.toString(editBean.getTotalMinute(curTunnel)));
     308                    editBean.setTotalHour(Integer.toString(editBean.getTotalHour(curTunnel)));
     309                    editBean.setTotalDay(Integer.toString(editBean.getTotalDay(curTunnel)));
     310                    editBean.setMaxStreams(Integer.toString(editBean.getMaxStreams(curTunnel)));
     311                    editBean.setPostMax(Integer.toString(editBean.getPostMax(curTunnel)));
     312                    editBean.setPostTotalMax(Integer.toString(editBean.getPostTotalMax(curTunnel)));
     313                    editBean.setPostCheckTime(Integer.toString(editBean.getPostCheckTime(curTunnel)));
     314                    editBean.setPostBanTime(Integer.toString(editBean.getPostBanTime(curTunnel)));
     315                    editBean.setPostTotalBanTime(Integer.toString(editBean.getPostTotalBanTime(curTunnel)));
     316                    editBean.setUserAgents(editBean.getUserAgents(curTunnel));
     317                    editBean.setEncryptKey(editBean.getEncryptKey(curTunnel));
     318                    editBean.setAccessMode(editBean.getAccessMode(curTunnel));
     319                    editBean.setAccessList(editBean.getAccessList(curTunnel));
     320                    editBean.setKey1(editBean.getKey1(curTunnel));
     321                    editBean.setKey2(editBean.getKey2(curTunnel));
     322                    editBean.setKey3(editBean.getKey3(curTunnel));
     323                    editBean.setKey4(editBean.getKey4(curTunnel));
     324                    if (editBean.getMultihome(curTunnel))
     325                        editBean.setMultihome("");
     326                    if (editBean.getReduce(curTunnel))
     327                        editBean.setReduce("");
     328                    if (editBean.getEncrypt(curTunnel))
     329                        editBean.setEncrypt("");
     330                    if (editBean.getUniqueLocal(curTunnel))
     331                        editBean.setUniqueLocal("");
     332                    if (editBean.isRejectInproxy(curTunnel))
     333                        editBean.setRejectInproxy("");
     334                    if (editBean.isRejectReferer(curTunnel))
     335                        editBean.setRejectReferer("");
     336                    if (editBean.isRejectUserAgents(curTunnel))
     337                        editBean.setRejectUserAgents("");
     338                    editBean.setNonce(nonce);
     339                    editBean.setAction("Save changes");
     340                    String msg = editBean.getMessages();
     341                    out.println(msg);
    249342                }
    250343
     
    294387<tr><td><%=intl._t("Default")%></td><td><%=name%></td><td><%=sslToTarget%></td><td><%=targetLink%></td></tr>
    295388<%
    296     // build tables for vhost and targets
    297     java.util.TreeSet<Integer> ports = new java.util.TreeSet<Integer>();
    298     java.util.Map<Integer, String> tgts = new java.util.HashMap<Integer, String>(4);
    299     java.util.Map<Integer, String> spoofs = new java.util.HashMap<Integer, String>(4);
    300     String custom = editBean.getCustomOptions(curTunnel);
    301     String[] opts = DataHelper.split(custom, "[, ]");
    302     for (int i = 0; i < opts.length; i++) {
    303         String opt = opts[i];
    304         boolean isTgt = false;
    305         if (opt.startsWith("targetForPort.")) {
    306             opt = opt.substring("targetForPort.".length());
    307             isTgt = true;
    308         } else if (opt.startsWith("spoofedHost.")) {
    309             opt = opt.substring("spoofedHost.".length());
    310         } else {
    311              continue;
    312         }
    313         int eq = opt.indexOf('=');
    314         if (eq <= 0)
    315              continue;
    316         int port;
    317         try {
    318             port = Integer.parseInt(opt.substring(0, eq));
    319         } catch (NumberFormatException nfe) {
    320              continue;
    321         }
    322         String tgt = opt.substring(eq + 1);
    323         Integer iport = Integer.valueOf(port);
    324         ports.add(iport);
    325         if (isTgt)
    326             tgts.put(iport, tgt);
    327         else
    328             spoofs.put(iport, tgt);
    329     }
    330389    // output vhost and targets
    331390    for (Integer port : ports) {
     
    463522                    File ksFile = null;
    464523                    boolean tsIsKs = true;
    465                     boolean ksArgs = ksPW != null && kmPW != null && ksPath != null;
     524                    boolean ksArgs = ksPW != null && kmPW != null && ksPath != null && sslHost != null && sslPort != null;
    466525                    /** 2015+ installs */
    467526                    final String DEFAULT_KSPW_1 = KeyStoreUtil.DEFAULT_KEYSTORE_PASSWORD;
     
    532591<input type="hidden" name="nofilter_ksPath" value="<%=ksPath%>" />
    533592<input type="hidden" name="nofilter_jettySSLFile" value="<%=jettySSLFile%>" />
     593<input type="hidden" name="jettySSLHost" value="<%=sslHost%>" />
     594<input type="hidden" name="jettySSLPort" value="<%=sslPort%>" />
    534595<input type="password" name="nofilter_keyPassword" title="<%=intl._t("Set password required to access this service")%>" value="" class="freetext password" />
    535596<%
Note: See TracChangeset for help on using the changeset viewer.