source: apps/i2ptunnel/jsp/wizard.jsp @ f902a63

Last change on this file since f902a63 was f902a63, checked in by zzz <zzz@…>, 4 years ago

Console: Add Referrer-Policy header

  • Property mode set to 100644
File size: 31.4 KB
Line 
1<%
2    // NOTE: Do the header carefully so there is no whitespace before the <?xml... line
3
4    // http://www.crazysquirrel.com/computing/general/form-encoding.jspx
5    if (request.getCharacterEncoding() == null)
6        request.setCharacterEncoding("UTF-8");
7
8    response.setHeader("X-Frame-Options", "SAMEORIGIN");
9    response.setHeader("Content-Security-Policy", "default-src 'self'; style-src 'self' 'unsafe-inline'");
10    response.setHeader("X-XSS-Protection", "1; mode=block");
11    response.setHeader("X-Content-Type-Options", "nosniff");
12    response.setHeader("Referrer-Policy", "no-referrer");
13
14%><%@page pageEncoding="UTF-8"
15%><%@page contentType="text/html" import="net.i2p.i2ptunnel.web.EditBean"
16%><?xml version="1.0" encoding="UTF-8"?>
17<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
18<jsp:useBean class="net.i2p.i2ptunnel.web.EditBean" id="editBean" scope="request" />
19<jsp:useBean class="net.i2p.i2ptunnel.web.Messages" id="intl" scope="request" />
20<% String pageStr = request.getParameter("page");
21   /* Get the number of the page we came from */
22   int lastPage = 0;
23   if (pageStr != null) {
24     try {
25       lastPage = Integer.parseInt(pageStr);
26       if (lastPage > 7 || lastPage < 0) {
27         lastPage = 0;
28       }
29     } catch (NumberFormatException nfe) {
30       lastPage = 0;
31     }
32   }
33   /* Determine what page to display now */
34   int curPage = 1;
35   if ("Previous page".equals(request.getParameter("action"))) {
36     curPage = lastPage - 1;
37   } else {
38     curPage = lastPage + 1;
39   }
40   if (curPage > 7 || curPage <= 0) {
41     curPage = 1;
42   }
43   /* Fetch and format a couple of regularly-used values */
44   boolean tunnelIsClient = Boolean.valueOf(request.getParameter("isClient"));
45   String tunnelType = request.getParameter("type");
46   tunnelType = net.i2p.data.DataHelper.stripHTML(tunnelType);
47   /* Special case - don't display page 4 for server tunnels */
48   if (curPage == 4 && !tunnelIsClient) {
49     if ("Previous page".equals(request.getParameter("action"))) {
50       curPage = curPage - 1;
51     } else {
52       curPage = curPage + 1;
53     }
54   }
55%>
56<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
57<head>
58    <title><%=intl._t("I2P Tunnel Manager - Tunnel Creation Wizard")%></title>
59
60    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
61    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
62    <link href="/themes/console/images/favicon.ico" type="image/x-icon" rel="shortcut icon" />
63
64    <% if (editBean.allowCSS()) {
65  %><link rel="icon" href="<%=editBean.getTheme()%>images/favicon.ico" />
66    <link href="<%=editBean.getTheme()%>default.css?<%=net.i2p.CoreVersion.VERSION%>" rel="stylesheet" type="text/css" />
67    <link href="<%=editBean.getTheme()%>i2ptunnel.css?<%=net.i2p.CoreVersion.VERSION%>" rel="stylesheet" type="text/css" />
68    <% }
69  %>
70</head>
71<body id="tunnelWizardPage">
72    <div id="pageHeader">
73    </div>
74
75    <form method="post" action="<%=(curPage == 7 ? "list" : "wizard") %>">
76
77        <div id="wizardPanel" class="panel">
78            <div class="header">
79                <%
80                if (curPage == 1) {
81                  %><h4><%=intl._t("Server or client tunnel?")%></h4><%
82                } else if (curPage == 2) {
83                  %><h4><%=intl._t("Tunnel type")%></h4><%
84                } else if (curPage == 3) {
85                  %><h4><%=intl._t("Tunnel name and description")%></h4><%
86                } else if (curPage == 4 && tunnelIsClient) {
87                  %><h4><%=intl._t("Tunnel destination")%></h4><%
88                } else if (curPage == 5) {
89                  %><h4><%=intl._t("Binding address and port")%></h4><%
90                } else if (curPage == 6) {
91                  %><h4><%=intl._t("Tunnel auto-start")%></h4><%
92                } else if (curPage == 7) {
93                  %><h4><%=intl._t("Wizard completed")%></h4><%
94                } %>
95                <input type="hidden" name="page" value="<%=curPage%>" />
96                <input type="hidden" name="tunnel" value="null" />
97                <input type="hidden" name="nonce" value="<%=net.i2p.i2ptunnel.web.IndexBean.getNextNonce()%>" />
98            </div>
99
100            <div class="separator">
101                <hr />
102            </div>
103
104            <% /* Page 1 - Whether to make a client or server tunnel */
105
106            if (curPage == 1) {
107            %><p>
108                <%=intl._t("This wizard will take you through the various options available for creating tunnels in I2P.")%>
109            </p>
110            <p>
111                <%=intl._t("The first thing to decide is whether you want to create a server or a client tunnel.")%>
112                <%=intl._t("If you need to connect to a remote service, such as an IRC server inside I2P or a code repository, then you will require a CLIENT tunnel.")%>
113                <%=intl._t("On the other hand, if you wish to host a service for others to connect to you'll need to create a SERVER tunnel.")%>
114            </p>
115            <div id="typeField" class="rowItem">
116                <label><%=intl._t("Server Tunnel")%></label>
117                <input value="false" type="radio" id="baseType" name="isClient" class="tickbox" />
118                <label><%=intl._t("Client Tunnel")%></label>
119                <input value="true" type="radio" id="baseType" name="isClient" class="tickbox" checked="checked" />
120            </div><%
121            } else {
122            %><input type="hidden" name="isClient" value="<%=tunnelIsClient%>" /><%
123            } /* curPage 1 */
124
125               /* End page 1 */ %>
126
127            <% /* Page 2 - Tunnel type */
128
129            if (curPage == 2) {
130            %><p>
131                <%=intl._t("There are several types of tunnels to choose from:")%>
132            </p>
133            <table><%
134                if (tunnelIsClient) {
135                %>
136                <tr><td><%=intl._t("Standard")%></td><td>
137                    <%=intl._t("Basic tunnel for connecting to a single service inside I2P.")%>
138                    <%=intl._t("Try this if none of the tunnel types below fit your requirements, or you don't know what type of tunnel you need.")%>
139                </td></tr>
140                <tr><td>HTTP</td><td>
141                    <%=intl._t("Tunnel that acts as an HTTP proxy for reaching eepsites inside I2P.")%>
142                    <%=intl._t("Set your browser to use this tunnel as an http proxy, or set your \"http_proxy\" environment variable for command-line applications in GNU/Linux.")%>
143                    <%=intl._t("Websites outside I2P can also be reached if an HTTP proxy within I2P is known.")%>
144                </td></tr>
145                <tr><td>IRC</td><td>
146                    <%=intl._t("Customised client tunnel specific for IRC connections.")%>
147                    <%=intl._t("With this tunnel type, your IRC client will be able to connect to an IRC network inside I2P.")%>
148                    <%=intl._t("Each IRC network in I2P that you wish to connect to will require its own tunnel. (See Also, SOCKS IRC)")%>
149                </td></tr>
150                <tr><td>SOCKS 4/4a/5</td><td>
151                    <%=intl._t("A tunnel that implements the SOCKS protocol.")%>
152                    <%=intl._t("This enables both TCP and UDP connections to be made through a SOCKS outproxy within I2P.")%>
153                </td></tr>
154                <tr><td>SOCKS IRC</td><td>
155                    <%=intl._t("A client tunnel implementing the SOCKS protocol, which is customised for connecting to IRC networks.")%>
156                    <%=intl._t("With this tunnel type, IRC networks in I2P can be reached by typing the I2P address into your IRC client, and configuring the IRC client to use this SOCKS tunnel.")%>
157                    <%=intl._t("This means that only one I2P tunnel is required rather than a separate tunnel per IRC network.")%>
158                    <%=intl._t("IRC networks outside I2P can also be reached if a SOCKS outproxy within I2P is known, though it depends on whether or not the outproxy has been blocked by the IRC network.")%>
159                </td></tr>
160                <tr><td>CONNECT</td><td>
161                    <%=intl._t("A client tunnel that implements the HTTP CONNECT command.")%>
162                    <%=intl._t("This enables TCP connections to be made through an HTTP outproxy, assuming the proxy supports the CONNECT command.")%>
163                </td></tr>
164                <tr><td>Streamr</td><td>
165                    <%=intl._t("A customised client tunnel for Streamr.")%><%
166                    //XXX TODO<%=intl._t("I have no idea what this is.")%>
167                </td></tr><%
168                } else {
169                %>
170                <tr><td><%=intl._t("Standard")%></td><td>
171                    <%=intl._t("A basic server tunnel for hosting a generic service inside I2P.")%>
172                    <%=intl._t("Try this if none of the tunnel types below fit your requirements, or you don't know what type of tunnel you need.")%>
173                </td></tr>
174                <tr><td>HTTP</td><td>
175                    <%=intl._t("A server tunnel that is customised for HTTP connections.")%>
176                    <%=intl._t("Use this tunnel type if you want to host an eepsite.")%>
177                </td></tr>
178                <tr><td>HTTP bidir</td><td>
179                    <%=intl._t("A customised server tunnel that can both serve HTTP data and connect to other server tunnels.")%>
180                    <%=intl._t("This tunnel type is predominantly used when running a Seedless server.")%>
181                </td></tr>
182                <tr><td>IRC</td><td>
183                    <%=intl._t("A customised server tunnel for hosting IRC networks inside I2P.")%>
184                    <%=intl._t("Usually, a separate tunnel needs to be created for each IRC server that is to be accessible inside I2P.")%>
185                </td></tr>
186                <tr><td>Streamr</td><td>
187                    <%=intl._t("A customised server tunnel for Streamr.")%><%
188                    //XXX TODO<%=intl._t("I have no idea what this is.")%>
189                </td></tr><%
190                }
191                %>
192            </table>
193            <div id="typeField" class="rowItem">
194                <%
195                if (tunnelIsClient) {
196                %><select name="type">
197                    <option value="client"><%=intl._t("Standard")%></option>
198                    <option value="httpclient">HTTP/CONNECT</option>
199                    <option value="ircclient">IRC</option>
200                    <option value="sockstunnel">SOCKS 4/4a/5</option>
201                    <option value="socksirctunnel">SOCKS IRC</option>
202                    <option value="connectclient">CONNECT</option>
203                    <option value="streamrclient">Streamr</option>
204                </select><%
205                } else {
206                %><select name="type">
207                    <option value="server"><%=intl._t("Standard")%></option>
208                    <option value="httpserver">HTTP</option>
209                    <option value="httpbidirserver">HTTP bidir</option>
210                    <option value="ircserver">IRC</option>
211                    <option value="streamrserver">Streamr</option>
212                </select><%
213                } /* tunnelIsClient */ %>
214            </div><%
215            } else {
216            %><input type="hidden" name="type" value="<%=tunnelType%>" /><%
217            } /* curPage 2 */
218
219               /* End page 2 */ %>
220
221            <% /* Page 3 - Name and description */
222
223            if (curPage == 3) {
224            %><p>
225                <%=intl._t("Choose a name and description for your tunnel.")%>
226                <%=intl._t("These can be anything you want - they are just for ease of identifying the tunnel in the routerconsole.")%>
227            </p>
228            <div id="nameField" class="rowItem">
229                <label for="name" accesskey="N">
230                    <%=intl._t("Name")%>:(<span class="accessKey">N</span>)
231                </label>
232                <input type="text" size="30" maxlength="50" name="name" id="name" title="Tunnel Name" value="<%=(!"null".equals(request.getParameter("name")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("name")) : "" ) %>" class="freetext" />
233            </div>
234            <div id="descriptionField" class="rowItem">
235                <label for="description" accesskey="e">
236                    <%=intl._t("Description")%>:(<span class="accessKey">E</span>)
237                </label>
238                <input type="text" size="60" maxlength="80" name="nofilter_description"  id="description" title="Tunnel Description" value="<%=(!"null".equals(request.getParameter("nofilter_description")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_description")) : "" ) %>" class="freetext" />
239            </div><%
240            } else {
241            %><input type="hidden" name="name" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("name"))%>" />
242            <input type="hidden" name="nofilter_description" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_description"))%>" /><%
243            } /* curPage 3 */
244
245               /* End page 3 */ %>
246
247            <% /* Page 4 - Target destination or proxy list */
248
249            if (tunnelIsClient) {
250              if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) {
251                if (curPage == 4) {
252          %><p>
253                <%=intl._t("If you know of any outproxies for this type of tunnel (either HTTP or SOCKS), fill them in below.")%>
254                <%=intl._t("Separate multiple proxies with commas.")%>
255            </p>
256            <div id="destinationField" class="rowItem">
257                <label for="proxyList" accesskey="x">
258                    <%=intl._t("Outproxies")%>(<span class="accessKey">x</span>):
259                </label>
260                <input type="text" size="30" id="proxyList" name="proxyList" title="List of Outproxy I2P destinations" value="<%=(!"null".equals(request.getParameter("proxyList")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("proxyList")) : "" ) %>" class="freetext" />
261            </div><%
262                } else {
263            %><input type="hidden" name="proxyList" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("proxyList"))%>" /><%
264                } /* curPage 4 */
265              } else if ("client".equals(tunnelType) || "ircclient".equals(tunnelType) || "streamrclient".equals(tunnelType)) {
266                if (curPage == 4) {
267          %><p>
268                <%=intl._t("Type in the I2P destination of the service that this client tunnel should connect to.")%>
269                <%=intl._t("This could be the full base 64 destination key, or an I2P URL from your address book.")%>
270            </p>
271            <div id="destinationField" class="rowItem">
272                <label for="targetDestination" accesskey="T">
273                    <%=intl._t("Tunnel Destination")%>(<span class="accessKey">T</span>):
274                </label>
275                <input type="text" size="30" id="targetDestination" name="targetDestination" title="Destination of the Tunnel" value="<%=(!"null".equals(request.getParameter("targetDestination")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("targetDestination")) : "" ) %>" class="freetext" />
276                <span class="comment">(<%=intl._t("name, name:port, or destination")%>
277                     <% if ("streamrclient".equals(tunnelType)) { /* deferred resolution unimplemented in streamr client */ %>
278                         - <%=intl._t("b32 not recommended")%>
279                     <% } %> )
280                </span>
281            </div><%
282                } else {
283            %><input type="hidden" name="targetDestination" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetDestination"))%>" /><%
284                } /* curPage 4 */
285              }
286            } /* tunnelIsClient */
287
288               /* End page 4 */ %>
289
290            <% /* Page 5 - Binding ports and addresses*/
291
292            if ((tunnelIsClient && "streamrclient".equals(tunnelType)) || (!tunnelIsClient && !"streamrserver".equals(tunnelType))) {
293              if (curPage == 5) {
294            %><p>
295                <%=intl._t("This is the IP that your service is running on, this is usually on the same machine so 127.0.0.1 is autofilled.")%><%
296                //XXX TODO<%=intl._t("For some reason streamrclient also uses this.")%>
297            </p>
298            <div id="hostField" class="rowItem">
299                <label for="targetHost" accesskey="H">
300                    <%=intl._t("Host")%>(<span class="accessKey">H</span>):
301                </label>
302                <input type="text" size="20" id="targetHost" name="targetHost" title="Target Hostname or IP" value="<%=(!"null".equals(request.getParameter("targetHost")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost")) : "127.0.0.1" ) %>" class="freetext" />
303            </div><%
304              } else {
305            %><input type="hidden" name="targetHost" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost"))%>" /><%
306              } /* curPage 5 */
307            } /* streamrclient or !streamrserver */ %>
308            <%
309            if (!tunnelIsClient) {
310              if (curPage == 5) {
311            %><p>
312                <%=intl._t("This is the port that the service is accepting connections on.")%>
313            </p>
314            <div id="portField" class="rowItem">
315                <label for="targetPort" accesskey="P">
316                    <%=intl._t("Port")%>(<span class="accessKey">P</span>):
317                </label>
318                <input type="text" size="6" maxlength="5" id="targetPort" name="targetPort" title="Target Port Number" value="<%=(!"null".equals(request.getParameter("targetPort")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("targetPort")) : "" ) %>" class="freetext" />
319            </div><%
320              } else {
321            %><input type="hidden" name="targetPort" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetPort"))%>" /><%
322              } /* curPage 5 */
323            } /* !tunnelIsClient */ %>
324            <%
325            if (tunnelIsClient || "httpbidirserver".equals(tunnelType)) {
326              if (curPage == 5) {
327            %><p>
328                <%=intl._t("This is the port that the client tunnel will be accessed from locally.")%>
329                <%=intl._t("This is also the client port for the HTTPBidir server tunnel.")%>
330            </p>
331            <div id="portField" class="rowItem">
332                <label for="port" accesskey="P">
333                    <span class="accessKey">P</span>ort:
334                </label>
335                <input type="text" size="6" maxlength="5" id="port" name="port" title="Access Port Number" value="<%=(!"null".equals(request.getParameter("port")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("port")) : "" ) %>" class="freetext" />
336            </div><%
337              } else {
338            %><input type="hidden" name="port" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("port"))%>" /><%
339              } /* curPage 5 */
340            } /* tunnelIsClient or httpbidirserver */ %>
341            <%
342            if ((tunnelIsClient && !"streamrclient".equals(tunnelType)) || "httpbidirserver".equals(tunnelType) || "streamrserver".equals(tunnelType)) {
343              if (curPage == 5) {
344            %><p>
345                <%=intl._t("How do you want this tunnel to be accessed? By just this machine, your entire subnet, or external internet?")%>
346                <%=intl._t("You will most likely want to just allow 127.0.0.1")%><%
347                //XXX TODO<%=intl._t("Note that it is relevant to most Client tunnels, and httpbidirserver and streamrserver tunnels.")%><%
348                //XXX TODO<%=intl._t("So the wording may need to change slightly for the client vs. server tunnels.")%>
349            </p>
350            <div id="reachField" class="rowItem">
351                <label for="reachableBy" accesskey="r">
352                    <%=intl._t("Reachable by")%>(<span class="accessKey">R</span>):
353                </label>
354                <select id="reachableBy" name="reachableBy" title="IP for Client Access" class="selectbox">
355              <%
356                    String clientInterface = request.getParameter("reachableBy");
357                    if ("null".equals(clientInterface)) {
358                      clientInterface = "127.0.0.1";
359                    }
360                    for (String ifc : editBean.interfaceSet()) {
361                        out.write("<option value=\"");
362                        out.write(ifc);
363                        out.write('\"');
364                        if (ifc.equals(clientInterface))
365                            out.write(" selected=\"selected\"");
366                        out.write('>');
367                        out.write(ifc);
368                        out.write("</option>\n");
369                    }
370              %>
371                </select>
372            </div><%
373              } else {
374            %><input type="hidden" name="reachableBy" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("reachableBy"))%>" /><%
375              } /* curPage 5 */
376            } /* (tunnelIsClient && !streamrclient) ||  httpbidirserver || streamrserver */
377
378               /* End page 5 */ %>
379
380            <% /* Page 6 - Automatic start */
381
382            if (curPage == 6) {
383            %><p>
384                <%=intl._t("The I2P router can automatically start this tunnel for you when the router is started.")%>
385                <%=intl._t("This can be useful for frequently-used tunnels (especially server tunnels), but for tunnels that are only used occassionally it would mean that the I2P router is creating and maintaining unnecessary tunnels.")%>
386            </p>
387            <div id="startupField" class="rowItem">
388                <label for="startOnLoad" accesskey="a">
389                    <%=intl._t("Auto Start")%>(<span class="accessKey">A</span>):
390                </label>
391                <input value="1" type="checkbox" id="startOnLoad" name="startOnLoad" title="Start Tunnel Automatically"<%=("1".equals(request.getParameter("startOnLoad")) ? " checked=\"checked\"" : "")%> class="tickbox" />
392                <span class="comment"><%=intl._t("(Check the Box for 'YES')")%></span>
393            </div><%
394            } else {
395              if ("1".equals(request.getParameter("startOnLoad"))) {
396            %><input type="hidden" name="startOnLoad" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("startOnLoad"))%>" /><%
397              }
398            } /* curPage 6 */
399
400               /* End page 6 */ %>
401
402            <% /* Page 7 - Wizard complete */
403
404            if (curPage == 7) {
405            %><p>
406                <%=intl._t("The wizard has now collected enough information to create your tunnel.")%>
407                <%=intl._t("Upon clicking the Save button below, the wizard will set up the tunnel, and take you back to the main I2PTunnel page.")%>
408                <%
409                if ("1".equals(request.getParameter("startOnLoad"))) {
410                %><%=intl._t("Because you chose to automatically start the tunnel when the router starts, you don't have to do anything further.")%>
411                <%=intl._t("The router will start the tunnel once it has been set up.")%><%
412                } else {
413                %><%=intl._t("Because you chose not to automatically start the tunnel, you will have to manually start it.")%>
414                <%=intl._t("You can do this by clicking the Start button on the main page which corresponds to the new tunnel.")%><%
415                } %>
416            </p>
417            <p>
418                <%=intl._t("Below is a summary of the options you chose:")%>
419            </p>
420            <table>
421                <tr><td><%=intl._t("Server or client tunnel?")%></td><td>
422                    <%=(tunnelIsClient ? "Client" : "Server")%>
423                </td></tr>
424                <tr><td><%=intl._t("Tunnel type")%></td><td><%
425                if ("client".equals(tunnelType) || "server".equals(tunnelType)) { %>
426                    <%=intl._t("Standard")%><%
427                } else if ("httpclient".equals(tunnelType) || "httpserver".equals(tunnelType)) { %>
428                    HTTP<%
429                } else if ("httpbidirserver".equals(tunnelType)) { %>
430                    HTTP bidir<%
431                } else if ("ircclient".equals(tunnelType) || "ircserver".equals(tunnelType)) { %>
432                    IRC<%
433                } else if ("sockstunnel".equals(tunnelType)) { %>
434                    SOCKS 4/4a/5<%
435                } else if ("socksirctunnel".equals(tunnelType)) { %>
436                    SOCKS IRC<%
437                } else if ("connectclient".equals(tunnelType)) { %>
438                    CONNECT<%
439                } else if ("streamrclient".equals(tunnelType) || "streamrserver".equals(tunnelType)) { %>
440                    Streamr<%
441                } %>
442                </td></tr>
443                <tr><td><%=intl._t("Tunnel name and description")%></td><td>
444                    <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("name"))%><br />
445                    <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_description"))%>
446                </td></tr><%
447                if (tunnelIsClient) { %>
448                <tr><td><%=intl._t("Tunnel destination")%></td><td><%
449                  if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) { %>
450                    <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("proxyList"))%><%
451                  } else if ("client".equals(tunnelType) || "ircclient".equals(tunnelType) || "streamrclient".equals(tunnelType)) { %>
452                    <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetDestination"))%><%
453                  } %>
454                </td></tr><%
455                } %>
456                <tr><td><%=intl._t("Binding address and port")%></td><td><%
457                if ((tunnelIsClient && "streamrclient".equals(tunnelType)) || (!tunnelIsClient && !"streamrserver".equals(tunnelType))) { %>
458                    <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost"))%><br /><%
459                }
460                if (!tunnelIsClient) { %>
461                    <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetPort"))%><br /><%
462                }
463                if (tunnelIsClient || "httpbidirserver".equals(tunnelType)) { %>
464                    <br /><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("port"))%><%
465                }
466                if ((tunnelIsClient && !"streamrclient".equals(tunnelType)) || "httpbidirserver".equals(tunnelType) || "streamrserver".equals(tunnelType)) { %>
467                    <br /><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("reachableBy"))%><%
468                } %>
469                </td></tr>
470                <tr><td><%=intl._t("Tunnel auto-start")%></td><td><%
471                if ("1".equals(request.getParameter("startOnLoad"))) { %>
472                    Yes<%
473                } else { %>
474                    No<%
475                } %>
476                </td></tr>
477            </table>
478            <p>
479                <%=intl._t("Alongside these basic settings, there are a number of advanced options for tunnel configuration.")%>
480                <%=intl._t("The wizard will set reasonably sensible default values for these, but you can view and/or edit these by clicking on the tunnel's name in the main I2PTunnel page.")%>
481            </p>
482
483            <input type="hidden" name="tunnelDepth" value="3" />
484            <input type="hidden" name="tunnelVariance" value="0" />
485            <input type="hidden" name="tunnelQuantity" value="2" />
486            <input type="hidden" name="tunnelBackupQuantity" value="0" />
487            <input type="hidden" name="clientHost" value="internal" />
488            <input type="hidden" name="clientport" value="internal" />
489            <input type="hidden" name="nofilter_customOptions" value="" />
490
491            <%
492              if (!"streamrclient".equals(tunnelType)) {
493            %><input type="hidden" name="profile" value="bulk" />
494            <input type="hidden" name="reduceCount" value="1" />
495            <input type="hidden" name="reduceTime" value="20" /><%
496              } /* !streamrclient */ %>
497
498            <%
499              if (tunnelIsClient) { /* Client-only defaults */
500                if (!"streamrclient".equals(tunnelType)) {
501            %><input type="hidden" name="newDest" value="0" />
502            <input type="hidden" name="closeTime" value="30" /><%
503                }
504                if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) {
505            %><input type="hidden" name="proxyUsername" value="" />
506            <input type="hidden" name="nofilter_proxyPassword" value="" />
507            <input type="hidden" name="outproxyUsername" value="" />
508            <input type="hidden" name="nofilter_outproxyPassword" value="" /><%
509                }
510                if ("httpclient".equals(tunnelType)) {
511            %><input type="hidden" name="jumpList" value="http://i2host.i2p/cgi-bin/i2hostjump?
512http://stats.i2p/cgi-bin/jump.cgi?a=" /><%
513                } /* httpclient */
514              } else { /* Server-only defaults */
515            %><input type="hidden" name="privKeyFile" value="<%=editBean.getPrivateKeyFile(-1)%>" />
516            <input type="hidden" name="encrypt" value="" />
517            <input type="hidden" name="encryptKey" value="" />
518            <input type="hidden" name="accessMode" value="0" />
519            <input type="hidden" name="accessList" value="" />
520            <input type="hidden" name="limitMinute" value="0" />
521            <input type="hidden" name="limitHour" value="0" />
522            <input type="hidden" name="limitDay" value="0" />
523            <input type="hidden" name="totalMinute" value="0" />
524            <input type="hidden" name="totalHour" value="0" />
525            <input type="hidden" name="totalDay" value="0" />
526            <input type="hidden" name="maxStreams" value="0" />
527            <input type="hidden" name="cert" value="0" /><%
528              } /* tunnelIsClient */
529            } /* curPage 7 */
530
531               /* End page 7 */ %>
532        </div>
533
534        <div id="globalOperationsPanel" class="panel">
535            <div class="header"></div>
536            <div class="footer">
537                <div class="toolbox">
538                    <a class="control" href="list"><%=intl._t("Cancel")%></a>
539                    <% if (curPage != 1 && curPage != 7) {
540                    %><button id="controlPrevious" accesskey="P" class="control" type="submit" name="action" value="Previous page" title="Previous Page"><%=intl._t("Previous")%>(<span class="accessKey">P</span>)</button><%
541                    } %>
542                    <% if (curPage == 7) {
543                    %><button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Save changes" title="Save Tunnel"><%=intl._t("Save Tunnel")%>(<span class="accessKey">S</span>)</button><%
544                    } else if (curPage == 6) {
545                    %><button id="controlFinish" accesskey="F" class="control" type="submit" name="action" value="Next page" title="Finish Wizard"><%=intl._t("Finish")%>(<span class="accessKey">F</span>)</button><%
546                    } else {
547                    %><button id="controlNext" accesskey="N" class="control" type="submit" name="action" value="Next page" title="Next Page"><%=intl._t("Next")%>(<span class="accessKey">N</span>)</button><%
548                    } %>
549                </div>
550            </div>
551        </div>
552
553    </form>
554
555    <div id="pageFooter">
556    </div>
557</body>
558</html>
Note: See TracBrowser for help on using the repository browser.