<% // NOTE: Do the header carefully so there is no whitespace before the <%@page pageEncoding="UTF-8" %><%@page trimDirectiveWhitespaces="true" %><%@page contentType="text/html" import="net.i2p.i2ptunnel.web.IndexBean" %> <%=intl._t("Hidden Services Manager")%> <% if (indexBean.allowCSS()) { %> <% } %> <% 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; %> <% } %>
<%=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 if (indexBean.getTunnelStatus(curServer) == IndexBean.RUNNING) { %><%=intl._t("Base32 Address")%>:<%=indexBean.getDestHashBase32(curServer)%> <% } 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); } %>
Description: <%=indexBean.getTunnelDescription(curServer)%>
<%=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 */ %> <% } %>
<%=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")%><% } } %>
<%=intl._t("Description")%>: <%=indexBean.getTunnelDescription(curClient)%>
<%=intl._t("New client tunnel")%>:  " />
<% } // isInitialized() %>