forked from I2P_Developers/i2p.i2p
Migrate i2ptunnel UI to tables, drop duplicate ids
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -28,46 +28,42 @@
|
||||
|
||||
<% if (indexBean.allowCSS()) {
|
||||
%><link rel="icon" href="<%=indexBean.getTheme()%>images/favicon.ico" />
|
||||
<link href="<%=indexBean.getTheme()%>default.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<%=indexBean.getTheme()%>i2ptunnel.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<%=indexBean.getTheme()%>i2ptunnel.css" rel="stylesheet" type="text/css" />
|
||||
<% }
|
||||
%>
|
||||
</head>
|
||||
<body id="tunnelListPage">
|
||||
<div id="pageHeader">
|
||||
</div>
|
||||
|
||||
<div id="statusMessagePanel" class="panel">
|
||||
<div class="header">
|
||||
<h4><%=intl._t("Status Messages")%></h4>
|
||||
</div>
|
||||
|
||||
<div class="separator">
|
||||
<hr />
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<h2><%=intl._t("Status Messages")%></h2>
|
||||
<table id="statusMessagesTable">
|
||||
<tr>
|
||||
<td id="tunnelMessages">
|
||||
<textarea id="statusMessages" rows="4" cols="60" readonly="readonly"><jsp:getProperty name="indexBean" property="messages" /></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="separator">
|
||||
<hr />
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<div class="toolbox">
|
||||
<tr>
|
||||
<td class="buttons">
|
||||
<a class="control" href="list"><%=intl._t("Refresh")%></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<%
|
||||
|
||||
if (indexBean.isInitialized()) {
|
||||
String nextNonce = net.i2p.i2ptunnel.web.IndexBean.getNextNonce();
|
||||
|
||||
%>
|
||||
<div id="globalOperationsPanel" class="panel">
|
||||
<div class="header"></div>
|
||||
<div class="footer">
|
||||
<div class="toolbox">
|
||||
|
||||
<div class="panel" id="globalTunnelControl">
|
||||
<h2><%=intl._t("Global Tunnel Control")%></h2>
|
||||
<table>
|
||||
<tr>
|
||||
<td class="buttons">
|
||||
<a class="control" href="wizard"><%=intl._t("Tunnel Wizard")%></a>
|
||||
<a class="control" href="list?nonce=<%=nextNonce%>&action=Stop%20all"><%=intl._t("Stop All")%></a>
|
||||
<a class="control" href="list?nonce=<%=nextNonce%>&action=Start%20all"><%=intl._t("Start All")%></a>
|
||||
@@ -76,52 +72,44 @@
|
||||
//this is really bad because it stops and restarts all tunnels, which is probably not what you want
|
||||
<a class="control" href="list?nonce=<%=nextNonce%>&action=Reload%20configuration"><%=intl._t("Reload Config")%></a>
|
||||
--%>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
|
||||
<h2><%=intl._t("I2P Hidden Services")%></h2>
|
||||
|
||||
<table id="serverTunnels">
|
||||
<tr>
|
||||
<th class="tunnelName"><%=intl._t("Name")%></th>
|
||||
<th class="tunnelType"><%=intl._t("Type")%></th>
|
||||
<th class="tunnelLocation"><%=intl._t("Points at")%></th>
|
||||
<th class="tunnelPreview"><%=intl._t("Preview")%></th>
|
||||
<th class="tunnelStatus"><%=intl._t("Status")%></th>
|
||||
<th class="tunnelControl"><%=intl._t("Control")%></th>
|
||||
</tr>
|
||||
|
||||
<div id="localServerTunnelList" class="panel">
|
||||
<div class="header">
|
||||
|
||||
<h4><%=intl._t("I2P Hidden Services")%></h4>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="separator"> </div>
|
||||
|
||||
<div class="nameHeaderField rowItem">
|
||||
<label><%=intl._t("Name")%>:</label>
|
||||
</div>
|
||||
<div class="previewHeaderField rowItem">
|
||||
<label><%=intl._t("Points at")%>:</label>
|
||||
</div>
|
||||
<div class="targetHeaderField rowItem">
|
||||
<label><%=intl._t("Preview")%>:</label>
|
||||
</div>
|
||||
<div class="statusHeaderField rowItem">
|
||||
<label><%=intl._t("Status")%>:</label>
|
||||
<hr /> </div>
|
||||
|
||||
<%
|
||||
for (int curServer = 0; curServer < indexBean.getTunnelCount(); curServer++) {
|
||||
if (indexBean.isClient(curServer)) continue;
|
||||
|
||||
%>
|
||||
<div class="nameField rowItem">
|
||||
<label><%=intl._t("Name")%>:</label>
|
||||
<span class="text"><a href="edit?tunnel=<%=curServer%>" title="Edit Server Tunnel Settings for <%=indexBean.getTunnelName(curServer)%>"><%=indexBean.getTunnelName(curServer)%></a></span>
|
||||
</div>
|
||||
<div class="previewField rowItem">
|
||||
<label><%=intl._t("Points at")%>:</label>
|
||||
<span class="text">
|
||||
|
||||
|
||||
<tr class="tunnelProperties">
|
||||
<td class="tunnelName">
|
||||
<a href="edit?tunnel=<%=curServer%>" title="<%=intl._t("Edit Server Tunnel Settings for")%> <%=indexBean.getTunnelName(curServer)%>"><%=indexBean.getTunnelName(curServer)%></a>
|
||||
</td>
|
||||
<td class="tunnelType"><%=indexBean.getTunnelType(curServer)%></td>
|
||||
<td class="tunnelLocation">
|
||||
<%
|
||||
if (indexBean.isServerTargetLinkValid(curServer)) {
|
||||
if (indexBean.isSSLEnabled(curServer)) { %>
|
||||
<a href="https://<%=indexBean.getServerTarget(curServer)%>/" title="Test HTTPS server, bypassing I2P" target="_top"><%=indexBean.getServerTarget(curServer)%> SSL</a>
|
||||
<a href="https://<%=indexBean.getServerTarget(curServer)%>/" title="<%=intl._t("Test HTTPS server, bypassing I2P")%>" target="_top"><%=indexBean.getServerTarget(curServer)%> SSL</a>
|
||||
<% } else { %>
|
||||
<a href="http://<%=indexBean.getServerTarget(curServer)%>/" title="Test HTTP server, bypassing I2P" target="_top"><%=indexBean.getServerTarget(curServer)%></a>
|
||||
<a href="http://<%=indexBean.getServerTarget(curServer)%>/" title="<%=intl._t("Test HTTP server, bypassing I2P")%>" target="_top"><%=indexBean.getServerTarget(curServer)%></a>
|
||||
<%
|
||||
}
|
||||
} else {
|
||||
@@ -132,64 +120,66 @@
|
||||
<%
|
||||
}
|
||||
}
|
||||
%></span>
|
||||
</div>
|
||||
<div class="targetField rowItem">
|
||||
%>
|
||||
</td>
|
||||
<td class="tunnelPreview">
|
||||
<%
|
||||
if (("httpserver".equals(indexBean.getInternalType(curServer)) || ("httpbidirserver".equals(indexBean.getInternalType(curServer)))) && indexBean.getTunnelStatus(curServer) == IndexBean.RUNNING) {
|
||||
%><label><%=intl._t("Preview")%>:</label>
|
||||
<a class="control" title="Test HTTP server through I2P" href="http://<%=indexBean.getDestHashBase32(curServer)%>" target="_top"><%=intl._t("Preview")%></a>
|
||||
%>
|
||||
<a class="control" title="<%=intl._t("Test HTTP server through I2P")%>" href="http://<%=indexBean.getDestHashBase32(curServer)%>" target="_top"><%=intl._t("Preview")%></a>
|
||||
<%
|
||||
} else if (indexBean.getTunnelStatus(curServer) == IndexBean.RUNNING) {
|
||||
%><span class="text"><%=intl._t("Base32 Address")%>:<br /><%=indexBean.getDestHashBase32(curServer)%></span>
|
||||
%><%=intl._t("Base32 Address")%>:<%=indexBean.getDestHashBase32(curServer)%>
|
||||
<%
|
||||
} else {
|
||||
%><span class="comment"><%=intl._t("No Preview")%></span>
|
||||
%><%=intl._t("No Preview")%>
|
||||
<%
|
||||
}
|
||||
%></div>
|
||||
<div class="statusField rowItem">
|
||||
<label><%=intl._t("Status")%>:</label>
|
||||
%>
|
||||
</td>
|
||||
<td class="tunnelStatus">
|
||||
<%
|
||||
switch (indexBean.getTunnelStatus(curServer)) {
|
||||
case IndexBean.STARTING:
|
||||
%><div class="statusStarting text"><%=intl._t("Starting...")%></div>
|
||||
<a class="control" title="Stop this Tunnel" href="list?nonce=<%=nextNonce%>&action=stop&tunnel=<%=curServer%>"><%=intl._t("Stop")%></a>
|
||||
%><div class="statusStarting text" title="<%=intl._t("Starting...")%>"><%=intl._t("Starting...")%></div>
|
||||
</td>
|
||||
<td class="tunnelControl">
|
||||
<a class="control" title="<%=intl._t("Stop this Tunnel")%>" href="list?nonce=<%=nextNonce%>&action=stop&tunnel=<%=curServer%>"><%=intl._t("Stop")%></a>
|
||||
<%
|
||||
break;
|
||||
case IndexBean.RUNNING:
|
||||
%><div class="statusRunning text"><%=intl._t("Running")%></div>
|
||||
<a class="control" title="Stop this Tunnel" href="list?nonce=<%=nextNonce%>&action=stop&tunnel=<%=curServer%>"><%=intl._t("Stop")%></a>
|
||||
%><div class="statusRunning text" title="<%=intl._t("Running")%>"><%=intl._t("Running")%></div>
|
||||
</td>
|
||||
<td class="tunnelControl">
|
||||
<a class="control" title="<%=intl._t("Stop this Tunnel")%>" href="list?nonce=<%=nextNonce%>&action=stop&tunnel=<%=curServer%>"><%=intl._t("Stop")%></a>
|
||||
<%
|
||||
break;
|
||||
case IndexBean.NOT_RUNNING:
|
||||
%><div class="statusNotRunning text"><%=intl._t("Stopped")%></div>
|
||||
<a class="control" title="Start this Tunnel" href="list?nonce=<%=nextNonce%>&action=start&tunnel=<%=curServer%>"><%=intl._t("Start")%></a>
|
||||
%><div class="statusNotRunning text" title="<%=intl._t("Stopped")%>"><%=intl._t("Stopped")%></div>
|
||||
</td>
|
||||
<td class="tunnelControl">
|
||||
<a class="control" title="<%=intl._t("Start this Tunnel")%>" href="list?nonce=<%=nextNonce%>&action=start&tunnel=<%=curServer%>"><%=intl._t("Start")%></a>
|
||||
<%
|
||||
break;
|
||||
}
|
||||
%></div>
|
||||
%>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tunnelDescription" colspan="6">
|
||||
<span class="tunnelDescriptionLabel"><b>Description:</b></span>
|
||||
<%=indexBean.getTunnelDescription(curServer)%>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="descriptionField rowItem">
|
||||
<label><%=intl._t("Description")%>:</label>
|
||||
<div class="text"><%=indexBean.getTunnelDescription(curServer)%></div>
|
||||
</div>
|
||||
|
||||
<div class="subdivider">
|
||||
<hr />
|
||||
</div>
|
||||
<%
|
||||
}
|
||||
%>
|
||||
<div class="separator">
|
||||
<hr />
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<form id="addNewServerTunnelForm" action="edit">
|
||||
<div class="toolbox">
|
||||
|
||||
<label><%=intl._t("New hidden service")%>:</label>
|
||||
|
||||
<tr>
|
||||
<td class="newTunnel" colspan="6">
|
||||
<form id="addNewServerTunnelForm" action="edit">
|
||||
<b><%=intl._t("New hidden service")%>:</b>
|
||||
<select name="type">
|
||||
<option value="httpserver">HTTP</option>
|
||||
<option value="server"><%=intl._t("Standard")%></option>
|
||||
@@ -198,66 +188,36 @@
|
||||
<option value="streamrserver">Streamr</option>
|
||||
</select>
|
||||
<input class="control" type="submit" value="<%=intl._t("Create")%>" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2><%=intl._t("I2P Client Tunnels")%></h2>
|
||||
|
||||
<table id="clientTunnels">
|
||||
<tr>
|
||||
<th class="tunnelName"><%=intl._t("Name")%></th>
|
||||
<th class="tunnelType"><%=intl._t("Type")%></th>
|
||||
<th class="tunnelInterface"><%=intl._t("Interface")%></th>
|
||||
<th class="tunnelPort"><%=intl._t("Port")%></th>
|
||||
<th class="tunnelStatus"><%=intl._t("Status")%></th>
|
||||
<th class="tunnelControl"><%=intl._t("Control")%></th>
|
||||
</tr>
|
||||
|
||||
<div id="localClientTunnelList" class="panel">
|
||||
<div class="header">
|
||||
|
||||
<h4><%=intl._t("I2P Client Tunnels")%></h4>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="separator"> </div>
|
||||
|
||||
<div class="nameHeaderField rowItem">
|
||||
<label><%=intl._t("Name")%>:</label>
|
||||
</div>
|
||||
<div class="portHeaderField rowItem">
|
||||
<label><%=intl._t("Port")%>:</label>
|
||||
</div>
|
||||
<div class="typeHeaderField rowItem">
|
||||
<label><%=intl._t("Type")%>:</label>
|
||||
</div>
|
||||
<div class="interfaceHeaderField rowItem">
|
||||
<label><%=intl._t("Interface")%>:</label>
|
||||
</div>
|
||||
<div class="statusHeaderField rowItem">
|
||||
<label><%=intl._t("Status")%>:</label>
|
||||
</div>
|
||||
|
||||
<div class="separator">
|
||||
<hr />
|
||||
</div>
|
||||
<%
|
||||
for (int curClient = 0; curClient < indexBean.getTunnelCount(); curClient++) {
|
||||
if (!indexBean.isClient(curClient)) continue;
|
||||
%>
|
||||
<div class="nameField rowItem">
|
||||
<label><%=intl._t("Name")%>:</label>
|
||||
<span class="text"><a href="edit?tunnel=<%=curClient%>" title="Edit Tunnel Settings for <%=indexBean.getTunnelName(curClient)%>"><%=indexBean.getTunnelName(curClient)%></a></span>
|
||||
</div>
|
||||
<div class="portField rowItem">
|
||||
<label><%=intl._t("Port")%>:</label>
|
||||
<span class="text">
|
||||
<%
|
||||
String cPort= indexBean.getClientPort2(curClient);
|
||||
out.write(cPort);
|
||||
if (indexBean.isSSLEnabled(curClient))
|
||||
out.write(" SSL");
|
||||
%>
|
||||
</span>
|
||||
</div>
|
||||
<div class="typeField rowItem">
|
||||
<label><%=intl._t("Type")%>:</label>
|
||||
<span class="text"><%=indexBean.getTunnelType(curClient)%></span>
|
||||
</div>
|
||||
<div class="interfaceField rowItem">
|
||||
<label><%=intl._t("Interface")%>:</label>
|
||||
<span class="text">
|
||||
%>
|
||||
|
||||
|
||||
<tr class="tunnelProperties">
|
||||
<td class="tunnelName">
|
||||
<a href="edit?tunnel=<%=curClient%>" title="<%=intl._t("Edit Tunnel Settings for")%> <%=indexBean.getTunnelName(curClient)%>"><%=indexBean.getTunnelName(curClient)%></a>
|
||||
</td>
|
||||
|
||||
<td class="tunnelType"><%=indexBean.getTunnelType(curClient)%></td>
|
||||
<td class="tunnelInterface">
|
||||
<%
|
||||
/* should only happen for streamr client */
|
||||
String cHost= indexBean.getClientInterface(curClient);
|
||||
@@ -269,45 +229,60 @@
|
||||
out.write(cHost);
|
||||
}
|
||||
%>
|
||||
</span>
|
||||
</div>
|
||||
<div class="statusField rowItem">
|
||||
<label><%=intl._t("Status")%>:</label>
|
||||
</td>
|
||||
<td class="tunnelPort">
|
||||
<%
|
||||
String cPort= indexBean.getClientPort2(curClient);
|
||||
out.write(cPort);
|
||||
if (indexBean.isSSLEnabled(curClient))
|
||||
out.write(" SSL");
|
||||
%>
|
||||
</td>
|
||||
<td class="tunnelStatus">
|
||||
<%
|
||||
switch (indexBean.getTunnelStatus(curClient)) {
|
||||
case IndexBean.STARTING:
|
||||
%><div class="statusStarting text"><%=intl._t("Starting...")%></div>
|
||||
<a class="control" title="Stop this Tunnel" href="list?nonce=<%=nextNonce%>&action=stop&tunnel=<%=curClient%>"><%=intl._t("Stop")%></a>
|
||||
%><div class="statusStarting text" title="<%=intl._t("Starting...")%>"><%=intl._t("Starting...")%></div>
|
||||
</td>
|
||||
<td class="tunnelControl">
|
||||
<a class="control" title="<%=intl._t("Stop this Tunnel")%>" href="list?nonce=<%=nextNonce%>&action=stop&tunnel=<%=curClient%>"><%=intl._t("Stop")%></a>
|
||||
<%
|
||||
break;
|
||||
case IndexBean.STANDBY:
|
||||
%><div class="statusStarting text"><%=intl._t("Standby")%></div>
|
||||
%><div class="statusStarting text" title="<%=intl._t("Standby")%>"><%=intl._t("Standby")%></div>
|
||||
</td>
|
||||
<td class="tunnelControl">
|
||||
<a class="control" title="Stop this Tunnel" href="list?nonce=<%=nextNonce%>&action=stop&tunnel=<%=curClient%>"><%=intl._t("Stop")%></a>
|
||||
<%
|
||||
break;
|
||||
case IndexBean.RUNNING:
|
||||
%><div class="statusRunning text"><%=intl._t("Running")%></div>
|
||||
%><div class="statusRunning text" title="<%=intl._t("Running")%>"><%=intl._t("Running")%></div>
|
||||
</td>
|
||||
<td class="tunnelControl">
|
||||
<a class="control" title="Stop this Tunnel" href="list?nonce=<%=nextNonce%>&action=stop&tunnel=<%=curClient%>"><%=intl._t("Stop")%></a>
|
||||
<%
|
||||
break;
|
||||
case IndexBean.NOT_RUNNING:
|
||||
%><div class="statusNotRunning text"><%=intl._t("Stopped")%></div>
|
||||
<a class="control" title="Start this Tunnel" href="list?nonce=<%=nextNonce%>&action=start&tunnel=<%=curClient%>"><%=intl._t("Start")%></a>
|
||||
%><div class="statusNotRunning text" title="<%=intl._t("Stopped")%>"><%=intl._t("Stopped")%></div>
|
||||
</td>
|
||||
<td class="tunnelControl">
|
||||
<a class="control" title="<%=intl._t("Start this Tunnel")%>" href="list?nonce=<%=nextNonce%>&action=start&tunnel=<%=curClient%>"><%=intl._t("Start")%></a>
|
||||
<%
|
||||
break;
|
||||
}
|
||||
%></div>
|
||||
|
||||
<div class="destinationField rowItem">
|
||||
<label>
|
||||
%>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tunnelDestination" colspan="6">
|
||||
<span class="tunnelDestinationLabel">
|
||||
<% if ("httpclient".equals(indexBean.getInternalType(curClient)) || "connectclient".equals(indexBean.getInternalType(curClient)) ||
|
||||
"sockstunnel".equals(indexBean.getInternalType(curClient)) || "socksirctunnel".equals(indexBean.getInternalType(curClient))) { %>
|
||||
<%=intl._t("Outproxy")%>:
|
||||
<b><%=intl._t("Outproxy")%>:</b>
|
||||
<% } else { %>
|
||||
<%=intl._t("Destination")%>:
|
||||
<b><%=intl._t("Destination")%>:</b>
|
||||
<% } %>
|
||||
</label>
|
||||
<div class="text">
|
||||
</span>
|
||||
<%
|
||||
if (indexBean.getIsUsingOutproxyPlugin(curClient)) {
|
||||
%><%=intl._t("internal plugin")%><%
|
||||
@@ -321,30 +296,22 @@
|
||||
%><i><%=intl._t("none")%></i><%
|
||||
}
|
||||
} %>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<% /* TODO SSL outproxy for httpclient if plugin not present */ %>
|
||||
|
||||
<div class="descriptionField rowItem">
|
||||
<label><%=intl._t("Description")%>:</label>
|
||||
<div class="text"><%=indexBean.getTunnelDescription(curClient)%></div>
|
||||
</div>
|
||||
|
||||
<div class="subdivider">
|
||||
<hr />
|
||||
</div>
|
||||
<tr>
|
||||
<td class="tunnelDescription" colspan="6">
|
||||
<span class="tunnelDescriptionLabel"><b><%=intl._t("Description")%>:</b></span>
|
||||
<%=indexBean.getTunnelDescription(curClient)%>
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
}
|
||||
%>
|
||||
<div class="separator">
|
||||
<hr />
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
%>
|
||||
<tr>
|
||||
<td class="newTunnel" colspan="6">
|
||||
<form id="addNewClientTunnelForm" action="edit">
|
||||
<div class="toolbox">
|
||||
|
||||
<label><%=intl._t("New client tunnel")%>:</label>
|
||||
<b><%=intl._t("New client tunnel")%>:</b>
|
||||
<select name="type">
|
||||
<option value="client"><%=intl._t("Standard")%></option>
|
||||
<option value="httpclient">HTTP/CONNECT</option>
|
||||
@@ -355,16 +322,17 @@
|
||||
<option value="streamrclient">Streamr</option>
|
||||
</select>
|
||||
<input class="control" type="submit" value="<%=intl._t("Create")%>" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<%
|
||||
|
||||
} // isInitialized()
|
||||
|
||||
%>
|
||||
<div id="pageFooter">
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -29,25 +29,22 @@
|
||||
|
||||
<% if (editBean.allowCSS()) {
|
||||
%><link rel="icon" href="<%=editBean.getTheme()%>images/favicon.ico" />
|
||||
<link href="<%=editBean.getTheme()%>default.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<%=editBean.getTheme()%>i2ptunnel.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<%=editBean.getTheme()%>i2ptunnel.css" rel="stylesheet" type="text/css" />
|
||||
<% }
|
||||
%>
|
||||
<style type='text/css'>
|
||||
input.default { width: 1px; height: 1px; visibility: hidden; }
|
||||
</style>
|
||||
</head>
|
||||
<body id="tunnelEditPage">
|
||||
<div id="pageHeader">
|
||||
</div>
|
||||
<body id="tunnelRegistration">
|
||||
|
||||
<%
|
||||
|
||||
if (editBean.isInitialized()) {
|
||||
|
||||
%>
|
||||
<form method="post" enctype="multipart/form-data" action="register" accept-charset="UTF-8">
|
||||
<div id="tunnelEditPanel" class="panel">
|
||||
<div class="header">
|
||||
<div class="panel" id="registration">
|
||||
<%
|
||||
String tunnelTypeName;
|
||||
String tunnelType;
|
||||
@@ -55,11 +52,11 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
|
||||
if (curTunnel >= 0) {
|
||||
tunnelTypeName = editBean.getTunnelType(curTunnel);
|
||||
tunnelType = editBean.getInternalType(curTunnel);
|
||||
%><h4><%=intl._t("Registration Helper")%></h4><%
|
||||
%><h2><%=intl._t("Registration Helper")%> (<%=editBean.getTunnelName(curTunnel)%>)</h2><%
|
||||
} else {
|
||||
tunnelTypeName = "new";
|
||||
tunnelType = "new";
|
||||
%><h4>Fail</h4><p>Tunnel not found</p><%
|
||||
%><h2>Fail</h2><p>Tunnel not found</p><%
|
||||
}
|
||||
String b64 = editBean.getDestinationBase64(curTunnel);
|
||||
String name = editBean.getSpoofedHost(curTunnel);
|
||||
@@ -70,85 +67,93 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
|
||||
<input type="hidden" name="nonce" value="<%=net.i2p.i2ptunnel.web.IndexBean.getNextNonce()%>" />
|
||||
<input type="hidden" name="type" value="<%=tunnelType%>" />
|
||||
<input type="submit" class="default" name="action" value="Save changes" />
|
||||
</div>
|
||||
<%
|
||||
if (!"new".equals(tunnelType)) {
|
||||
%>
|
||||
<span class="comment">
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="infohelp">
|
||||
<%=intl._t("Please be sure to select, copy, and paste the entire contents of the appropriate authentication data into the form of your favorite registration site")%>
|
||||
</span>
|
||||
<div class="separator">
|
||||
<hr />
|
||||
</div>
|
||||
<div id="nameField" class="rowItem">
|
||||
<label for="name" accesskey="N">
|
||||
<%=intl._t("Name")%>
|
||||
</label>
|
||||
<span class="text"><%=editBean.getTunnelName(curTunnel)%></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<b><%=intl._t("Tunnel Name")%>:</b> <%=editBean.getTunnelName(curTunnel)%>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
if (("httpserver".equals(tunnelType)) || ("httpbidirserver".equals(tunnelType))) {
|
||||
%><div id="websiteField" class="rowItem">
|
||||
<label for="spoofedHost" accesskey="W">
|
||||
<%=intl._t("Website name")%>
|
||||
</label>
|
||||
<span class="text"><%=editBean.getSpoofedHost(curTunnel)%></span>
|
||||
</div>
|
||||
%>
|
||||
<tr><td><b><%=intl._t("Website Name")%>:</b> <%=editBean.getSpoofedHost(curTunnel)%></td></tr>
|
||||
<%
|
||||
}
|
||||
%>
|
||||
<div id="destinationField" class="rowItem">
|
||||
<label for="localDestination" accesskey="L">
|
||||
<%=intl._t("Local destination")%>
|
||||
</label>
|
||||
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Read Only: Local Destination (if known)" wrap="off" spellcheck="false"><%=editBean.getDestinationBase64(curTunnel)%></textarea>
|
||||
</div>
|
||||
<div class="subdivider">
|
||||
<hr />
|
||||
</div>
|
||||
|
||||
<tr>
|
||||
<th>
|
||||
<b><%=intl._t("Local Destination")%></b>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Read Only: Local Destination (if known)" wrap="off" spellcheck="false"><%=editBean.getDestinationBase64(curTunnel)%></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
if (b64 == null || b64.length() < 516) {
|
||||
%><%=intl._t("Local destination is not available. Start the tunnel.")%><%
|
||||
%><tr><td class="infohelp"><%=intl._t("Local destination is not available. Start the tunnel.")%></td></tr><%
|
||||
} else if (name == null || name.equals("") || name.contains(" ") || !name.endsWith(".i2p")) {
|
||||
if (("httpserver".equals(tunnelType)) || ("httpbidirserver".equals(tunnelType))) {
|
||||
%><%=intl._t("To enable registration verification, edit tunnel and set name (or website name) to a valid host name ending in '.i2p'")%><%
|
||||
%><tr><td class="infohelp"><%=intl._t("To enable registration verification, edit tunnel and set name (or website name) to a valid host name ending in '.i2p'")%></td></tr><%
|
||||
} else {
|
||||
%><%=intl._t("To enable registration verification, edit tunnel and set name to a valid host name ending in '.i2p'")%><%
|
||||
%><tr><td class="infohelp"><%=intl._t("To enable registration verification, edit tunnel and set name to a valid host name ending in '.i2p'")%></td></tr><%
|
||||
}
|
||||
} else {
|
||||
SigningPrivateKey spk = editBean.getSigningPrivateKey(curTunnel);
|
||||
if (spk == null) {
|
||||
%><%=intl._t("Destination signing key is not available. Start the tunnel.")%><%
|
||||
%><tr><td class="infohelp"><%=intl._t("Destination signing key is not available. Start the tunnel.")%></td></tr><%
|
||||
} else {
|
||||
valid = true;
|
||||
OrderedProperties props = new OrderedProperties();
|
||||
HostTxtEntry he = new HostTxtEntry(name, b64, props);
|
||||
he.sign(spk);
|
||||
%><div id="sigField" class="rowItem">
|
||||
<label for="signature">
|
||||
<%=intl._t("Authentication for adding host")%>
|
||||
</label>
|
||||
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Copy and paste this to the registration site" wrap="off" spellcheck="false"><% he.write(out); %></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div id="tunnelAdvancedNetworking" class="panel">
|
||||
<div class="header">
|
||||
<h4><%=intl._t("Advanced authentication strings")%></h4>
|
||||
</div>
|
||||
%>
|
||||
|
||||
<tr>
|
||||
<th>
|
||||
<%=intl._t("Authentication for adding host {0}", name)%>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" title="Copy and paste this to the registration site" wrap="off" spellcheck="false"><% he.write(out); %></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h3><%=intl._t("Advanced authentication strings")%></h3>
|
||||
|
||||
<%
|
||||
props.remove(HostTxtEntry.PROP_SIG);
|
||||
props.setProperty(HostTxtEntry.PROP_ACTION, HostTxtEntry.ACTION_REMOVE);
|
||||
he.signRemove(spk);
|
||||
%><div id="sigField" class="rowItem">
|
||||
<label for="signature">
|
||||
<%=intl._t("Authentication for removing host")%>
|
||||
</label>
|
||||
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Copy and paste this to the registration site" wrap="off" spellcheck="false"><% he.writeRemove(out); %></textarea>
|
||||
<span class="comment"><%=intl._t("This will remove the entry for {0}", name)%></span>
|
||||
</div>
|
||||
<div class="separator">
|
||||
<hr />
|
||||
</div>
|
||||
%>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
<%=intl._t("Authentication for removing host {0}", name)%>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" title="Copy and paste this to the registration site" wrap="off" spellcheck="false"><% he.writeRemove(out); %></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
String oldname = wrequest.getParameter("oldname");
|
||||
String olddestfile = wrequest.getFilename("olddestfile");
|
||||
@@ -171,106 +176,154 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
|
||||
}
|
||||
}
|
||||
props.remove(HostTxtEntry.PROP_SIG);
|
||||
%><div id="sigField" class="rowItem">
|
||||
<label for="signature">
|
||||
%>
|
||||
<tr>
|
||||
<th>
|
||||
<%=intl._t("Authentication for changing name")%>
|
||||
</label>
|
||||
</th>
|
||||
</tr>
|
||||
<%
|
||||
if (oldname != null && oldname.length() > 0 && !oldname.equals(name)) {
|
||||
props.setProperty(HostTxtEntry.PROP_ACTION, HostTxtEntry.ACTION_CHANGENAME);
|
||||
props.setProperty(HostTxtEntry.PROP_OLDNAME, oldname);
|
||||
he.sign(spk);
|
||||
%><textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Copy and paste this to the registration site" wrap="off" spellcheck="false"><% he.write(out); %></textarea>
|
||||
<span class="comment"><%=intl._t("This will change the name from {0} to {1}, using the same destination", oldname, name)%></span>
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" title="Copy and paste this to the registration site" wrap="off" spellcheck="false"><% he.write(out); %></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="infohelp">
|
||||
<%=intl._t("This will change the name from {0} to {1}, using the same destination", oldname, name)%>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
} else {
|
||||
%><span class="comment"><%=intl._t("This tunnel must be configured with the new host name.")%></span>
|
||||
<span class="comment"><%=intl._t("Enter old host name below.")%></span>
|
||||
%><tr><td class="infohelp"><%=intl._t("This tunnel must be configured with the new host name.")%>
|
||||
<%=intl._t("Enter old hostname below.")%></td></tr>
|
||||
<%
|
||||
}
|
||||
%></div>
|
||||
<div class="separator">
|
||||
<hr />
|
||||
</div>
|
||||
%>
|
||||
|
||||
<%
|
||||
props.remove(HostTxtEntry.PROP_SIG);
|
||||
%><div id="sigField" class="rowItem">
|
||||
<label for="signature">
|
||||
%>
|
||||
<tr>
|
||||
<th>
|
||||
<%=intl._t("Authentication for adding alias")%>
|
||||
</label>
|
||||
</th>
|
||||
</tr>
|
||||
<%
|
||||
if (oldname != null && oldname.length() > 0 && !oldname.equals(name)) {
|
||||
props.setProperty(HostTxtEntry.PROP_ACTION, HostTxtEntry.ACTION_ADDNAME);
|
||||
props.setProperty(HostTxtEntry.PROP_OLDNAME, oldname);
|
||||
he.sign(spk);
|
||||
%><textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Copy and paste this to the registration site" wrap="off" spellcheck="false"><% he.write(out); %></textarea>
|
||||
<span class="comment"><%=intl._t("This will add an alias {0} for {1}, using the same destination", name, oldname)%></span>
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" title="Copy and paste this to the registration site" wrap="off" spellcheck="false"><% he.write(out); %></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="infohelp">
|
||||
<%=intl._t("This will add an alias {0} for {1}, using the same destination", name, oldname)%>
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} else {
|
||||
%><span class="comment"><%=intl._t("This tunnel must be configured with the new host name.")%></span>
|
||||
<span class="comment"><%=intl._t("Enter old host name below.")%></span>
|
||||
%><tr> <td class="infohelp"><%=intl._t("This tunnel must be configured with the new host name.")%>
|
||||
<%=intl._t("Enter old hostname below.")%></td></tr>
|
||||
<%
|
||||
}
|
||||
%></div>
|
||||
<div class="separator">
|
||||
<hr />
|
||||
</div>
|
||||
%>
|
||||
|
||||
<%
|
||||
props.remove(HostTxtEntry.PROP_SIG);
|
||||
%><div id="sigField" class="rowItem">
|
||||
<label for="signature">
|
||||
%>
|
||||
|
||||
<tr>
|
||||
<th>
|
||||
<%=intl._t("Authentication for changing destination")%>
|
||||
</label>
|
||||
</th>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
if (spk2 != null) {
|
||||
props.setProperty(HostTxtEntry.PROP_ACTION, HostTxtEntry.ACTION_CHANGEDEST);
|
||||
props.setProperty(HostTxtEntry.PROP_OLDDEST, olddest);
|
||||
he.signInner(spk2);
|
||||
he.sign(spk);
|
||||
%><textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Copy and paste this to the registration site" wrap="off" spellcheck="false"><% he.write(out); %></textarea>
|
||||
<span class="comment"><%=intl._t("This will change the destination for {0}", name)%></span>
|
||||
%>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" title="Copy and paste this to the registration site" wrap="off" spellcheck="false"><% he.write(out); %></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="infohelp">
|
||||
<%=intl._t("This will change the destination for {0}", name)%>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
} else {
|
||||
%><span class="comment"><%=intl._t("This tunnel must be configured with the new destination.")%></span>
|
||||
<span class="comment"><%=intl._t("Enter old destination below.")%></span>
|
||||
%><tr><td class="infohelp"><%=intl._t("This tunnel must be configured with the new destination.")%>
|
||||
<%=intl._t("Enter old destination below.")%></td></tr>
|
||||
<%
|
||||
}
|
||||
%></div>
|
||||
<div class="separator">
|
||||
<hr />
|
||||
</div>
|
||||
%>
|
||||
|
||||
<%
|
||||
props.remove(HostTxtEntry.PROP_SIG);
|
||||
props.remove(HostTxtEntry.PROP_OLDSIG);
|
||||
%><div id="sigField" class="rowItem">
|
||||
<label for="signature">
|
||||
%>
|
||||
|
||||
<tr>
|
||||
<th>
|
||||
<%=intl._t("Authentication for adding alternate destination")%>
|
||||
</label>
|
||||
</th>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
if (spk2 != null) {
|
||||
props.setProperty(HostTxtEntry.PROP_ACTION, HostTxtEntry.ACTION_ADDDEST);
|
||||
props.setProperty(HostTxtEntry.PROP_OLDDEST, olddest);
|
||||
he.signInner(spk2);
|
||||
he.sign(spk);
|
||||
%><textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Copy and paste this to the registration site" wrap="off" spellcheck="false"><% he.write(out); %></textarea>
|
||||
<span class="comment"><%=intl._t("This will add an alternate destination for {0}", name)%></span>
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" title="Copy and paste this to the registration site" wrap="off" spellcheck="false"><% he.write(out); %></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="infohelp">
|
||||
<%=intl._t("This will add an alternate destination for {0}", name)%>
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} else {
|
||||
%><span class="comment"><%=intl._t("This tunnel must be configured with the new destination.")%></span>
|
||||
<span class="comment"><%=intl._t("Enter old destination below.")%></span>
|
||||
%><tr><td class="infohelp"><%=intl._t("This tunnel must be configured with the new destination.")%>
|
||||
<%=intl._t("Enter old destination below.")%></td></tr>
|
||||
<%
|
||||
}
|
||||
%></div>
|
||||
<div class="separator">
|
||||
<hr />
|
||||
</div>
|
||||
%>
|
||||
|
||||
<%
|
||||
|
||||
|
||||
props.remove(HostTxtEntry.PROP_SIG);
|
||||
props.remove(HostTxtEntry.PROP_OLDSIG);
|
||||
%><div id="sigField" class="rowItem">
|
||||
<label for="signature">
|
||||
%>
|
||||
|
||||
<tr>
|
||||
<th>
|
||||
<%=intl._t("Authentication for adding subdomain")%>
|
||||
</label>
|
||||
</th>
|
||||
</tr>
|
||||
<%
|
||||
if (oldname != null && oldname.length() > 0 && !oldname.equals(name) && spk2 != null) {
|
||||
props.setProperty(HostTxtEntry.PROP_ACTION, HostTxtEntry.ACTION_ADDSUBDOMAIN);
|
||||
@@ -278,73 +331,98 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
|
||||
props.setProperty(HostTxtEntry.PROP_OLDDEST, olddest);
|
||||
he.signInner(spk2);
|
||||
he.sign(spk);
|
||||
%><textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Copy and paste this to the registration site" wrap="off" spellcheck="false"><% he.write(out); %></textarea>
|
||||
<span class="comment"><%=intl._t("This will add a subdomain {0} of {1}, with a different destination", name, oldname)%></span>
|
||||
%>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" title="Copy and paste this to the registration site" wrap="off" spellcheck="false"><% he.write(out); %></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="infohelp">
|
||||
<%=intl._t("This will add a subdomain {0} of {1}, with a different destination", name, oldname)%>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
} else {
|
||||
%><span class="comment"><%=intl._t("This tunnel must be configured with the new subdomain and destination.")%></span>
|
||||
<span class="comment"><%=intl._t("Enter higher-level domain and destination below.")%></span>
|
||||
%>
|
||||
<tr>
|
||||
<td class="infohelp">
|
||||
<%=intl._t("This tunnel must be configured with the new subdomain and destination.")%>
|
||||
<%=intl._t("Enter higher-level domain and destination below.")%>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
}
|
||||
%></div>
|
||||
%>
|
||||
|
||||
<div class="footer">
|
||||
</div>
|
||||
<%
|
||||
} // spk != null
|
||||
} // valid b64 and name
|
||||
} // !"new".equals(tunnelType)
|
||||
if (!valid && curTunnel >= 0) {
|
||||
%><a href="edit?tunnel=<%=curTunnel%>"><%=intl._t("Go back and edit the tunnel")%></a><%
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="edit?tunnel=<%=curTunnel%>"><%=intl._t("Go back and edit the tunnel")%></a>
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
}
|
||||
%>
|
||||
</div>
|
||||
|
||||
|
||||
<%
|
||||
if (valid) {
|
||||
%>
|
||||
<div id="globalOperationsPanel" class="panel">
|
||||
<div class="header">
|
||||
<h4><%=intl._t("Specify old name and destination")%></h4>
|
||||
</div>
|
||||
<span class="comment">
|
||||
<%=intl._t("This is only required for advanced authentication.")%>
|
||||
<%=intl._t("See above for required items.")%>
|
||||
</span>
|
||||
|
||||
<tr>
|
||||
<th>
|
||||
<%=intl._t("Specify old name and destination")%>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="infohelp">
|
||||
<%=intl._t("This is only required for advanced authentication.")%>
|
||||
<%=intl._t("See above for required items.")%>
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
String oldname = wrequest.getParameter("oldname");
|
||||
if (oldname == null) oldname = "";
|
||||
%><div id="sigField" class="rowItem">
|
||||
<label for="signature">
|
||||
<%=intl._t("Old Host Name")%>
|
||||
</label>
|
||||
<input type="text" size="30" maxlength="50" name="oldname" id="name" title="Old Host Name" value="<%=oldname%>" class="freetext" />
|
||||
</div>
|
||||
<div id="sigField" class="rowItem">
|
||||
<label for="signature">
|
||||
<%=intl._t("Private Key File for old Destination")%>
|
||||
</label>
|
||||
<input type="file" size="50%" name="olddestfile" id="name" value="" />
|
||||
</div>
|
||||
<div class="footer">
|
||||
<div class="toolbox">
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<b><%=intl._t("Old Hostname")%>:</b>
|
||||
<input type="text" size="30" maxlength="50" name="oldname" id="oldName" title="Old Hostname" value="<%=oldname%>" class="freetext" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<b><%=intl._t("Private Key File for old Destination")%>:</b>
|
||||
<input type="file" name="olddestfile" id="oldDestFile" value="" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="buttons">
|
||||
<input type="hidden" value="true" name="removeConfirm" />
|
||||
<button id="controlCancel" class="control" type="submit" name="action" value="" title="Cancel"><%=intl._t("Cancel")%></button>
|
||||
<button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="authenticate" title="Generate Authentication"><%=intl._t("Generate")%></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
} // valid
|
||||
%>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
<div id="pageFooter">
|
||||
</div>
|
||||
<%
|
||||
|
||||
} else {
|
||||
%>Tunnels are not initialized yet, please reload in two minutes.<%
|
||||
%><div id="notReady"><%=intl._t("Tunnels are not initialized yet, please reload in two minutes.")%></div><%
|
||||
} // isInitialized()
|
||||
|
||||
%>
|
||||
|
@@ -62,48 +62,45 @@
|
||||
|
||||
<% if (editBean.allowCSS()) {
|
||||
%><link rel="icon" href="<%=editBean.getTheme()%>images/favicon.ico" />
|
||||
<link href="<%=editBean.getTheme()%>default.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<%=editBean.getTheme()%>i2ptunnel.css" rel="stylesheet" type="text/css" />
|
||||
<% }
|
||||
%>
|
||||
</head>
|
||||
<body id="tunnelWizardPage">
|
||||
<div id="pageHeader">
|
||||
</div>
|
||||
|
||||
<form method="post" action="<%=(curPage == 7 ? "list" : "wizard") %>">
|
||||
|
||||
<div id="wizardPanel" class="panel">
|
||||
<div class="header">
|
||||
|
||||
<%
|
||||
if (curPage == 1) {
|
||||
%><h4><%=intl._t("Server or client tunnel?")%></h4><%
|
||||
%><h2><%=intl._t("Server or client tunnel?")%></h2><%
|
||||
} else if (curPage == 2) {
|
||||
%><h4><%=intl._t("Tunnel type")%></h4><%
|
||||
%><h2><%=intl._t("Tunnel type")%></h2><%
|
||||
} else if (curPage == 3) {
|
||||
%><h4><%=intl._t("Tunnel name and description")%></h4><%
|
||||
%><h2><%=intl._t("Tunnel name and description")%></h2><%
|
||||
} else if (curPage == 4 && tunnelIsClient) {
|
||||
%><h4><%=intl._t("Tunnel destination")%></h4><%
|
||||
%><h2><%=intl._t("Tunnel destination")%></h2><%
|
||||
} else if (curPage == 5) {
|
||||
%><h4><%=intl._t("Binding address and port")%></h4><%
|
||||
%><h2><%=intl._t("Binding address and port")%></h2><%
|
||||
} else if (curPage == 6) {
|
||||
%><h4><%=intl._t("Tunnel auto-start")%></h4><%
|
||||
%><h2><%=intl._t("Tunnel auto-start")%></h2><%
|
||||
} else if (curPage == 7) {
|
||||
%><h4><%=intl._t("Wizard completed")%></h4><%
|
||||
%><h2><%=intl._t("Wizard completed")%></h2><%
|
||||
} %>
|
||||
<input type="hidden" name="page" value="<%=curPage%>" />
|
||||
<input type="hidden" name="tunnel" value="null" />
|
||||
<input type="hidden" name="nonce" value="<%=net.i2p.i2ptunnel.web.IndexBean.getNextNonce()%>" />
|
||||
</div>
|
||||
|
||||
<div class="separator">
|
||||
<hr />
|
||||
</div>
|
||||
|
||||
<table>
|
||||
<% /* Page 1 - Whether to make a client or server tunnel */
|
||||
|
||||
if (curPage == 1) {
|
||||
%><p>
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<%=intl._t("This wizard will take you through the various options available for creating tunnels in I2P.")%>
|
||||
</p>
|
||||
<p>
|
||||
@@ -111,12 +108,22 @@
|
||||
<%=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.")%>
|
||||
<%=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.")%>
|
||||
</p>
|
||||
<div id="typeField" class="rowItem">
|
||||
<label><%=intl._t("Server Tunnel")%></label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="options">
|
||||
<span class="multiOption" id="isServer">
|
||||
<input value="false" type="radio" id="baseType" name="isClient" class="tickbox" />
|
||||
<label><%=intl._t("Client Tunnel")%></label>
|
||||
<%=intl._t("Server Tunnel")%>
|
||||
</span>
|
||||
<span class="multiOption" id="isClient">
|
||||
<input value="true" type="radio" id="baseType" name="isClient" class="tickbox" checked="checked" />
|
||||
</div><%
|
||||
<%=intl._t("Client Tunnel")%>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
} else {
|
||||
%><input type="hidden" name="isClient" value="<%=tunnelIsClient%>" /><%
|
||||
} /* curPage 1 */
|
||||
@@ -126,10 +133,18 @@
|
||||
<% /* Page 2 - Tunnel type */
|
||||
|
||||
if (curPage == 2) {
|
||||
%><p>
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<%=intl._t("There are several types of tunnels to choose from:")%>
|
||||
</p>
|
||||
<table><%
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="wizardTable">
|
||||
<table id="wizardTunnelTypes">
|
||||
<%
|
||||
if (tunnelIsClient) {
|
||||
%>
|
||||
<tr><td><%=intl._t("Standard")%></td><td>
|
||||
@@ -188,8 +203,12 @@
|
||||
</td></tr><%
|
||||
}
|
||||
%>
|
||||
</table>
|
||||
<div id="typeField" class="rowItem">
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<%=intl._t("Select tunnel type")%>:
|
||||
</td>
|
||||
<td>
|
||||
<%
|
||||
if (tunnelIsClient) {
|
||||
%><select name="type">
|
||||
@@ -210,7 +229,12 @@
|
||||
<option value="streamrserver">Streamr</option>
|
||||
</select><%
|
||||
} /* tunnelIsClient */ %>
|
||||
</div><%
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} else {
|
||||
%><input type="hidden" name="type" value="<%=tunnelType%>" /><%
|
||||
} /* curPage 2 */
|
||||
@@ -220,22 +244,28 @@
|
||||
<% /* Page 3 - Name and description */
|
||||
|
||||
if (curPage == 3) {
|
||||
%><p>
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<%=intl._t("Choose a name and description for your tunnel.")%>
|
||||
<%=intl._t("These can be anything you want - they are just for ease of identifying the tunnel in the routerconsole.")%>
|
||||
</p>
|
||||
<div id="nameField" class="rowItem">
|
||||
<label for="name" accesskey="N">
|
||||
<%=intl._t("Name")%>:(<span class="accessKey">N</span>)
|
||||
</label>
|
||||
<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" />
|
||||
</div>
|
||||
<div id="descriptionField" class="rowItem">
|
||||
<label for="description" accesskey="e">
|
||||
<%=intl._t("Description")%>:(<span class="accessKey">E</span>)
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tag"><%=intl._t("Name")%>:</span>
|
||||
<input type="text" size="30" maxlength="50" name="name" id="name" placeholder="New Tunnel" title="Tunnel Name" value="<%=(!"null".equals(request.getParameter("name")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("name")) : "" ) %>" class="freetext" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tag"><%=intl._t("Description")%>:</span>
|
||||
<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" />
|
||||
</div><%
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} else {
|
||||
%><input type="hidden" name="name" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("name"))%>" />
|
||||
<input type="hidden" name="nofilter_description" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_description"))%>" /><%
|
||||
@@ -248,36 +278,47 @@
|
||||
if (tunnelIsClient) {
|
||||
if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) {
|
||||
if (curPage == 4) {
|
||||
%><p>
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<%=intl._t("If you know of any outproxies for this type of tunnel (either HTTP or SOCKS), fill them in below.")%>
|
||||
<%=intl._t("Separate multiple proxies with commas.")%>
|
||||
</p>
|
||||
<div id="destinationField" class="rowItem">
|
||||
<label for="proxyList" accesskey="x">
|
||||
<%=intl._t("Outproxies")%>(<span class="accessKey">x</span>):
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tag"><%=intl._t("Outproxies")%>:</span>
|
||||
<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" />
|
||||
</div><%
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} else {
|
||||
%><input type="hidden" name="proxyList" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("proxyList"))%>" /><%
|
||||
} /* curPage 4 */
|
||||
} else if ("client".equals(tunnelType) || "ircclient".equals(tunnelType) || "streamrclient".equals(tunnelType)) {
|
||||
if (curPage == 4) {
|
||||
%><p>
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<%=intl._t("Type in the I2P destination of the service that this client tunnel should connect to.")%>
|
||||
<%=intl._t("This could be the full base 64 destination key, or an I2P URL from your address book.")%>
|
||||
</p>
|
||||
<div id="destinationField" class="rowItem">
|
||||
<label for="targetDestination" accesskey="T">
|
||||
<%=intl._t("Tunnel Destination")%>(<span class="accessKey">T</span>):
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tag"><%=intl._t("Tunnel Destination")%>:</span>
|
||||
<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" />
|
||||
<span class="comment">(<%=intl._t("name, name:port, or destination")%>
|
||||
(<%=intl._t("name, name:port, or destination")%>
|
||||
<% if ("streamrclient".equals(tunnelType)) { /* deferred resolution unimplemented in streamr client */ %>
|
||||
- <%=intl._t("b32 not recommended")%>
|
||||
<% } %> )
|
||||
</span>
|
||||
</div><%
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} else {
|
||||
%><input type="hidden" name="targetDestination" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetDestination"))%>" /><%
|
||||
} /* curPage 4 */
|
||||
@@ -290,16 +331,22 @@
|
||||
|
||||
if ((tunnelIsClient && "streamrclient".equals(tunnelType)) || (!tunnelIsClient && !"streamrserver".equals(tunnelType))) {
|
||||
if (curPage == 5) {
|
||||
%><p>
|
||||
<%=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.")%><%
|
||||
//XXX TODO<%=intl._t("For some reason streamrclient also uses this.")%>
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<%=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.")%>
|
||||
<% //TODO For some reason streamrclient also uses this. %>
|
||||
</p>
|
||||
<div id="hostField" class="rowItem">
|
||||
<label for="targetHost" accesskey="H">
|
||||
<%=intl._t("Host")%>(<span class="accessKey">H</span>):
|
||||
</label>
|
||||
<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" />
|
||||
</div><%
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tag"><%=intl._t("Host")%>:</span>
|
||||
<input type="text" size="20" id="targetHost" name="targetHost" title="Target Hostname or IP" placeholder="127.0.0.1" value="<%=(!"null".equals(request.getParameter("targetHost")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost")) : "127.0.0.1" ) %>" class="freetext" />
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} else {
|
||||
%><input type="hidden" name="targetHost" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost"))%>" /><%
|
||||
} /* curPage 5 */
|
||||
@@ -307,15 +354,21 @@
|
||||
<%
|
||||
if (!tunnelIsClient) {
|
||||
if (curPage == 5) {
|
||||
%><p>
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<%=intl._t("This is the port that the service is accepting connections on.")%>
|
||||
</p>
|
||||
<div id="portField" class="rowItem">
|
||||
<label for="targetPort" accesskey="P">
|
||||
<%=intl._t("Port")%>(<span class="accessKey">P</span>):
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tag"><%=intl._t("Port")%>:</span>
|
||||
<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" />
|
||||
</div><%
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} else {
|
||||
%><input type="hidden" name="targetPort" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetPort"))%>" /><%
|
||||
} /* curPage 5 */
|
||||
@@ -323,16 +376,22 @@
|
||||
<%
|
||||
if (tunnelIsClient || "httpbidirserver".equals(tunnelType)) {
|
||||
if (curPage == 5) {
|
||||
%><p>
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<%=intl._t("This is the port that the client tunnel will be accessed from locally.")%>
|
||||
<%=intl._t("This is also the client port for the HTTPBidir server tunnel.")%>
|
||||
</p>
|
||||
<div id="portField" class="rowItem">
|
||||
<label for="port" accesskey="P">
|
||||
<span class="accessKey">P</span>ort:
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tag"><%=intl._t("Port")%>:</span>
|
||||
<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" />
|
||||
</div><%
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} else {
|
||||
%><input type="hidden" name="port" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("port"))%>" /><%
|
||||
} /* curPage 5 */
|
||||
@@ -340,16 +399,20 @@
|
||||
<%
|
||||
if ((tunnelIsClient && !"streamrclient".equals(tunnelType)) || "httpbidirserver".equals(tunnelType) || "streamrserver".equals(tunnelType)) {
|
||||
if (curPage == 5) {
|
||||
%><p>
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<%=intl._t("How do you want this tunnel to be accessed? By just this machine, your entire subnet, or external internet?")%>
|
||||
<%=intl._t("You will most likely want to just allow 127.0.0.1")%><%
|
||||
//XXX TODO<%=intl._t("Note that it is relevant to most Client tunnels, and httpbidirserver and streamrserver tunnels.")%><%
|
||||
//XXX TODO<%=intl._t("So the wording may need to change slightly for the client vs. server tunnels.")%>
|
||||
//TODO Note that it is relevant to most Client tunnels, and httpbidirserver and streamrserver tunnels.
|
||||
//TODO So the wording may need to change slightly for the client vs. server tunnels. %>
|
||||
</p>
|
||||
<div id="reachField" class="rowItem">
|
||||
<label for="reachableBy" accesskey="r">
|
||||
<%=intl._t("Reachable by")%>(<span class="accessKey">R</span>):
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tag"><%=intl._t("Reachable by")%>:</span>
|
||||
<select id="reachableBy" name="reachableBy" title="IP for Client Access" class="selectbox">
|
||||
<%
|
||||
String clientInterface = request.getParameter("reachableBy");
|
||||
@@ -368,7 +431,9 @@
|
||||
}
|
||||
%>
|
||||
</select>
|
||||
</div><%
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} else {
|
||||
%><input type="hidden" name="reachableBy" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("reachableBy"))%>" /><%
|
||||
} /* curPage 5 */
|
||||
@@ -379,17 +444,22 @@
|
||||
<% /* Page 6 - Automatic start */
|
||||
|
||||
if (curPage == 6) {
|
||||
%><p>
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<%=intl._t("The I2P router can automatically start this tunnel for you when the router is started.")%>
|
||||
<%=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.")%>
|
||||
</p>
|
||||
<div id="startupField" class="rowItem">
|
||||
<label for="startOnLoad" accesskey="a">
|
||||
<%=intl._t("Auto Start")%>(<span class="accessKey">A</span>):
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="options">
|
||||
<input value="1" type="checkbox" id="startOnLoad" name="startOnLoad" title="Start Tunnel Automatically"<%=("1".equals(request.getParameter("startOnLoad")) ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<span class="comment"><%=intl._t("(Check the Box for 'YES')")%></span>
|
||||
</div><%
|
||||
<%=intl._t("Automatically start tunnel when router starts")%>
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} else {
|
||||
if ("1".equals(request.getParameter("startOnLoad"))) {
|
||||
%><input type="hidden" name="startOnLoad" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("startOnLoad"))%>" /><%
|
||||
@@ -401,7 +471,10 @@
|
||||
<% /* Page 7 - Wizard complete */
|
||||
|
||||
if (curPage == 7) {
|
||||
%><p>
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<%=intl._t("The wizard has now collected enough information to create your tunnel.")%>
|
||||
<%=intl._t("Upon clicking the Save button below, the wizard will set up the tunnel, and take you back to the main I2PTunnel page.")%>
|
||||
<%
|
||||
@@ -416,7 +489,11 @@
|
||||
<p>
|
||||
<%=intl._t("Below is a summary of the options you chose:")%>
|
||||
</p>
|
||||
<table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="wizardTable">
|
||||
<table id="wizardSummary">
|
||||
<tr><td><%=intl._t("Server or client tunnel?")%></td><td>
|
||||
<%=(tunnelIsClient ? "Client" : "Server")%>
|
||||
</td></tr>
|
||||
@@ -439,10 +516,11 @@
|
||||
Streamr<%
|
||||
} %>
|
||||
</td></tr>
|
||||
<tr><td><%=intl._t("Tunnel name and description")%></td><td>
|
||||
<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("name"))%><br />
|
||||
<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_description"))%>
|
||||
</td></tr><%
|
||||
<tr><td><%=intl._t("Tunnel name")%></td>
|
||||
<td><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("name"))%></td></tr>
|
||||
<tr><td><%=intl._t("Tunnel description")%></td>
|
||||
<td><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_description"))%></td></tr>
|
||||
<%
|
||||
if (tunnelIsClient) { %>
|
||||
<tr><td><%=intl._t("Tunnel destination")%></td><td><%
|
||||
if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) { %>
|
||||
@@ -452,20 +530,20 @@
|
||||
} %>
|
||||
</td></tr><%
|
||||
} %>
|
||||
<tr><td><%=intl._t("Binding address and port")%></td><td><%
|
||||
<%
|
||||
if ((tunnelIsClient && "streamrclient".equals(tunnelType)) || (!tunnelIsClient && !"streamrserver".equals(tunnelType))) { %>
|
||||
<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost"))%><br /><%
|
||||
<tr><td><%=intl._t("Binding address")%></td><td>
|
||||
<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost"))%></td></tr><%
|
||||
}
|
||||
if (!tunnelIsClient) { %>
|
||||
<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetPort"))%><br /><%
|
||||
<tr><td><%=intl._t("Tunnel port")%></td><td><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetPort"))%></td></tr><%
|
||||
}
|
||||
if (tunnelIsClient || "httpbidirserver".equals(tunnelType)) { %>
|
||||
<br /><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("port"))%><%
|
||||
<tr><td><%=intl._t("Port")%></td><td><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("port"))%></td></tr><%
|
||||
}
|
||||
if ((tunnelIsClient && !"streamrclient".equals(tunnelType)) || "httpbidirserver".equals(tunnelType) || "streamrserver".equals(tunnelType)) { %>
|
||||
<br /><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("reachableBy"))%><%
|
||||
<tr><td><%=intl._t("Reachable by")%></td><td><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("reachableBy"))%></td></tr><%
|
||||
} %>
|
||||
</td></tr>
|
||||
<tr><td><%=intl._t("Tunnel auto-start")%></td><td><%
|
||||
if ("1".equals(request.getParameter("startOnLoad"))) { %>
|
||||
Yes<%
|
||||
@@ -474,6 +552,10 @@
|
||||
} %>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="infohelp">
|
||||
<p>
|
||||
<%=intl._t("Alongside these basic settings, there are a number of advanced options for tunnel configuration.")%>
|
||||
<%=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.")%>
|
||||
@@ -523,35 +605,33 @@ http://stats.i2p/cgi-bin/jump.cgi?a=" /><%
|
||||
<input type="hidden" name="totalHour" value="0" />
|
||||
<input type="hidden" name="totalDay" value="0" />
|
||||
<input type="hidden" name="maxStreams" value="0" />
|
||||
<input type="hidden" name="cert" value="0" /><%
|
||||
<input type="hidden" name="cert" value="0" />
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} /* tunnelIsClient */
|
||||
} /* curPage 7 */
|
||||
|
||||
/* End page 7 */ %>
|
||||
</div>
|
||||
|
||||
<div id="globalOperationsPanel" class="panel">
|
||||
<div class="header"></div>
|
||||
<div class="footer">
|
||||
<div class="toolbox">
|
||||
<tr>
|
||||
<td class="buttons">
|
||||
<a class="control" href="list"><%=intl._t("Cancel")%></a>
|
||||
<% if (curPage != 1 && curPage != 7) {
|
||||
%><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><%
|
||||
%><button id="controlPrevious" class="control" type="submit" name="action" value="Previous page" title="Previous Page"><%=intl._t("Previous")%></button><%
|
||||
} %>
|
||||
<% if (curPage == 7) {
|
||||
%><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><%
|
||||
%><button id="controlSave" class="control" type="submit" name="action" value="Save changes" title="Save Tunnel"><%=intl._t("Save Tunnel")%></button><%
|
||||
} else if (curPage == 6) {
|
||||
%><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><%
|
||||
%><button id="controlFinish" class="control" type="submit" name="action" value="Next page" title="Finish Wizard"><%=intl._t("Finish")%></button><%
|
||||
} else {
|
||||
%><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><%
|
||||
%><button id="controlNext" class="control" type="submit" name="action" value="Next page" title="Next Page"><%=intl._t("Next")%></button><%
|
||||
} %>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<div id="pageFooter">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
Reference in New Issue
Block a user