<%@include file="headers.jsi" %><%@page pageEncoding="UTF-8" %><%@page contentType="text/html" import="net.i2p.i2ptunnel.web.EditBean" %> <% 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"); tunnelType = net.i2p.data.DataHelper.stripHTML(tunnelType); /* 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._t("I2P Tunnel Manager - Tunnel Creation Wizard")%>
">
<% if (curPage == 1) { %>

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

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

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

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

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

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

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

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

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

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

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

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

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

<% } %> <% /* Page 1 - Whether to make a client or server tunnel */ if (curPage == 1) { %> <% } else { %><% } /* curPage 1 */ /* End page 1 */ %> <% /* Page 2 - Tunnel type */ if (curPage == 2) { %> <% } else { %><% } /* curPage 2 */ /* End page 2 */ %> <% /* Page 3 - Name and description */ if (curPage == 3) { %> <% } 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) { %> <% } else { %>" /><% } /* curPage 4 */ } else if ("client".equals(tunnelType) || "ircclient".equals(tunnelType)) { if (curPage == 4) { %> <% } else { %>" /><% } /* curPage 4 */ } } /* tunnelIsClient */ /* End page 4 */ %> <% /* Page 5 - Binding ports and addresses*/ if (!tunnelIsClient) { if (curPage == 5) { %> <% } else { %>" /><% } /* curPage 5 */ } /* streamrclient or !streamrserver */ %> <% if (!tunnelIsClient) { if (curPage == 5) { %> <% } else { %>" /><% } /* curPage 5 */ } /* !tunnelIsClient */ %> <% if (tunnelIsClient) { if (curPage == 5) { %> <% } else { %>" /><% } /* curPage 5 */ } /* tunnelIsClient or httpbidirserver */ %> <% if (tunnelIsClient) { if (curPage == 5) { %> <% } else { %>" /><% } /* curPage 5 */ } /* (tunnelIsClient && !streamrclient) || httpbidirserver || streamrserver */ /* End page 5 */ %> <% /* Page 6 - Automatic start */ if (curPage == 6) { %> <% } else { if ("1".equals(request.getParameter("startOnLoad"))) { %>" /><% } } /* curPage 6 */ /* End page 6 */ %> <% /* Page 7 - Wizard complete */ if (curPage == 7) { %> <% } /* tunnelIsClient */ } /* curPage 7 */ /* End page 7 */ %>

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

<%=intl._t("The first thing to decide is whether you want to create a server or a client tunnel.")%> <%=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.")%>

<%=intl._t("There are several types of tunnels to choose from:")%>

<% if (tunnelIsClient) { %> <% } else { %> <% } %>
<%=intl._t("Standard")%> <%=intl._t("Basic tunnel for connecting to a single service inside I2P.")%> <%=intl._t("Try this if none of the tunnel types below fit your requirements, or you don't know what type of tunnel you need.")%>
HTTP/HTTPS <%=intl._t("Tunnel that acts as an HTTP proxy for reaching eepsites inside I2P.")%> <%=intl._t("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._t("Websites outside I2P can also be reached if an HTTP proxy within I2P is known.")%>
IRC <%=intl._t("Customised client tunnel specific for IRC connections.")%> <%=intl._t("With this tunnel type, your IRC client will be able to connect to an IRC network inside I2P.")%> <%=intl._t("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._t("A tunnel that implements the SOCKS protocol.")%> <%=intl._t("This enables both TCP and UDP connections to be made through a SOCKS outproxy within I2P.")%>
SOCKS IRC <%=intl._t("A client tunnel implementing the SOCKS protocol, which is customised for connecting to IRC networks.")%> <%=intl._t("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._t("This means that only one I2P tunnel is required rather than a separate tunnel per IRC network.")%> <%=intl._t("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.")%>
<%=intl._t("Standard")%> <%=intl._t("A basic server tunnel for hosting a generic service inside I2P.")%> <%=intl._t("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._t("A server tunnel that is customised for HTTP connections.")%> <%=intl._t("Use this tunnel type if you want to host an eepsite.")%>
IRC <%=intl._t("A customised server tunnel for hosting IRC networks inside I2P.")%> <%=intl._t("Usually, a separate tunnel needs to be created for each IRC server that is to be accessible inside I2P.")%>
<%=intl._t("Select tunnel type")%>: <% if (tunnelIsClient) { %><% } else { %><% } /* tunnelIsClient */ %>

<%=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.")%>

<%=intl._t("Name")%>: " value="<%=(!"null".equals(request.getParameter("name")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("name")) : "" ) %>" class="freetext" />
<%=intl._t("Description")%>: " value="<%=(!"null".equals(request.getParameter("nofilter_description")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_description")) : "" ) %>" class="freetext" />

<%=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.")%>

<%=intl._t("Outproxies")%>: " value="<%=(!"null".equals(request.getParameter("proxyList")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("proxyList")) : "" ) %>" class="freetext" />

<%=intl._t("Type in the I2P destination of the service that this client tunnel should connect to.")%> <%=intl._t("This could be the full Base64 destination key, or an I2P URL from your address book.")%>

<%=intl._t("Tunnel Destination")%>: " value="<%=(!"null".equals(request.getParameter("targetDestination")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("targetDestination")) : "" ) %>" class="freetext" />  (<%=intl._t("name, name:port, or destination")%> )

<%=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. %>

<%=intl._t("Host")%>: " 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" />

<%=intl._t("This is the port that the service is accepting connections on.")%>

<%=intl._t("Port")%>: " value="<%=(!"null".equals(request.getParameter("targetPort")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("targetPort")) : "" ) %>" class="freetext" />

<%=intl._t("This is the port that the client tunnel will be accessed from locally.")%>

<%=intl._t("Port")%>: " value="<%=(!"null".equals(request.getParameter("port")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("port")) : "" ) %>" class="freetext" />

<%=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")%><% //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. %>

<%=intl._t("Reachable by")%>:

<%=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.")%>

<%=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.")%> <% if ("1".equals(request.getParameter("startOnLoad"))) { %><%=intl._t("Because you chose to automatically start the tunnel when the router starts, you don't have to do anything further.")%> <%=intl._t("The router will start the tunnel once it has been set up.")%><% } else { %><%=intl._t("Because you chose not to automatically start the tunnel, you will have to manually start it.")%> <%=intl._t("You can do this by clicking the Start button on the main page which corresponds to the new tunnel.")%><% } %>

<%=intl._t("Below is a summary of the options you chose:")%>

<% if (tunnelIsClient) { %> <% } %> <% if (!tunnelIsClient) { %> <% } if (!tunnelIsClient) { %> <% } if (tunnelIsClient) { %> <% } if (tunnelIsClient) { %> <% } %>
<%=intl._t("Server or client tunnel?")%> <%=(tunnelIsClient ? "Client" : "Server")%>
<%=intl._t("Tunnel type")%><% if ("client".equals(tunnelType) || "server".equals(tunnelType)) { %> <%=intl._t("Standard")%><% } else if ("httpclient".equals(tunnelType) || "httpserver".equals(tunnelType)) { %> HTTP<% } 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<% } %>
<%=intl._t("Tunnel name")%> <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("name"))%>
<%=intl._t("Tunnel description")%> <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_description"))%>
<%=intl._t("Tunnel destination")%><% if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) { %> <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("proxyList"))%><% } else if ("client".equals(tunnelType) || "ircclient".equals(tunnelType)) { %> <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetDestination"))%><% } %>
<%=intl._t("Binding address")%> <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost"))%>
<%=intl._t("Tunnel port")%><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetPort"))%>
<%=intl._t("Port")%><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("port"))%>
<%=intl._t("Reachable by")%><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("reachableBy"))%>
<%=intl._t("Tunnel auto-start")%><% if ("1".equals(request.getParameter("startOnLoad"))) { %> Yes<% } else { %> No<% } %>

<%=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.")%>

<% if (tunnelIsClient) { /* Client-only defaults */ %> <% } else { /* Server-only defaults */ %>
" href="list"><%=intl._t("Cancel")%> <% if (curPage != 1 && curPage != 7) { %><% } %> <% if (curPage == 7) { %><% } else if (curPage == 6) { %><% } else { %><% } %>