<% // NOTE: Do the header carefully so there is no whitespace before the <%@page pageEncoding="UTF-8" %><%@page contentType="text/html" import="net.i2p.i2ptunnel.web.WizardBean" %> <% String pageStr = request.getParameter("page"); /* Get the number of the page we came from */ int lastPage = 0; if (pageStr != null) { try { lastPage = Integer.parseInt(pageStr); if (lastPage > 7 || lastPage < 0) { lastPage = 0; } } catch (NumberFormatException nfe) { lastPage = 0; } } /* Determine what page to display now */ int curPage = 1; if ("Previous page".equals(request.getParameter("action"))) { curPage = lastPage - 1; } else { curPage = lastPage + 1; } if (curPage > 7 || curPage <= 0) { curPage = 1; } /* Fetch and format a couple of regularly-used values */ boolean tunnelIsClient = Boolean.valueOf(request.getParameter("isClient")); String tunnelType = request.getParameter("type"); /* Special case - don't display page 4 for server tunnels */ if (curPage == 4 && !tunnelIsClient) { if ("Previous page".equals(request.getParameter("action"))) { curPage = curPage - 1; } else { curPage = curPage + 1; } } %> <%=intl._("I2P Tunnel Manager - Tunnel Creation Wizard")%> <% if (wizardBean.allowCSS()) { %> <% } %>
">
<% if (curPage == 1) { %>

<%=intl._("Server or client tunnel?")%>

<% } else if (curPage == 2) { %>

<%=intl._("Tunnel type")%>

<% } else if (curPage == 3) { %>

<%=intl._("Tunnel name and description")%>

<% } else if (curPage == 4 && tunnelIsClient) { %>

<%=intl._("Tunnel destination")%>

<% } else if (curPage == 5) { %>

<%=intl._("Binding address and port")%>

<% } else if (curPage == 6) { %>

<%=intl._("Tunnel auto-start")%>

<% } else if (curPage == 7) { %>

<%=intl._("Wizard completed")%>

<% } %>

<% /* Page 1 - Whether to make a client or server tunnel */ if (curPage == 1) { %>

<%=intl._("This wizard will take you through the various basic options available for manually creating tunnels in I2P.")%>

<%=intl._("The first thing to decide is whether you want to create a client or server tunnel.")%> <%=intl._("If you are trying 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._("Server tunnels are what client tunnels will connect to, and you will need to create one if you want to host a service - e.g. more eepsites, or an outproxy.")%>

<% } 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) { %> <% } else { %> <% } %>
<%=intl._("Standard")%> <%=intl._("A basic client tunnel for connecting to a single service inside I2P.")%> <%=intl._("If none of the tunnel types below seem to fit your requirements, or you don't know what type of tunnel you need, try this one.")%>
HTTP <%=intl._("A client tunnel that acts as an HTTP proxy.")%> <%=intl._("With this tunnel type, you can connect to eepsites inside I2P by setting your browser to use the tunnel as a proxy, or setting the 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._("A customised client tunnel for connecting to a single IRC network inside I2P.")%> <%=intl._("With this tunnel type, you would configure your IRC client to connect to a local port on your computer.")%> <%=intl._("Each IRC network in I2P that you wish to connect to requires a separate tunnel.")%>
SOCKS 4/4a/5 <%=intl._("A client 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.")%> <%=intl._("I have no idea what this is.")%>
<%=intl._("Standard")%> <%=intl._("A basic server tunnel for hosting a generic service inside I2P.")%> <%=intl._("If none of the tunnel types below seem to fit your requirements, or you don't know what type of tunnel you need, try this one.")%>
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.")%> <%=intl._("I have no idea what this is.")%>
<% if (tunnelIsClient) { %><% } else { %><% } /* 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.")%>

" class="freetext" />
" 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._("Some blurb explaining that this is the list of proxies that the client tunnel should try if the requested URL is not an I2P URL.")%>

" class="freetext" />
<% } else { %>" /><% } /* curPage 4 */ } else if ("client".equals(tunnelType) || "ircclient".equals(tunnelType) || "streamrclient".equals(tunnelType)) { if (curPage == 4) { %>

<%=intl._("Some blurb explaining that this is the I2P destination that the client tunnel should point to.")%>

" class="freetext" /> (<%=intl._("name or destination")%>; <%=intl._("b32 not recommended")%>)
<% } 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._("Some blurb explaining that this is the IP that the service is running on, and that the tunnel should direct requests to.")%> <%=intl._("For some reason streamrclient also uses this.")%>

" class="freetext" />
<% } else { %>" /><% } /* curPage 5 */ } /* streamrclient or !streamrserver */ %> <% if (!tunnelIsClient) { if (curPage == 5) { %>

<%=intl._("Some blurb explaining that this is the port that the service is running on, and that the tunnel should direct requests to.")%>

" class="freetext" />
<% } else { %>" /><% } /* curPage 5 */ } /* !tunnelIsClient */ %> <% if (tunnelIsClient || "httpbidirserver".equals(tunnelType)) { if (curPage == 5) { %>

<%=intl._("Some blurb explaining that this is the port that the client tunnel will be accessed from locally.")%> <%=intl._("This is also the client port for the httpbidirserver tunnel.")%>

" class="freetext" />
<% } else { %>" /><% } /* curPage 5 */ } /* tunnelIsClient or httpbidirserver */ %> <% if ((tunnelIsClient && !"streamrclient".equals(tunnelType)) || "httpbidirserver".equals(tunnelType) || "streamrserver".equals(tunnelType)) { if (curPage == 5) { %>

<%=intl._("Some blurb explaining what Reachable By is.")%> <%=intl._("Note that it is relevant to most Client tunnels, and httpbidirserver and streamrserver tunnels.")%> <%=intl._("So the wording may need to change slightly for the client vs. server tunnels.")%>

<% } else { %>" /><% } /* curPage 5 */ } /* (tunnelIsClient && !streamrclient) || httpbidirserver || streamrserver */ /* End page 5 */ %> <% /* Page 6 - Automatic start */ if (curPage == 6) { %>

<%=intl._("Some blurb that explains what Auto Start does.")%>

class="tickbox" /> <%=intl._("(Check the Box for 'YES')")%>
<% } else { if ("1".equals(request.getParameter("startOnLoad"))) { %>" /><% } } /* curPage 6 */ /* End page 6 */ %> <% /* Page 7 - Wizard complete */ if (curPage == 7) { %>

<%=intl._("Some blurb explaining that the wizard is finished, and that the tunnel will now be created and possibly started.")%> <%=intl._("There should also be a blurb about the fact that the tunnel will be created with default values, and that these may require tuning.")%>

<% 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 */ %>