<% /* Page 1 - Whether to make a client or server tunnel */
if (curPage == 1) {
%>
<%=intl._("This wizard will take you through the various options available for creating tunnels in I2P.")%>
<%=intl._("The first thing to decide is whether you want to create a server or a client tunnel.")%>
<%=intl._("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._("On the other hand, if you wish to host a service for others to connect to you'll need to create a SERVER tunnel.")%>
<%=intl._("Server Tunnel")%>
<%=intl._("Client Tunnel")%>
<%
} else {
%>
<%
} /* curPage 1 */
/* End page 1 */ %>
<% /* Page 2 - Tunnel type */
if (curPage == 2) {
%>
<%=intl._("There are several types of tunnels to choose from:")%>
<%
if (tunnelIsClient) {
%>
<%=intl._("Standard")%>
<%=intl._("Basic tunnel for connecting to a single service inside I2P.")%>
<%=intl._("Try this if none of the tunnel types below fit your requirements, or you don't know what type of tunnel you need.")%>
HTTP
<%=intl._("Tunnel that acts as an HTTP proxy for reaching eepsites inside I2P.")%>
<%=intl._("Set your browser to use this tunnel as an http proxy, or set your \"http_proxy\" environment variable for command-line applications in GNU/Linux.")%>
<%=intl._("Websites outside I2P can also be reached if an HTTP proxy within I2P is known.")%>
IRC
<%=intl._("Customised client tunnel specific for IRC connections.")%>
<%=intl._("With this tunnel type, your IRC client will be able to connect to an IRC network inside I2P.")%>
<%=intl._("Each IRC network in I2P that you wish to connect to will require its own tunnel. (See Also, SOCKS IRC)")%>
SOCKS 4/4a/5
<%=intl._("A tunnel that implements the SOCKS protocol.")%>
<%=intl._("This enables both TCP and UDP connections to be made through a SOCKS outproxy within I2P.")%>
SOCKS IRC
<%=intl._("A client tunnel implementing the SOCKS protocol, which is customised for connecting to IRC networks.")%>
<%=intl._("With this tunnel type, IRC networks in I2P can be reached by typing the I2P address into your IRC client, and configuring the IRC client to use this SOCKS tunnel.")%>
<%=intl._("This means that only one I2P tunnel is required rather than a separate tunnel per IRC network.")%>
<%=intl._("IRC networks outside I2P can also be reached if a SOCKS outproxy within I2P is known, though it depends on whether or not the outproxy has been blocked by the IRC network.")%>
CONNECT
<%=intl._("A client tunnel that implements the HTTP CONNECT command.")%>
<%=intl._("This enables TCP connections to be made through an HTTP outproxy, assuming the proxy supports the CONNECT command.")%>
Streamr
<%=intl._("A customised client tunnel for Streamr.")%><%
//XXX TODO<%=intl._("I have no idea what this is.")%>
<%
} else {
%>
<%=intl._("Standard")%>
<%=intl._("A basic server tunnel for hosting a generic service inside I2P.")%>
<%=intl._("Try this if none of the tunnel types below fit your requirements, or you don't know what type of tunnel you need.")%>
HTTP
<%=intl._("A server tunnel that is customised for HTTP connections.")%>
<%=intl._("Use this tunnel type if you want to host an eepsite.")%>
HTTP bidir
<%=intl._("A customised server tunnel that can both serve HTTP data and connect to other server tunnels.")%>
<%=intl._("This tunnel type is predominantly used when running a Seedless server.")%>
IRC
<%=intl._("A customised server tunnel for hosting IRC networks inside I2P.")%>
<%=intl._("Usually, a separate tunnel needs to be created for each IRC server that is to be accessible inside I2P.")%>
Streamr
<%=intl._("A customised server tunnel for Streamr.")%><%
//XXX TODO<%=intl._("I have no idea what this is.")%>
<%
}
%>
<%
if (tunnelIsClient) {
%>
<%=intl._("Standard")%>
HTTP
IRC
SOCKS 4/4a/5
SOCKS IRC
CONNECT
Streamr
<%
} else {
%>
<%=intl._("Standard")%>
HTTP
HTTP bidir
IRC
Streamr
<%
} /* tunnelIsClient */ %>
<%
} else {
%>
<%
} /* curPage 2 */
/* End page 2 */ %>
<% /* Page 3 - Name and description */
if (curPage == 3) {
%>
<%=intl._("Choose a name and description for your tunnel.")%>
<%=intl._("These can be anything you want - they are just for ease of identifying the tunnel in the routerconsole.")%>
<%=intl._("Name")%>:(N )
" class="freetext" />
<%=intl._("Description")%>:(E )
" class="freetext" />
<%
} else {
%>
" />
" /><%
} /* curPage 3 */
/* End page 3 */ %>
<% /* Page 4 - Target destination or proxy list */
if (tunnelIsClient) {
if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) {
if (curPage == 4) {
%>
<%=intl._("If you know of any outproxies for this type of tunnel (either HTTP or SOCKS), fill them in below.")%>
<%=intl._("Separate multiple proxies with commas.")%>
<%=intl._("Outproxies")%>(x ):
" class="freetext" />
<%
} else {
%>
" /><%
} /* curPage 4 */
} else if ("client".equals(tunnelType) || "ircclient".equals(tunnelType) || "streamrclient".equals(tunnelType)) {
if (curPage == 4) {
%>
<%=intl._("Type in the I2P destination of the service that this client tunnel should connect to.")%>
<%=intl._("This could be the full base 64 destination key, or an I2P URL from your address book.")%>
<%=intl._("Tunnel Destination")%>(T ):
" class="freetext" />
<%
} else {
%>
" /><%
} /* curPage 4 */
}
} /* tunnelIsClient */
/* End page 4 */ %>
<% /* Page 5 - Binding ports and addresses*/
if ((tunnelIsClient && "streamrclient".equals(tunnelType)) || (!tunnelIsClient && !"streamrserver".equals(tunnelType))) {
if (curPage == 5) {
%>
<%=intl._("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._("For some reason streamrclient also uses this.")%>
<%=intl._("Host")%>(H ):
" class="freetext" />
<%
} else {
%>
" /><%
} /* curPage 5 */
} /* streamrclient or !streamrserver */ %>
<%
if (!tunnelIsClient) {
if (curPage == 5) {
%>
<%=intl._("This is the port that the service is accepting connections on.")%>
<%=intl._("Port")%>(P ):
" class="freetext" />
<%
} else {
%>
" /><%
} /* curPage 5 */
} /* !tunnelIsClient */ %>
<%
if (tunnelIsClient || "httpbidirserver".equals(tunnelType)) {
if (curPage == 5) {
%>
<%=intl._("This is the port that the client tunnel will be accessed from locally.")%>
<%=intl._("This is also the client port for the HTTPBidir server tunnel.")%>
P ort:
" class="freetext" />
<%
} else {
%>
" /><%
} /* curPage 5 */
} /* tunnelIsClient or httpbidirserver */ %>
<%
if ((tunnelIsClient && !"streamrclient".equals(tunnelType)) || "httpbidirserver".equals(tunnelType) || "streamrserver".equals(tunnelType)) {
if (curPage == 5) {
%>
<%=intl._("How do you want this tunnel to be accessed? By just this machine, your entire subnet, or external internet?")%>
<%=intl._("You will most likely want to just allow 127.0.0.1")%><%
//XXX TODO<%=intl._("Note that it is relevant to most Client tunnels, and httpbidirserver and streamrserver tunnels.")%><%
//XXX TODO<%=intl._("So the wording may need to change slightly for the client vs. server tunnels.")%>
<%=intl._("Reachable by")%>(R ):
<%
String clientInterface = request.getParameter("reachableBy");
if ("null".equals(clientInterface)) {
clientInterface = "127.0.0.1";
}
for (String ifc : editBean.interfaceSet()) {
out.write("');
out.write(ifc);
out.write(" \n");
}
%>
<%
} else {
%>
" /><%
} /* curPage 5 */
} /* (tunnelIsClient && !streamrclient) || httpbidirserver || streamrserver */
/* End page 5 */ %>
<% /* Page 6 - Automatic start */
if (curPage == 6) {
%>
<%=intl._("The I2P router can automatically start this tunnel for you when the router is started.")%>
<%=intl._("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.")%>
<%=intl._("Auto Start")%>(A ):
class="tickbox" />
<%
} else {
if ("1".equals(request.getParameter("startOnLoad"))) {
%>
" /><%
}
} /* curPage 6 */
/* End page 6 */ %>
<% /* Page 7 - Wizard complete */
if (curPage == 7) {
%>
<%=intl._("The wizard has now collected enough information to create your tunnel.")%>
<%=intl._("Upon clicking the Save button below, the wizard will set up the tunnel, and take you back to the main I2PTunnel page.")%>
<%
if ("1".equals(request.getParameter("startOnLoad"))) {
%><%=intl._("Because you chose to automatically start the tunnel when the router starts, you don't have to do anything further.")%>
<%=intl._("The router will start the tunnel once it has been set up.")%><%
} else {
%><%=intl._("Because you chose not to automatically start the tunnel, you will have to manually start it.")%>
<%=intl._("You can do this by clicking the Start button on the main page which corresponds to the new tunnel.")%><%
} %>
<%=intl._("Below is a summary of the options you chose:")%>
<%=intl._("Server or client tunnel?")%>
<%=(tunnelIsClient ? "Client" : "Server")%>
<%=intl._("Tunnel type")%> <%
if ("client".equals(tunnelType) || "server".equals(tunnelType)) { %>
<%=intl._("Standard")%><%
} else if ("httpclient".equals(tunnelType) || "httpserver".equals(tunnelType)) { %>
HTTP<%
} else if ("httpbidirserver".equals(tunnelType)) { %>
HTTP bidir<%
} else if ("ircclient".equals(tunnelType) || "ircserver".equals(tunnelType)) { %>
IRC<%
} else if ("sockstunnel".equals(tunnelType)) { %>
SOCKS 4/4a/5<%
} else if ("socksirctunnel".equals(tunnelType)) { %>
SOCKS IRC<%
} else if ("connectclient".equals(tunnelType)) { %>
CONNECT<%
} else if ("streamrclient".equals(tunnelType) || "streamrserver".equals(tunnelType)) { %>
Streamr<%
} %>
<%=intl._("Tunnel name and description")%>
<%=request.getParameter("name")%>
<%=request.getParameter("description")%>
<%
if (tunnelIsClient) { %>
<%=intl._("Tunnel destination")%> <%
if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) { %>
<%=request.getParameter("proxyList")%><%
} else if ("client".equals(tunnelType) || "ircclient".equals(tunnelType) || "streamrclient".equals(tunnelType)) { %>
<%=request.getParameter("targetDestination")%><%
} %>
<%
} %>
<%=intl._("Binding address and port")%> <%
if ((tunnelIsClient && "streamrclient".equals(tunnelType)) || (!tunnelIsClient && !"streamrserver".equals(tunnelType))) { %>
<%=request.getParameter("targetHost")%> <%
}
if (!tunnelIsClient) { %>
<%=request.getParameter("targetPort")%> <%
}
if (tunnelIsClient || "httpbidirserver".equals(tunnelType)) { %>
<%=request.getParameter("port")%><%
}
if ((tunnelIsClient && !"streamrclient".equals(tunnelType)) || "httpbidirserver".equals(tunnelType) || "streamrserver".equals(tunnelType)) { %>
<%=request.getParameter("reachableBy")%><%
} %>
<%=intl._("Tunnel auto-start")%> <%
if ("1".equals(request.getParameter("startOnLoad"))) { %>
Yes<%
} else { %>
No<%
} %>
<%=intl._("Alongside these basic settings, there are a number of advanced options for tunnel configuration.")%>
<%=intl._("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.")%>
<%
if (!"streamrclient".equals(tunnelType)) {
%>
<%
} /* !streamrclient */ %>
<%
if (tunnelIsClient) { /* Client-only defaults */
if (!"streamrclient".equals(tunnelType)) {
%>
<%
}
if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) {
%>
<%
}
if ("httpclient".equals(tunnelType)) {
%>
<%
} /* httpclient */
} else { /* Server-only defaults */
%>
<%
} /* tunnelIsClient */
} /* curPage 7 */
/* End page 7 */ %>