source: apps/i2ptunnel/jsp/index.jsp @ a1afa1c

Last change on this file since a1afa1c was 29ce84ff, checked in by str4d <str4d@…>, 8 years ago

disapproval of revision '2fccba5dbe1b538679f15727fd95295842ed8839'

  • Property mode set to 100644
File size: 14.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
10%><%@page pageEncoding="UTF-8"
11%><%@page trimDirectiveWhitespaces="true"
12%><%@page contentType="text/html" import="net.i2p.i2ptunnel.web.IndexBean"
13%><?xml version="1.0" encoding="UTF-8"?>
14<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
15<jsp:useBean class="net.i2p.i2ptunnel.web.IndexBean" id="indexBean" scope="request" />
16<jsp:setProperty name="indexBean" property="*" />
17<jsp:useBean class="net.i2p.i2ptunnel.web.Messages" id="intl" scope="request" />
18<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
19<head>
20    <title><%=intl._("I2P Tunnel Manager - List")%></title>
21   
22    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
23    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
24    <link href="/themes/console/images/favicon.ico" type="image/x-icon" rel="shortcut icon" />
25   
26    <% if (indexBean.allowCSS()) {
27  %><link rel="icon" href="<%=indexBean.getTheme()%>images/favicon.ico" />
28    <link href="<%=indexBean.getTheme()%>default.css" rel="stylesheet" type="text/css" /> 
29    <link href="<%=indexBean.getTheme()%>i2ptunnel.css" rel="stylesheet" type="text/css" />
30    <% }
31  %>
32</head>
33<body id="tunnelListPage">
34            <div id="pageHeader">
35    </div>
36
37    <div id="statusMessagePanel" class="panel">
38        <div class="header">
39            <h4><%=intl._("Status Messages")%></h4>
40        </div>
41
42        <div class="separator">
43            <hr />
44        </div>
45
46        <textarea id="statusMessages" rows="4" cols="60" readonly="readonly"><jsp:getProperty name="indexBean" property="messages" /></textarea>
47
48        <div class="separator">
49            <hr />
50        </div>
51
52        <div class="footer">
53            <div class="toolbox">
54                <a class="control" href="list"><%=intl._("Refresh")%></a>
55            </div>
56        </div>   
57    </div>
58<%
59
60  if (indexBean.isInitialized()) {
61
62%>
63    <div id="globalOperationsPanel" class="panel">
64        <div class="header"></div>
65        <div class="footer">
66            <div class="toolbox">
67                <a class="control" href="wizard"><%=intl._("Tunnel Wizard")%></a>
68                <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=Stop%20all"><%=intl._("Stop All")%></a>
69                <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=Start%20all"><%=intl._("Start All")%></a>
70                <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=Restart%20all"><%=intl._("Restart All")%></a>
71<%--
72                //this is really bad because it stops and restarts all tunnels, which is probably not what you want
73                <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=Reload%20configuration"><%=intl._("Reload Config")%></a>
74--%>
75            </div>
76        </div> 
77    </div>
78
79
80
81    <div id="localServerTunnelList" class="panel">
82        <div class="header">
83           
84    <h4><%=intl._("I2P Server Tunnels")%></h4>
85        </div>
86
87       
88  <div class="separator"> </div>
89
90        <div class="nameHeaderField rowItem">
91            <label><%=intl._("Name")%>:</label>
92        </div>
93        <div class="previewHeaderField rowItem">
94            <label><%=intl._("Points at")%>:</label>
95        </div>
96        <div class="targetHeaderField rowItem">
97            <label><%=intl._("Preview")%>:</label>
98        </div>
99        <div class="statusHeaderField rowItem">
100            <label><%=intl._("Status")%>:</label>
101<hr />        </div>
102       
103        <%
104        for (int curServer = 0; curServer < indexBean.getTunnelCount(); curServer++) {
105            if (indexBean.isClient(curServer)) continue;
106           
107      %>
108        <div class="nameField rowItem">
109            <label><%=intl._("Name")%>:</label>
110            <span class="text"><a href="edit?tunnel=<%=curServer%>" title="Edit Server Tunnel Settings for <%=indexBean.getTunnelName(curServer)%>"><%=indexBean.getTunnelName(curServer)%></a></span>
111        </div>
112        <div class="previewField rowItem">
113            <label><%=intl._("Points at")%>:</label>
114            <span class="text">
115        <%
116            if (indexBean.isServerTargetLinkValid(curServer)) {
117          %>
118            <a href="http://<%=indexBean.getServerTarget(curServer)%>/" title="Test HTTP server, bypassing I2P" target="_top"><%=indexBean.getServerTarget(curServer)%></a>
119        <%
120            } else {
121          %><%=indexBean.getServerTarget(curServer)%>
122        <%
123            }
124          %></span>
125        </div>
126        <div class="targetField rowItem">
127            <%
128            if (("httpserver".equals(indexBean.getInternalType(curServer)) || ("httpbidirserver".equals(indexBean.getInternalType(curServer)))) && indexBean.getTunnelStatus(curServer) == IndexBean.RUNNING) {
129          %><label><%=intl._("Preview")%>:</label>   
130            <a class="control" title="Test HTTP server through I2P" href="http://<%=indexBean.getDestHashBase32(curServer)%>.b32.i2p" target="_top"><%=intl._("Preview")%></a>
131            <%
132            } else if (indexBean.getTunnelStatus(curServer) == IndexBean.RUNNING) {
133          %><span class="text"><%=intl._("Base32 Address")%>:<br /><%=indexBean.getDestHashBase32(curServer)%>.b32.i2p</span>
134        <%
135            } else {
136          %><span class="comment"><%=intl._("No Preview")%></span>
137        <%
138            }
139      %></div>
140        <div class="statusField rowItem">
141            <label><%=intl._("Status")%>:</label>
142            <%
143            switch (indexBean.getTunnelStatus(curServer)) {
144                case IndexBean.STARTING:
145          %><div class="statusStarting text"><%=intl._("Starting...")%></div>   
146            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=stop&amp;tunnel=<%=curServer%>"><%=intl._("Stop")%></a>
147        <%
148                break;
149                case IndexBean.RUNNING:
150          %><div class="statusRunning text"><%=intl._("Running")%></div>   
151            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=stop&amp;tunnel=<%=curServer%>"><%=intl._("Stop")%></a>
152        <%
153                break;
154                case IndexBean.NOT_RUNNING:
155          %><div class="statusNotRunning text"><%=intl._("Stopped")%></div>   
156            <a class="control" title="Start this Tunnel" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=start&amp;tunnel=<%=curServer%>"><%=intl._("Start")%></a>
157        <%
158                break;
159            }
160      %></div>
161
162        <div class="descriptionField rowItem">
163            <label><%=intl._("Description")%>:</label>
164            <div class="text"><%=indexBean.getTunnelDescription(curServer)%></div>
165        </div>
166
167        <div class="subdivider">
168            <hr />
169        </div>
170        <%
171        }
172      %>
173        <div class="separator">
174            <hr />
175        </div>
176           
177        <div class="footer">
178            <form id="addNewServerTunnelForm" action="edit"> 
179            <div class="toolbox">
180                   
181        <label><%=intl._("New server tunnel")%>:</label>
182                    <select name="type">
183                        <option value="server"><%=intl._("Standard")%></option>
184                        <option value="httpserver">HTTP</option>
185                        <option value="httpbidirserver">HTTP bidir</option>
186                        <option value="ircserver">IRC</option>
187                        <option value="streamrserver">Streamr</option>
188                    </select>
189                    <input class="control" type="submit" value="<%=intl._("Create")%>" />
190                </div>
191            </form>
192        </div>
193    </div>   
194
195
196    <div id="localClientTunnelList" class="panel">
197        <div class="header">
198           
199    <h4><%=intl._("I2P Client Tunnels")%></h4>
200        </div>
201
202       
203  <div class="separator"> </div>
204       
205        <div class="nameHeaderField rowItem">
206            <label><%=intl._("Name")%>:</label>
207        </div>
208        <div class="portHeaderField rowItem">
209            <label><%=intl._("Port")%>:</label>
210        </div>
211        <div class="typeHeaderField rowItem">
212            <label><%=intl._("Type")%>:</label>
213        </div>
214        <div class="interfaceHeaderField rowItem">
215            <label><%=intl._("Interface")%>:</label>
216        </div>
217        <div class="statusHeaderField rowItem">
218            <label><%=intl._("Status")%>:</label>
219        </div>
220
221        <div class="separator">
222            <hr />
223        </div>
224        <%
225        for (int curClient = 0; curClient < indexBean.getTunnelCount(); curClient++) {
226            if (!indexBean.isClient(curClient)) continue;
227      %>
228        <div class="nameField rowItem">
229            <label><%=intl._("Name")%>:</label>
230            <span class="text"><a href="edit?tunnel=<%=curClient%>" title="Edit Tunnel Settings for <%=indexBean.getTunnelName(curClient)%>"><%=indexBean.getTunnelName(curClient)%></a></span>
231        </div>
232        <div class="portField rowItem">
233            <label><%=intl._("Port")%>:</label>
234            <span class="text">
235         <%
236               String cPort= indexBean.getClientPort2(curClient);
237               out.write(cPort);
238          %>
239            </span>
240        </div>
241        <div class="typeField rowItem">
242            <label><%=intl._("Type")%>:</label>
243            <span class="text"><%=indexBean.getTunnelType(curClient)%></span>
244        </div>
245        <div class="interfaceField rowItem">
246            <label><%=intl._("Interface")%>:</label>
247            <span class="text">
248         <%
249               /* should only happen for streamr client */
250               String cHost= indexBean.getClientInterface(curClient);
251               if (cHost == null || "".equals(cHost)) {
252                   out.write("<font color=\"red\">");
253                   out.write(intl._("Host not set"));
254                   out.write("</font>");
255               } else {
256                   out.write(cHost);
257               }
258          %>
259            </span>
260        </div>
261        <div class="statusField rowItem">
262            <label><%=intl._("Status")%>:</label>
263            <%
264            switch (indexBean.getTunnelStatus(curClient)) {
265                case IndexBean.STARTING:
266          %><div class="statusStarting text"><%=intl._("Starting...")%></div>
267            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=stop&amp;tunnel=<%=curClient%>"><%=intl._("Stop")%></a>
268        <%
269                break;
270                case IndexBean.STANDBY:
271          %><div class="statusStarting text"><%=intl._("Standby")%></div>
272            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=stop&amp;tunnel=<%=curClient%>"><%=intl._("Stop")%></a>
273        <%
274                break;
275                case IndexBean.RUNNING:
276          %><div class="statusRunning text"><%=intl._("Running")%></div>
277            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=stop&amp;tunnel=<%=curClient%>"><%=intl._("Stop")%></a>
278        <%
279                break;
280                case IndexBean.NOT_RUNNING:
281          %><div class="statusNotRunning text"><%=intl._("Stopped")%></div>
282            <a class="control" title="Start this Tunnel" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=start&amp;tunnel=<%=curClient%>"><%=intl._("Start")%></a>
283        <%
284                break;
285            }
286      %></div>
287
288        <div class="destinationField rowItem">
289            <label>
290            <% if ("httpclient".equals(indexBean.getInternalType(curClient)) || "connectclient".equals(indexBean.getInternalType(curClient)) ||
291                   "sockstunnel".equals(indexBean.getInternalType(curClient)) || "socksirctunnel".equals(indexBean.getInternalType(curClient))) { %>
292                <%=intl._("Outproxy")%>:
293            <% } else { %>
294                <%=intl._("Destination")%>:
295            <% } %>
296            </label>
297            <div class="text">
298            <% String cdest = indexBean.getClientDestination(curClient);
299               if (cdest.length() > 70) { // Probably a B64 (a B32 is 60 chars) so truncate
300                   %><%=cdest.substring(0, 45)%>&hellip;<%=cdest.substring(cdest.length() - 15, cdest.length())%><%
301               } else if (cdest.length() > 0) {
302                   %><%=cdest%><%
303               } else {
304                   %><i><%=intl._("none")%></i><%
305               } %>
306            </div>
307        </div>
308
309        <div class="descriptionField rowItem">
310            <label><%=intl._("Description")%>:</label>
311            <div class="text"><%=indexBean.getTunnelDescription(curClient)%></div>
312        </div>
313
314        <div class="subdivider">
315            <hr />
316        </div>
317        <%
318        }
319      %>           
320        <div class="separator">
321            <hr />
322        </div>
323   
324        <div class="footer">
325            <form id="addNewClientTunnelForm" action="edit">
326                <div class="toolbox">
327                   
328        <label><%=intl._("New client tunnel")%>:</label>
329                    <select name="type">
330                        <option value="client"><%=intl._("Standard")%></option>
331                        <option value="httpclient">HTTP</option>
332                        <option value="ircclient">IRC</option>
333                        <option value="sockstunnel">SOCKS 4/4a/5</option>
334                        <option value="socksirctunnel">SOCKS IRC</option>
335                        <option value="connectclient">CONNECT</option>
336                        <option value="streamrclient">Streamr</option>
337                    </select>
338                    <input class="control" type="submit" value="<%=intl._("Create")%>" />
339                </div>
340            </form>
341        </div>
342    </div>
343<%
344
345  }  // isInitialized()
346
347%>
348    <div id="pageFooter">
349    </div>
350</body>
351</html>
Note: See TracBrowser for help on using the repository browser.