<%@include file="headers.jsi" %><%@page pageEncoding="UTF-8" %><%@page trimDirectiveWhitespaces="true" %><%@page contentType="text/html" import="net.i2p.i2ptunnel.web.IndexBean" %> <%-- must be set before key1-4 --%> <%=intl._t("Hidden Services Manager")%>

<%=intl._t("Hidden Services Manager")%>

<%=intl._t("These are the local services provided by your router.")%>   <%=intl._t("By default, most of your client services (email, HTTP proxy, IRC) will share the same set of tunnels and be listed as \"Shared Clients\" and \"Shared Clients(DSA)\".")%>

<% boolean isInitialized = indexBean.isInitialized(); String nextNonce = isInitialized ? net.i2p.i2ptunnel.web.IndexBean.getNextNonce() : null; // not synced, oh well int lastID = indexBean.getLastMessageID(); String msgs = indexBean.getMessages(); if (msgs.length() > 0) { %>

<%=intl._t("Status Messages")%>

<%=intl._t("Refresh")%> <% if (isInitialized) { %> <%=intl._t("Clear")%> <% } // isInitialized %>
<% } // !msgs.isEmpty() if (isInitialized) { %>

<%=intl._t("Global Tunnel Control")%>

<%=intl._t("Tunnel Wizard")%> <%=intl._t("Stop All")%> <%=intl._t("Start All")%> <%=intl._t("Restart All")%> <%-- //this is really bad because it stops and restarts all tunnels, which is probably not what you want <%=intl._t("Reload Config")%> --%>

<%=intl._t("I2P Hidden Services")%>

<% for (int curServer = 0; curServer < indexBean.getTunnelCount(); curServer++) { if (indexBean.isClient(curServer)) continue; %> <% String encName = indexBean.getEncryptedBase32(curServer); if (encName != null && encName.length() > 0) { %> <% } // encName %> <% } // for loop %>
<%=intl._t("Name")%> <%=intl._t("Type")%> <%=intl._t("Points at")%> <%=intl._t("Preview")%> <%=intl._t("Status")%> <%=intl._t("Control")%>
 <%=indexBean.getTunnelName(curServer)%>"><%=indexBean.getTunnelName(curServer)%> <%=indexBean.getTunnelType(curServer)%> <% if (indexBean.isServerTargetLinkValid(curServer)) { if (indexBean.isSSLEnabled(curServer)) { %> " target="_top"><%=indexBean.getServerTarget(curServer)%> SSL <% } else { %> " target="_top"><%=indexBean.getServerTarget(curServer)%> <% } } else { %><%=indexBean.getServerTarget(curServer)%> <% if (indexBean.isSSLEnabled(curServer)) { %> SSL <% } } %> <% if (("httpserver".equals(indexBean.getInternalType(curServer)) || ("httpbidirserver".equals(indexBean.getInternalType(curServer)))) && indexBean.getTunnelStatus(curServer) == IndexBean.RUNNING) { %> " href="http://<%=indexBean.getDestHashBase32(curServer)%>" target="_top"><%=intl._t("Preview")%> <% } else { %><%=intl._t("No Preview")%> <% } %> <% switch (indexBean.getTunnelStatus(curServer)) { case IndexBean.STARTING: %>
"><%=intl._t("Starting...")%>
" href="list?nonce=<%=nextNonce%>&action=stop&tunnel=<%=curServer%>"><%=intl._t("Stop")%> <% break; case IndexBean.RUNNING: %>
"><%=intl._t("Running")%>
" href="list?nonce=<%=nextNonce%>&action=stop&tunnel=<%=curServer%>"><%=intl._t("Stop")%> <% break; case IndexBean.NOT_RUNNING: %>
"><%=intl._t("Stopped")%>
" href="list?nonce=<%=nextNonce%>&action=start&tunnel=<%=curServer%>"><%=intl._t("Start")%> <% break; } %>
<% String name = indexBean.getSpoofedHost(curServer); if (name == null || name.equals("")) { name = indexBean.getTunnelName(curServer); out.write(""); out.write(intl._t("Destination")); out.write(": "); out.write(indexBean.getDestHashBase32(curServer)); } else { out.write(""); out.write(intl._t("Hostname")); out.write(": "); out.write(name); } %>
<%=intl._t("Encrypted")%>: <%=encName%>
<% String descr = indexBean.getTunnelDescription(curServer); if (descr != null && descr.length() > 0) { %> <%=intl._t("Description")%>: <%=descr%> <% } else { // needed to make the spacing look right %> <% } // descr %>
<%=intl._t("New hidden service")%>:  " />

<%=intl._t("I2P Client Tunnels")%>

<% for (int curClient = 0; curClient < indexBean.getTunnelCount(); curClient++) { if (!indexBean.isClient(curClient)) continue; %> <% /* TODO SSL outproxy for httpclient if plugin not present */ %> <% } // for loop %>
<%=intl._t("Name")%> <%=intl._t("Type")%> <%=intl._t("Interface")%> <%=intl._t("Port")%> <%=intl._t("Status")%> <%=intl._t("Control")%>
 <%=indexBean.getTunnelName(curClient)%>"><%=indexBean.getTunnelName(curClient)%> <%=indexBean.getTunnelType(curClient)%> <% /* should only happen for streamr client */ String cHost= indexBean.getClientInterface(curClient); if (cHost == null || "".equals(cHost)) { out.write(""); out.write(intl._t("Host not set")); out.write(""); } else { out.write(cHost); } %> <% String cPort= indexBean.getClientPort2(curClient); out.write(cPort); if (indexBean.isSSLEnabled(curClient)) out.write(" SSL"); %> <% switch (indexBean.getTunnelStatus(curClient)) { case IndexBean.STARTING: %>
"><%=intl._t("Starting...")%>
" href="list?nonce=<%=nextNonce%>&action=stop&tunnel=<%=curClient%>"><%=intl._t("Stop")%> <% break; case IndexBean.STANDBY: %>
"><%=intl._t("Standby")%>
<%=intl._t("Stop")%> <% break; case IndexBean.RUNNING: %>
"><%=intl._t("Running")%>
<%=intl._t("Stop")%> <% break; case IndexBean.NOT_RUNNING: %>
"><%=intl._t("Stopped")%>
" href="list?nonce=<%=nextNonce%>&action=start&tunnel=<%=curClient%>"><%=intl._t("Start")%> <% break; } %>
<% if ("httpclient".equals(indexBean.getInternalType(curClient)) || "connectclient".equals(indexBean.getInternalType(curClient)) || "sockstunnel".equals(indexBean.getInternalType(curClient)) || "socksirctunnel".equals(indexBean.getInternalType(curClient))) { %> <%=intl._t("Outproxy")%>: <% } else { %> <%=intl._t("Destination")%>: <% } %> <% if (indexBean.getIsUsingOutproxyPlugin(curClient)) { %><%=intl._t("internal plugin")%><% } else { String cdest = indexBean.getClientDestination(curClient); if (cdest.length() > 70) { // Probably a B64 (a B32 is 60 chars) so truncate %><%=cdest.substring(0, 45)%>…<%=cdest.substring(cdest.length() - 15, cdest.length())%><% } else if (cdest.length() > 0) { %><%=cdest%><% } else { %><%=intl._t("none")%><% } } %>
<% boolean isShared = indexBean.isSharedClient(curClient); String descr = indexBean.getTunnelDescription(curClient); if (isShared || (descr != null && descr.length() > 0)) { %> <% if (isShared) { %><%=intl._t("Shared Client")%><% } else { %><%=intl._t("Description")%><% } if (descr != null && descr.length() > 0) { %>: <%=descr%><% } else { %><% } } else { // needed to make the spacing look right %> <% } // descr %>
<%=intl._t("New client tunnel")%>:  " />
<% } // isInitialized() %>