source: apps/i2ptunnel/jsp/editServer.jsp @ cc2be10

Last change on this file since cc2be10 was cc2be10, checked in by zzz <zzz@…>, 12 years ago
  • I2PTunnel:
    • Add edit text
    • Fix broken favicon
  • Property mode set to 100644
File size: 23.7 KB
Line 
1<%@page contentType="text/html" import="net.i2p.i2ptunnel.web.EditBean"%><?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<jsp:useBean class="net.i2p.i2ptunnel.web.EditBean" id="editBean" scope="request" />
4<% String tun = request.getParameter("tunnel");
5   int curTunnel = -1;
6   if (tun != null) {
7     try {
8       curTunnel = Integer.parseInt(tun);
9     } catch (NumberFormatException nfe) {
10       curTunnel = -1;
11     }
12   }
13%>
14<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
15<head>
16    <title>I2PTunnel Webmanager - Edit</title>
17    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
18    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
19
20    <% if (editBean.allowCSS()) {
21  %><link href="/themes/console/images/favicon.ico" type="image/x-icon" rel="shortcut icon" />
22    <link href="<%=editBean.getTheme()%>default.css" rel="stylesheet" type="text/css" /> 
23    <link href="<%=editBean.getTheme()%>i2ptunnel.css" rel="stylesheet" type="text/css" />
24    <% }
25  %>
26</head>
27<body id="tunnelEditPage">
28    <div id="pageHeader">
29    </div>
30
31    <form method="post" action="index.jsp">
32
33        <div id="tunnelEditPanel" class="panel">
34            <div class="header">
35                <%
36                String tunnelTypeName = "";
37                String tunnelType = "";
38                if (curTunnel >= 0) {
39                    tunnelTypeName = editBean.getTunnelType(curTunnel);
40                    tunnelType = editBean.getInternalType(curTunnel);
41                  %><h4>Edit server settings</h4><% 
42                } else {
43                    tunnelTypeName = editBean.getTypeName(request.getParameter("type"));
44                    tunnelType = request.getParameter("type");
45                  %><h4>New server settings</h4><% 
46                } %>
47                <input type="hidden" name="tunnel" value="<%=request.getParameter("tunnel")%>" />
48                <input type="hidden" name="nonce" value="<%=editBean.getNextNonce()%>" />
49                <input type="hidden" name="type" value="<%=tunnelType%>" />
50            </div>
51     
52            <div class="separator">
53                <hr />
54            </div>
55
56            <div id="nameField" class="rowItem">
57                <label for="name" accesskey="N">
58                    <span class="accessKey">N</span>ame:
59                </label>
60                <input type="text" size="30" maxlength="50" name="name" id="name" title="Tunnel Name" value="<%=editBean.getTunnelName(curTunnel)%>" class="freetext" />               
61            </div>
62            <div id="typeField" class="rowItem">
63                <label>Type:</label>
64                <span class="text"><%=tunnelTypeName%></span>
65            </div>
66            <div id="descriptionField" class="rowItem">
67                <label for="description" accesskey="e">
68                    D<span class="accessKey">e</span>scription:
69                </label>
70                <input type="text" size="60" maxlength="80" name="description"  id="description" title="Tunnel Description" value="<%=editBean.getTunnelDescription(curTunnel)%>" class="freetext" />               
71            </div>
72            <div id="startupField" class="rowItem">
73                <label for="startOnLoad" accesskey="a">
74                    <span class="accessKey">A</span>uto Start:
75                </label>
76                <input value="1" type="checkbox" id="startOnLoad" name="startOnLoad" title="Start Tunnel Automatically"<%=(editBean.startAutomatically(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />               
77                <span class="comment">(Check the Box for 'YES')</span>
78            </div>
79                 
80            <div class="subdivider">
81                <hr />
82            </div>
83                 
84            <div id="targetField" class="rowItem">
85         <% if ("streamrserver".equals(tunnelType)) { %>
86                <label>Access Point:</label>
87         <% } else { %>
88                <label>Target:</label>
89         <% } %>
90            </div>
91            <div id="hostField" class="rowItem">
92                <label for="targetHost" accesskey="H">
93         <% if ("streamrserver".equals(tunnelType)) { %>
94                    <span class="accessKey">R</span>eachable by:
95         <% } else { %>
96                    <span class="accessKey">H</span>ost:
97         <% } %>
98                </label>
99                <input type="text" size="20" id="targetHost" name="targetHost" title="Target Hostname or IP" value="<%=editBean.getTargetHost(curTunnel)%>" class="freetext" />               
100            </div>
101            <div id="portField" class="rowItem">
102                <label for="targetPort" accesskey="P">
103                    <span class="accessKey">P</span>ort:
104                    <% String value = editBean.getTargetPort(curTunnel);
105                       if (value == null || "".equals(value.trim()))
106                           out.write(" <font color=\"red\">(required)</font>");
107                     %>
108                </label>
109                <input type="text" size="6" maxlength="5" id="targetPort" name="targetPort" title="Target Port Number" value="<%=editBean.getTargetPort(curTunnel)%>" class="freetext" />               
110            </div>
111           
112            <div class="subdivider">
113                <hr />
114            </div>
115           
116            <% if ("httpserver".equals(tunnelType)) {
117          %><div id="websiteField" class="rowItem">
118                <label for="spoofedHost" accesskey="W">
119                    <span class="accessKey">W</span>ebsite name:
120                </label>
121                <input type="text" size="20" id="targetHost" name="spoofedHost" title="Website Host Name" value="<%=editBean.getSpoofedHost(curTunnel)%>" class="freetext" />               
122                <span class="comment">(leave blank for outproxies)</span>
123            </div>
124            <% }
125          %><div id="privKeyField" class="rowItem">
126                <label for="privKeyFile" accesskey="k">
127                    Private <span class="accessKey">k</span>ey file:
128                    <% String value2 = editBean.getPrivateKeyFile(curTunnel);
129                       if (value2 == null || "".equals(value2.trim()))
130                           out.write(" <font color=\"red\">(required)</font>");
131                     %>
132                </label>
133                <input type="text" size="30" id="privKeyFile" name="privKeyFile" title="Path to Private Key File" value="<%=editBean.getPrivateKeyFile(curTunnel)%>" class="freetext" />               
134            </div>
135         <% if (!"streamrserver".equals(tunnelType)) { %>
136            <div id="profileField" class="rowItem">
137                <label for="profile" accesskey="f">
138                    Pro<span class="accessKey">f</span>ile:
139                </label>
140                <select id="profile" name="profile" title="Connection Profile" class="selectbox">
141                    <% boolean interactiveProfile = editBean.isInteractive(curTunnel);
142                  %><option <%=(interactiveProfile == true  ? "selected=\"selected\" " : "")%>value="interactive">interactive connection </option>
143                    <option <%=(interactiveProfile == false ? "selected=\"selected\" " : "")%>value="bulk">bulk connection (downloads/websites/BT) </option>
144                </select>               
145            </div> 
146         <% } // !streamrserver %>
147            <div id="destinationField" class="rowItem">
148                <label for="localDestination" accesskey="L">
149                    <span class="accessKey">L</span>ocal destination:
150                </label>
151                <textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Read Only: Local Destination (if known)" wrap="off"><%=editBean.getDestinationBase64(curTunnel)%></textarea>               
152         <% if (!"".equals(editBean.getDestinationBase64(curTunnel))) { %>   
153            <a href="/susidns/addressbook.jsp?book=private&hostname=<%=editBean.getTunnelName(curTunnel)%>&destination=<%=editBean.getDestinationBase64(curTunnel)%>#add">Add to local addressbook</a>   
154         <% } %>
155            </div>
156           
157            <div class="footer">
158            </div>
159        </div>
160
161        <div id="tunnelAdvancedNetworking" class="panel">
162            <div class="header">
163                <h4>Advanced networking options</h4>
164            </div>
165
166            <div class="separator">
167                <hr />
168            </div>
169           
170            <div id="tunnelOptionsField" class="rowItem">
171                <label>Tunnel Options:</label>
172            </div>
173            <div id="depthField" class="rowItem">
174                <label for="tunnelDepth" accesskey="t">
175                    Dep<span class="accessKey">t</span>h:
176                </label>
177                <select id="tunnelDepth" name="tunnelDepth" title="Depth of each Tunnel" class="selectbox">
178                    <% int tunnelDepth = editBean.getTunnelDepth(curTunnel, 2);
179                  %><option value="0"<%=(tunnelDepth == 0 ? " selected=\"selected\"" : "") %>>0 hop tunnel (low anonymity, low latency)</option>
180                    <option value="1"<%=(tunnelDepth == 1 ? " selected=\"selected\"" : "") %>>1 hop tunnel (medium anonymity, medium latency)</option>
181                    <option value="2"<%=(tunnelDepth == 2 ? " selected=\"selected\"" : "") %>>2 hop tunnel (high anonymity, high latency)</option>
182                    <option value="3"<%=(tunnelDepth == 3 ? " selected=\"selected\"" : "") %>>3 hop tunnel (very high anonymity, poor performance)</option>
183                <% if (tunnelDepth > 3) { 
184                %>    <option value="<%=tunnelDepth%>" selected="selected"><%=tunnelDepth%> hop tunnel (very poor performance)</option>
185                <% }
186              %></select>
187            </div>
188            <div id="varianceField" class="rowItem">
189                <label for="tunnelVariance" accesskey="v">
190                    <span class="accessKey">V</span>ariance:
191                </label>
192                <select id="tunnelVariance" name="tunnelVariance" title="Level of Randomization for Tunnel Depth" class="selectbox">
193                    <% int tunnelVariance = editBean.getTunnelVariance(curTunnel, 0);
194                  %><option value="0"<%=(tunnelVariance  ==  0 ? " selected=\"selected\"" : "") %>>0 hop variance          (no randomisation, consistant performance)</option>
195                    <option value="1"<%=(tunnelVariance  ==  1 ? " selected=\"selected\"" : "") %>>+ 0-1 hop variance      (medium additive randomisation, subtractive performance)</option>
196                    <option value="2"<%=(tunnelVariance  ==  2 ? " selected=\"selected\"" : "") %>>+ 0-2 hop variance      (high additive randomisation, subtractive performance)</option>
197                    <option value="-1"<%=(tunnelVariance == -1 ? " selected=\"selected\"" : "") %>>+/- 0-1 hop variance    (standard randomisation, standard performance)</option>
198                    <option value="-2"<%=(tunnelVariance == -2 ? " selected=\"selected\"" : "") %>>+/- 0-2 hop variance    (not recommended)</option>
199                <% if (tunnelVariance > 2 || tunnelVariance < -2) {
200                %>    <option value="<%=tunnelVariance%>" selected="selected"><%= (tunnelVariance > 2 ? "+ " : "+/- ") %>0-<%=tunnelVariance%> hop variance</option>
201                <% }
202              %></select>               
203            </div>
204            <div id="countField" class="rowItem">
205                <label for="tunnelQuantity" accesskey="C">
206                    <span class="accessKey">C</span>ount:
207                </label>
208                <select id="tunnelQuantity" name="tunnelQuantity" title="Number of Tunnels in Group" class="selectbox">
209                    <% int tunnelQuantity = editBean.getTunnelQuantity(curTunnel, 2);
210                  %><option value="1"<%=(tunnelQuantity == 1 ? " selected=\"selected\"" : "") %>>1 inbound, 1 outbound tunnel  (low bandwidth usage, less reliability)</option>
211                    <option value="2"<%=(tunnelQuantity == 2 ? " selected=\"selected\"" : "") %>>2 inbound, 2 outbound tunnels (standard bandwidth usage, standard reliability)</option>
212                    <option value="3"<%=(tunnelQuantity == 3 ? " selected=\"selected\"" : "") %>>3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)</option>
213                <% if (tunnelQuantity > 3) {
214                %>    <option value="<%=tunnelQuantity%>" selected="selected"><%=tunnelQuantity%> tunnels</option>
215                <% }
216              %></select>               
217            </div>
218            <div id="backupField" class="rowItem">
219                <label for="tunnelBackupQuantity" accesskey="b">
220                    <span class="accessKey">B</span>ackup Count:
221                </label>
222                <select id="tunnelBackupQuantity" name="tunnelBackupQuantity" title="Number of Reserve Tunnels" class="selectbox">
223                    <% int tunnelBackupQuantity = editBean.getTunnelBackupQuantity(curTunnel, 0);
224                  %><option value="0"<%=(tunnelBackupQuantity == 0 ? " selected=\"selected\"" : "") %>>0 backup tunnels      (0 redundancy, no added resource usage)</option>
225                    <option value="1"<%=(tunnelBackupQuantity == 1 ? " selected=\"selected\"" : "") %>>1 backup tunnel each direction (low redundancy, low resource usage)</option>
226                    <option value="2"<%=(tunnelBackupQuantity == 2 ? " selected=\"selected\"" : "") %>>2 backup tunnels each direction (medium redundancy, medium resource usage)</option>
227                    <option value="3"<%=(tunnelBackupQuantity == 3 ? " selected=\"selected\"" : "") %>>3 backup tunnels each direction (high redundancy, high resource usage)</option>
228                <% if (tunnelBackupQuantity > 3) {
229                %>    <option value="<%=tunnelBackupQuantity%>" selected="selected"><%=tunnelBackupQuantity%> backup tunnels</option>
230                <% }
231              %></select>               
232            </div>
233                           
234            <div class="subdivider">
235                <hr />
236            </div>
237           
238            <div id="optionsField" class="rowItem">
239                <label>I2CP Options:</label>
240            </div>
241            <div id="optionsHostField" class="rowItem">
242                <label for="clientHost" accesskey="o">
243                    H<span class="accessKey">o</span>st:
244                </label>
245                <input type="text" id="clientHost" name="clientHost" size="20" title="I2CP Hostname or IP" value="<%=editBean.getI2CPHost(curTunnel)%>" class="freetext" />               
246            </div>
247            <div id="optionsPortField" class="rowItem">
248                <label for="clientPort" accesskey="r">
249                    Po<span class="accessKey">r</span>t:
250                </label>
251                <input type="text" id="clientPort" name="clientport" size="20" title="I2CP Port Number" value="<%=editBean.getI2CPPort(curTunnel)%>" class="freetext" />               
252            </div>
253           
254            <div class="subdivider">
255                <hr />
256            </div>
257           
258            <div id="optionsField" class="rowItem">
259                <label for="encrypt" accesskey="e">
260                    <span class="accessKey">E</span>ncrypt Leaseset:
261                </label>
262            </div>
263            <div id="portField" class="rowItem">
264                <label for="encrypt" accesskey="e">
265                    Enable:
266                </label>
267                <input value="1" type="checkbox" id="startOnLoad" name="encrypt" title="Encrypt LeaseSet"<%=(editBean.getEncrypt(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />               
268            </div>
269            <div id="portField" class="rowItem">
270                <label for="encrypt" accesskey="e">
271                    Encryption Key:
272                </label>
273                <textarea rows="1" style="height: 3em;" cols="44" id="portField" name="encryptKey" title="Encrypt Key" wrap="off"><%=editBean.getEncryptKey(curTunnel)%></textarea>               
274            </div>
275            <div id="portField" class="rowItem">
276                <label for="force" accesskey="c">
277                    Generate New Key:
278                </label>
279                <button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Generate" title="Generate New Key Now">Generate</button>
280                <span class="comment">(Tunnel must be stopped first)</span>
281            </div>
282                 
283            <div class="subdivider">
284                <hr />
285            </div>
286           
287            <div id="optionsField" class="rowItem">
288                <label for="access" accesskey="s">
289                    Restricted Acce<span class="accessKey">s</span>s List: <i>Unimplemented</i>
290                </label>
291            </div>
292            <div id="portField" class="rowItem">
293                <label for="access" accesskey="s">
294                    Enable:
295                </label>
296                <input value="1" type="checkbox" id="startOnLoad" name="access" title="Enable Access List"<%=(editBean.getAccess(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />               
297            </div>
298            <div id="hostField" class="rowItem">
299                <label for="accessList" accesskey="s">
300                    Access List:
301                </label>
302                <textarea rows="2" style="height: 4em;" cols="60" id="hostField" name="accessList" title="Access List" wrap="off"><%=editBean.getAccessList(curTunnel)%></textarea>               
303                <span class="comment">(Restrict to these clients only)</span>
304            </div>
305                 
306            <div class="subdivider">
307                <hr />
308            </div>
309           
310            <div id="optionsField" class="rowItem">
311                <label for="reduce" accesskey="d">
312                    Re<span class="accessKey">d</span>uce tunnel quantity when idle:
313                </label>
314            </div>
315            <div id="portField" class="rowItem">
316                <label for="access" accesskey="d">
317                    Enable:
318                </label>
319                <input value="1" type="checkbox" id="startOnLoad" name="reduce" title="Reduce Tunnels"<%=(editBean.getReduce(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />               
320            </div>
321            <div id="portField" class="rowItem">
322                <label for="reduceCount" accesskey="d">
323                    Reduced tunnel count:
324                </label>
325                <input type="text" id="port" name="reduceCount" size="1" maxlength="1" title="Reduced Tunnel Count" value="<%=editBean.getReduceCount(curTunnel)%>" class="freetext" />               
326            </div>
327            <div id="portField" class="rowItem">
328                <label for="reduceTime" accesskey="d">
329                    Idle minutes:
330                </label>
331                <input type="text" id="port" name="reduceTime" size="4" maxlength="4" title="Reduced Tunnel Idle Time" value="<%=editBean.getReduceTime(curTunnel)%>" class="freetext" />               
332            </div>
333
334            <div class="subdivider">
335                <hr />
336            </div>
337           
338            <div id="tunnelOptionsField" class="rowItem">
339                <label for="cert" accesskey="c">
340                    New <span class="accessKey">C</span>ertificate type:
341                </label>
342            </div>
343            <div id="hostField" class="rowItem">
344              <div id="portField" class="rowItem">
345                <label>None</label>
346                <input value="0" type="radio" id="startOnLoad" name="cert" title="No Certificate"<%=(editBean.getCert(curTunnel)==0 ? " checked=\"checked\"" : "")%> class="tickbox" />               
347                <span class="comment"></span>
348              </div>
349              <div id="portField" class="rowItem">
350                <label>Hashcash (effort)</label>
351                <input value="1" type="radio" id="startOnLoad" name="cert" title="Hashcash Certificate"<%=(editBean.getCert(curTunnel)==1 ? " checked=\"checked\"" : "")%> class="tickbox" />               
352                <input type="text" id="port" name="effort" size="2" maxlength="2" title="Hashcash Effort" value="<%=editBean.getEffort(curTunnel)%>" class="freetext" />               
353              </div>
354            </div>
355            <div id="portField" class="rowItem">
356                <label for="force" accesskey="c">
357                    Hashcash Calc Time:
358                </label>
359                <button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Estimate" title="Estimate Calculation Time">Estimate</button>
360            </div>
361            <div id="hostField" class="rowItem">
362              <div id="portField" class="rowItem">
363                <label>Hidden</label>
364                <input value="2" type="radio" id="startOnLoad" name="cert" title="Hidden Certificate"<%=(editBean.getCert(curTunnel)==2 ? " checked=\"checked\"" : "")%> class="tickbox" />               
365                <span class="comment"></span>
366              </div>
367              <div id="portField" class="rowItem">
368                <label for="signer" accesskey="c">
369                    Signed (signed by):
370                </label>
371                <input value="3" type="radio" id="startOnLoad" name="cert" title="Signed Certificate"<%=(editBean.getCert(curTunnel)==3 ? " checked=\"checked\"" : "")%> class="tickbox" />               
372                <input type="text" id="port" name="signer" size="50" title="Cert Signer" value="<%=editBean.getSigner(curTunnel)%>" class="freetext" />               
373                <span class="comment"></span>
374              </div>
375            </div>
376            <div id="portField" class="rowItem">
377                <label for="force" accesskey="c">
378                    Modify Certificate:
379                </label>
380                <button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Modify" title="Force New Cert Now">Modify</button>
381                <span class="comment">(Tunnel must be stopped first)</span>
382            </div>
383                 
384            <div class="subdivider">
385                <hr />
386            </div>
387                 
388            <div id="customOptionsField" class="rowItem">
389                <label for="customOptions" accesskey="u">
390                    C<span class="accessKey">u</span>stom options:
391                </label>
392                <input type="text" id="customOptions" name="customOptions" size="60" title="Custom Options" value="<%=editBean.getCustomOptions(curTunnel)%>" class="freetext" />               
393            </div>
394           
395            <div class="footer">
396            </div>
397        </div>
398        <div id="globalOperationsPanel" class="panel">
399            <div class="header"></div>
400            <div class="footer">
401                <div class="toolbox">
402                    <span class="comment">NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted</span>
403                    <input type="hidden" value="true" name="removeConfirm" />
404                    <button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Save changes" title="Save Changes"><span class="accessKey">S</span>ave</button>
405                    <button id="controlDelete" <%=(editBean.allowJS() ? "onclick=\"if (!confirm('Are you sure you want to delete?')) { return false; }\" " : "")%>accesskey="D" class="control" type="submit" name="action" value="Delete this proxy" title="Delete this Proxy"><span class="accessKey">D</span>elete</button>
406                    <button id="controlCancel" class="control" type="submit" name="action" value="" title="Cancel">Cancel</button>
407                </div>
408            </div> 
409        </div>
410    </form>
411    <div id="pageFooter">
412    </div>
413</body>
414</html>
Note: See TracBrowser for help on using the repository browser.