forked from I2P_Developers/i2p.i2p
Re-organize the I2PTunnel UI and, in javascript-enabled browsers, turn advanced options onto accordion-menus.
This commit is contained in:
@@ -72,5 +72,6 @@ if (__invalid) {
|
||||
} // isInitialized()
|
||||
}
|
||||
%>
|
||||
<script src="/js/tableSlider.js" type="text/javascript"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -251,8 +251,8 @@
|
||||
</table>
|
||||
<table class="tunnelConfig" id="lengthOption">
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Tunnel Options")%>
|
||||
<th colspan="2" class="tableTop">
|
||||
<%=intl._t("Tunnel Length Options")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td>
|
||||
@@ -297,6 +297,10 @@
|
||||
</table>
|
||||
<table class="tunnelConfig" id="quantityOptions">
|
||||
<tr>
|
||||
<th colspan="2" class="tableTop">
|
||||
<%=intl._t("Tunnel Quantity Options")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("Count")%></b>
|
||||
</td><td>
|
||||
@@ -325,6 +329,11 @@
|
||||
</tr>
|
||||
</table>
|
||||
<table class="tunnelConfig" id="timedOptions">
|
||||
<tr>
|
||||
<th colspan="2" class="tableTop">
|
||||
<%=intl._t("Tunnel Time-Management Options")%>
|
||||
</th>
|
||||
</tr>
|
||||
<%
|
||||
if ("client".equals(tunnelType)) {
|
||||
%>
|
||||
@@ -348,27 +357,8 @@
|
||||
</tr>
|
||||
<%
|
||||
} // client
|
||||
|
||||
if (!editBean.isRouterContext()) {
|
||||
%>
|
||||
</table>
|
||||
<table class="tunnelConfig">
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Router I2CP Address")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("Host")%>:</b>
|
||||
<input type="text" name="clientHost" size="20" title="<%=intl._t("I2CP Hostname or IP")%>" value="<%=editBean.getI2CPHost(curTunnel)%>" class="freetext host" />
|
||||
</td><td>
|
||||
<b><%=intl._t("Port")%>:</b>
|
||||
<input type="text" name="clientport" size="20" title="<%=intl._t("I2CP Port Number")%>" value="<%=editBean.getI2CPPort(curTunnel)%>" class="freetext port" />
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} // !isRouterContext
|
||||
|
||||
if (!"streamrclient".equals(tunnelType)) {
|
||||
// streamr client sends pings so it will never be idle
|
||||
%>
|
||||
@@ -472,8 +462,13 @@
|
||||
|
||||
if ("httpclient".equals(tunnelType)) {
|
||||
%>
|
||||
</table>
|
||||
<table class="tunnelConfig" id="filterOptions">
|
||||
<tr>
|
||||
<th colspan="2" class="tableTop">
|
||||
<%=intl._t("Tunnel Filtering Options")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("HTTP Filtering")%>
|
||||
</th>
|
||||
@@ -494,15 +489,19 @@
|
||||
<%=intl._t("Allow SSL to I2P addresses")%></label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="tunnelConfig" id="cryptoOptions">
|
||||
<%
|
||||
} // if httpclient
|
||||
|
||||
int currentSigType = editBean.getSigType(curTunnel, tunnelType);
|
||||
String disabled = editBean.canChangeSigType(curTunnel) ? "" : " disabled=\"disabled\" ";
|
||||
%>
|
||||
</table>
|
||||
<table class="tunnelConfig" id="cryptoOptions">
|
||||
<tr>
|
||||
<th colspan="2" class="tableTop">
|
||||
<%=intl._t("Tunnel Cryptography Options")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Signature type")%>
|
||||
</th>
|
||||
@@ -567,8 +566,13 @@
|
||||
<%
|
||||
if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) {
|
||||
%>
|
||||
</table>
|
||||
<table class="tunnelConfig" id="authOptions">
|
||||
<tr>
|
||||
<th colspan="2" class="tableTop">
|
||||
<%=intl._t("Tunnel Authentication Options")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Local Authorization")%>
|
||||
</th>
|
||||
@@ -606,14 +610,18 @@
|
||||
<input type="password" name="nofilter_outproxyPassword" title="<%=intl._t("Enter password required by outproxy")%>" value="<%=editBean.getOutproxyPassword(curTunnel)%>" class="freetext password" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<%
|
||||
} // httpclient || connect || socks || socksirc
|
||||
|
||||
if ("httpclient".equals(tunnelType)) {
|
||||
%>
|
||||
</table>
|
||||
<table class="tunnelConfig" id="jumpOptions">
|
||||
<tr>
|
||||
<th colspan="2" class="tableTop">
|
||||
<%=intl._t("Tunnel Address-Service Options")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Jump URL List")%>
|
||||
</th>
|
||||
@@ -622,13 +630,34 @@
|
||||
<textarea rows="2" style="height: 8em;" cols="60" id="hostField" name="jumpList" title="<%=intl._t("List of helper URLs providing jump links when a host is not found in your addressbook")%>" wrap="off" spellcheck="false"><%=editBean.getJumpList(curTunnel)%></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<%
|
||||
} // httpclient
|
||||
%>
|
||||
</table>
|
||||
<%
|
||||
if (!editBean.isRouterContext()) {
|
||||
%>
|
||||
<table class="tunnelConfig">
|
||||
<tr>
|
||||
<th colspan="2" class="tableTop">
|
||||
<%=intl._t("Router I2CP Address")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("Host")%>:</b>
|
||||
<input type="text" name="clientHost" size="20" title="<%=intl._t("I2CP Hostname or IP")%>" value="<%=editBean.getI2CPHost(curTunnel)%>" class="freetext host" />
|
||||
</td><td>
|
||||
<b><%=intl._t("Port")%>:</b>
|
||||
<input type="text" name="clientport" size="20" title="<%=intl._t("I2CP Port Number")%>" value="<%=editBean.getI2CPPort(curTunnel)%>" class="freetext port" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<%
|
||||
} // !isRouterContext
|
||||
%>
|
||||
<table class="tunnelConfig" id="advancedOptions">
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<th colspan="2" class="tableTop">
|
||||
<%=intl._t("Custom options")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
|
||||
@@ -237,13 +237,12 @@
|
||||
|
||||
<h3><%=intl._t("Advanced networking options")%></h3>
|
||||
|
||||
<table id="#advancedServerTunnelOptions" class="tunnelConfig">
|
||||
<table class="tunnelConfig" id="lengthOption">
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Tunnel Options")%>
|
||||
<th colspan="2" class="tableTop">
|
||||
<%=intl._t("Tunnel Length Options")%>
|
||||
</th>
|
||||
</tr>
|
||||
|
||||
<% if (editBean.isAdvanced()) {
|
||||
%><tr>
|
||||
<th colspan="2">
|
||||
@@ -286,44 +285,11 @@
|
||||
<option value="-2"<%=(tunnelVariance == -2 ? " selected=\"selected\"" : "") %>><%=intl._t("+/- 0-2 hop variance (not recommended)")%></option>
|
||||
<% if (tunnelVariance > 2 || tunnelVariance < -2) {
|
||||
%> <option value="<%=tunnelVariance%>" selected="selected"><%= (tunnelVariance > 2 ? "+ " : "+/- ") %>0-<%=tunnelVariance%> <%=intl._t("hop variance")%></option>
|
||||
<% }
|
||||
%></select>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("Count")%></b>
|
||||
</td><td>
|
||||
<b><%=intl._t("Backup Count")%></b>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<select id="tunnelQuantity" name="tunnelQuantity" title="<%=intl._t("Number of Tunnels in Group")%>" class="selectbox">
|
||||
<%=editBean.getQuantityOptions(curTunnel, editBean.isAdvanced() ? 1 : 0)%>
|
||||
</select>
|
||||
</td><td>
|
||||
<select id="tunnelBackupQuantity" name="tunnelBackupQuantity" title="<%=intl._t("Number of Reserve Tunnels")%>" class="selectbox">
|
||||
<% int tunnelBackupQuantity = editBean.getTunnelBackupQuantity(curTunnel, 0);
|
||||
if (editBean.isAdvanced()) {
|
||||
// TODO ngettext
|
||||
%><option value="0"<%=(tunnelBackupQuantity == 0 ? " selected=\"selected\"" : "") %>>0 <%=intl._t("backup tunnels")%></option>
|
||||
<option value="1"<%=(tunnelBackupQuantity == 1 ? " selected=\"selected\"" : "") %>>1 <%=intl._t("backup tunnels")%></option>
|
||||
<option value="2"<%=(tunnelBackupQuantity == 2 ? " selected=\"selected\"" : "") %>>2 <%=intl._t("backup tunnels")%></option>
|
||||
<option value="3"<%=(tunnelBackupQuantity == 3 ? " selected=\"selected\"" : "") %>>3 <%=intl._t("backup tunnels")%></option>
|
||||
<%
|
||||
} else {
|
||||
%><option value="0"<%=(tunnelBackupQuantity == 0 ? " selected=\"selected\"" : "") %>><%=intl._t("0 backup tunnels (0 redundancy, no added resource usage)")%></option>
|
||||
<option value="1"<%=(tunnelBackupQuantity == 1 ? " selected=\"selected\"" : "") %>><%=intl._t("1 backup tunnel each direction (low redundancy, low resource usage)")%></option>
|
||||
<option value="2"<%=(tunnelBackupQuantity == 2 ? " selected=\"selected\"" : "") %>><%=intl._t("2 backup tunnels each direction (medium redundancy, medium resource usage)")%></option>
|
||||
<option value="3"<%=(tunnelBackupQuantity == 3 ? " selected=\"selected\"" : "") %>><%=intl._t("3 backup tunnels each direction (high redundancy, high resource usage)")%></option>
|
||||
<% } // isAdvanced()
|
||||
if (tunnelBackupQuantity > 3) {
|
||||
%> <option value="<%=tunnelBackupQuantity%>" selected="selected"><%=tunnelBackupQuantity%> <%=intl._t("backup tunnels")%></option>
|
||||
<% }
|
||||
%></select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<% if (editBean.isAdvanced()) {
|
||||
<% if (editBean.isAdvanced()) {
|
||||
// repeat four options above for outbound
|
||||
%><tr>
|
||||
<th colspan="2">
|
||||
@@ -361,6 +327,56 @@
|
||||
<% }
|
||||
%></select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="tunnelConfig" id="quantityOptions">
|
||||
<tr>
|
||||
<th colspan="2" class="tableTop">
|
||||
<%=intl._t("Tunnel Quantity Options")%>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Inbound")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("Count")%></b>
|
||||
</td><td>
|
||||
<b><%=intl._t("Backup Count")%></b>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<select id="tunnelQuantity" name="tunnelQuantity" title="<%=intl._t("Number of Tunnels in Group")%>" class="selectbox">
|
||||
<%=editBean.getQuantityOptions(curTunnel, editBean.isAdvanced() ? 1 : 0)%>
|
||||
</select>
|
||||
</td><td>
|
||||
<select id="tunnelBackupQuantity" name="tunnelBackupQuantity" title="<%=intl._t("Number of Reserve Tunnels")%>" class="selectbox">
|
||||
<% int tunnelBackupQuantity = editBean.getTunnelBackupQuantity(curTunnel, 0);
|
||||
if (editBean.isAdvanced()) {
|
||||
// TODO ngettext
|
||||
%><option value="0"<%=(tunnelBackupQuantity == 0 ? " selected=\"selected\"" : "") %>>0 <%=intl._t("backup tunnels")%></option>
|
||||
<option value="1"<%=(tunnelBackupQuantity == 1 ? " selected=\"selected\"" : "") %>>1 <%=intl._t("backup tunnels")%></option>
|
||||
<option value="2"<%=(tunnelBackupQuantity == 2 ? " selected=\"selected\"" : "") %>>2 <%=intl._t("backup tunnels")%></option>
|
||||
<option value="3"<%=(tunnelBackupQuantity == 3 ? " selected=\"selected\"" : "") %>>3 <%=intl._t("backup tunnels")%></option>
|
||||
<%
|
||||
} else {
|
||||
%><option value="0"<%=(tunnelBackupQuantity == 0 ? " selected=\"selected\"" : "") %>><%=intl._t("0 backup tunnels (0 redundancy, no added resource usage)")%></option>
|
||||
<option value="1"<%=(tunnelBackupQuantity == 1 ? " selected=\"selected\"" : "") %>><%=intl._t("1 backup tunnel each direction (low redundancy, low resource usage)")%></option>
|
||||
<option value="2"<%=(tunnelBackupQuantity == 2 ? " selected=\"selected\"" : "") %>><%=intl._t("2 backup tunnels each direction (medium redundancy, medium resource usage)")%></option>
|
||||
<option value="3"<%=(tunnelBackupQuantity == 3 ? " selected=\"selected\"" : "") %>><%=intl._t("3 backup tunnels each direction (high redundancy, high resource usage)")%></option>
|
||||
<% } // isAdvanced()
|
||||
if (tunnelBackupQuantity > 3) {
|
||||
%> <option value="<%=tunnelBackupQuantity%>" selected="selected"><%=tunnelBackupQuantity%> <%=intl._t("backup tunnels")%></option>
|
||||
<% }
|
||||
%></select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Outbound")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("Count")%></b>
|
||||
@@ -388,47 +404,18 @@
|
||||
</tr>
|
||||
<%
|
||||
} // isAdvanced() End outbound config section
|
||||
|
||||
if (!"streamrserver".equals(tunnelType)) {
|
||||
%>
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Profile")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td colspan="2">
|
||||
<select id="profile" name="profile" title="<%=intl._t("Connection Profile")%>" class="selectbox">
|
||||
<% boolean interactiveProfile = editBean.isInteractive(curTunnel);
|
||||
%><option <%=(interactiveProfile == true ? "selected=\"selected\" " : "")%>value="interactive"><%=intl._t("interactive connection")%> </option>
|
||||
<option <%=(interactiveProfile == false ? "selected=\"selected\" " : "")%>value="bulk"><%=intl._t("bulk connection (downloads/websites/BT)")%> </option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} /* !streamrserver */
|
||||
|
||||
if (!editBean.isRouterContext()) {
|
||||
%>
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Router I2CP Address")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("Host")%>:</b>
|
||||
<input type="text" id="clientHost" name="clientHost" size="20" title="<%=intl._t("I2CP Hostname or IP")%>" value="<%=editBean.getI2CPHost(curTunnel)%>" class="freetext" />
|
||||
</td><td>
|
||||
<b><%=intl._t("Port")%>:</b>
|
||||
<input type="text" id="clientPort" name="clientport" size="20" title="<%=intl._t("I2CP Port Number")%>" value="<%=editBean.getI2CPPort(curTunnel)%>" class="freetext" />
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} // !isRouterContext
|
||||
|
||||
// TODO, encrypted + offline is unimplemented
|
||||
if (!editBean.getIsOfflineKeys(curTunnel)) {
|
||||
%>
|
||||
</table>
|
||||
<table class="tunnelConfig" id="cryptoOptions">
|
||||
<tr>
|
||||
<th colspan="2" class="tableTop">
|
||||
<%=intl._t("Tunnel Cryptography Options")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Encrypt Leaseset")%>
|
||||
</th>
|
||||
@@ -577,184 +564,6 @@
|
||||
} // allowBlinding
|
||||
} // !isOffline
|
||||
%>
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Restricted Access List")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td colspan="2">
|
||||
<span class="multiOption"><label title="<%=intl._t("Allow all clients to connect to this service")%>"><input value="0" type="radio" name="accessMode"<%=(editBean.getAccessMode(curTunnel).equals("0") ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Disable")%></label></span>
|
||||
<span class="multiOption"><label title="<%=intl._t("Prevent listed clients from connecting to this service")%>"><input value="2" type="radio" name="accessMode"<%=(editBean.getAccessMode(curTunnel).equals("2") ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Blacklist")%></label></span>
|
||||
<span class="multiOption"><label title="<%=intl._t("Only allow listed clients to connect to this service")%>"><input value="1" type="radio" name="accessMode"<%=(editBean.getAccessMode(curTunnel).equals("1") ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Whitelist")%></label></span>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td colspan="2">
|
||||
<b><%=intl._t("Access List Description")%></b> (<%=intl._t("Specify clients, 1 per line")%>)
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td colspan="2">
|
||||
<textarea rows="2" style="height: 8em;" cols="60" name="accessList" title="<%=intl._t("Control access to this service")%>" wrap="off" spellcheck="false"><%=editBean.getAccessList(curTunnel)%></textarea>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td colspan="2">
|
||||
<b><%=intl._t("Filter Definition File")%></b>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td colspan="2">
|
||||
<%=intl._t("You can define an advanced filter for this tunnel.")%> (<a href="http://i2p-projekt.i2p/spec/filter-format" target="_blank"><%=intl._t("Format Specification")%></a>)
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td colspan="2">
|
||||
<label for="filterDefinition"><%=intl._t("Absolute path to file containing filter definition")%></label>
|
||||
<input type="text" id="filterDefinition" name="filterDefinition" value="<%=editBean.getFilterDefinition(curTunnel)%>" size="80"/>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Server Access Options")%>
|
||||
</th>
|
||||
</tr>
|
||||
<%
|
||||
if (("httpserver".equals(tunnelType)) || ("httpbidirserver".equals(tunnelType))) {
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<label title="<%=intl._t("Prevent clients from accessing this service via an inproxy")%>"><input value="1" type="checkbox" name="rejectInproxy"<%=(editBean.isRejectInproxy(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Block Access via Inproxies")%></label>
|
||||
</td><td>
|
||||
<label><input value="1" type="checkbox" name="rejectReferer"<%=(editBean.isRejectReferer(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Block Accesses containing Referers")%></label>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<label title="<%=intl._t("Deny User-Agents matching these strings (probably from inproxies)")%>"><input value="1" type="checkbox" name="rejectUserAgents"<%=(editBean.isRejectUserAgents(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Block these User-Agents")%></label>
|
||||
</td><td>
|
||||
<input type="text" id="userAgents" name="userAgents" size="20" title="<%=intl._t("comma separated, e.g. Mozilla,Opera (case-sensitive)")%>" value="<%=editBean.getUserAgents(curTunnel)%>" class="freetext" />
|
||||
</td>
|
||||
</tr>
|
||||
<% } // httpserver
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<label title="<%=intl._t("Use unique IP addresses for each connecting client (local non-SSL servers only)")%>"><input value="1" type="checkbox" name="uniqueLocal"<%=(editBean.getUniqueLocal(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Unique Local Address per Client")%></label>
|
||||
</td><td>
|
||||
<label title="<%=intl._t("Only enable if you are hosting this service on multiple routers")%>"><input value="1" type="checkbox" name="multihome"<%=(editBean.getMultihome(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Optimize for Multihoming")%></label>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Server Throttling")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td id="throttle" colspan="4">
|
||||
<table id="throttler">
|
||||
<tr>
|
||||
<th colspan="5">
|
||||
<%=intl._t("Inbound connection limits (0=unlimited)")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td></td>
|
||||
<td><b><%=intl._t("Per Minute")%></b></td>
|
||||
<td><b><%=intl._t("Per Hour")%></b></td>
|
||||
<td><b><%=intl._t("Per Day")%></b></td>
|
||||
<td class="blankColumn"></td>
|
||||
</tr><tr>
|
||||
<td><b><%=intl._t("Per Client")%></b></td>
|
||||
<td>
|
||||
<input type="text" name="limitMinute" title="<%=intl._t("Maximum number of web page requests per minute for a unique client before access to the server is blocked")%>" value="<%=editBean.getLimitMinute(curTunnel)%>" class="freetext" />
|
||||
</td><td>
|
||||
<input type="text" name="limitHour" title="<%=intl._t("Maximum number of web page requests per hour for a unique client before access to the server is blocked")%>" value="<%=editBean.getLimitHour(curTunnel)%>" class="freetext" />
|
||||
</td><td>
|
||||
<input type="text" name="limitDay" title="<%=intl._t("Maximum number of web page requests per day for a unique client before access to the server is blocked")%>" value="<%=editBean.getLimitDay(curTunnel)%>" class="freetext" />
|
||||
</td><td class="blankColumn"></td>
|
||||
</tr><tr>
|
||||
<td><b><%=intl._t("Total")%></b></td>
|
||||
<td>
|
||||
<input type="text" name="totalMinute" title="<%=intl._t("Total number of web page requests per minute before access to the server is blocked")%>" value="<%=editBean.getTotalMinute(curTunnel)%>" class="freetext" />
|
||||
</td><td>
|
||||
<input type="text" name="totalHour" title="<%=intl._t("Total number of web page requests per hour before access to the server is blocked")%>" value="<%=editBean.getTotalHour(curTunnel)%>" class="freetext" />
|
||||
</td><td>
|
||||
<input type="text" name="totalDay" title="<%=intl._t("Total number of web page requests per day before access to the server is blocked")%>" value="<%=editBean.getTotalDay(curTunnel)%>" class="freetext" />
|
||||
</td><td class="blankColumn"></td>
|
||||
</tr><tr>
|
||||
<th colspan="5"><%=intl._t("Max concurrent connections (0=unlimited)")%></th>
|
||||
</tr><tr>
|
||||
<td></td><td>
|
||||
<input type="text" name="maxStreams" title="<%=intl._t("Maximum number of simultaneous client connections")%>" value="<%=editBean.getMaxStreams(curTunnel)%>" class="freetext" />
|
||||
</td><td></td><td></td><td class="blankColumn"></td>
|
||||
</tr>
|
||||
<%
|
||||
if (("httpserver".equals(tunnelType)) || ("httpbidirserver".equals(tunnelType))) {
|
||||
%>
|
||||
<tr>
|
||||
<th colspan="5">
|
||||
<%=intl._t("POST limits (0=unlimited)")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td></td><td>
|
||||
<b><%=intl._t("Per Period")%></b>
|
||||
</td><td>
|
||||
<b><%=intl._t("Ban Duration")%></b>
|
||||
</td><td></td><td class="blankColumn"></td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("Per Client")%>
|
||||
</b>
|
||||
</td><td>
|
||||
<input type="text" name="postMax" title="<%=intl._t("Maximum number of post requests permitted for a unique client for the configured timespan")%>" value="<%=editBean.getPostMax(curTunnel)%>" class="freetext quantity"/>
|
||||
</td><td colspan="2">
|
||||
<input type="text" name="postBanTime" title="<%=intl._t("If a client exceeds the maximum number of post requests per allocated period, enforce a ban for this number of minutes")%>" value="<%=editBean.getPostBanTime(curTunnel)%>" class="freetext period"/>
|
||||
<%=intl._t("minutes")%>
|
||||
</td><td class="blankColumn"></td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("Total")%>
|
||||
</b>
|
||||
</td><td>
|
||||
<input type="text" name="postTotalMax" title="<%=intl._t("Total number of post requests permitted for the configured timespan")%>" value="<%=editBean.getPostTotalMax(curTunnel)%>" class="freetext quantity"/>
|
||||
</td><td colspan="2">
|
||||
<input type="text" name="postTotalBanTime" title="<%=intl._t("If the maximum number of post requests per allocated period is exceeded, enforce a global access ban for this number of minutes")%>" value="<%=editBean.getPostTotalBanTime(curTunnel)%>" class="freetext period"/>
|
||||
<%=intl._t("minutes")%>
|
||||
</td><td class="blankColumn"></td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("POST limit period")%>
|
||||
</b>
|
||||
</td><td colspan="2">
|
||||
<input type="text" name="postCheckTime" title="<%=intl._t("Timespan for the maximum number of post requests to be reached before a ban is triggered")%>" value="<%=editBean.getPostCheckTime(curTunnel)%>" class="freetext period"/>
|
||||
<%=intl._t("minutes")%>
|
||||
</td><td></td><td class="blankColumn"></td>
|
||||
</tr>
|
||||
<% } // httpserver
|
||||
%>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Reduce tunnel quantity when idle")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td colspan="2">
|
||||
<label><input value="1" type="checkbox" id="startOnLoad" name="reduce" <%=(editBean.getReduce(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Reduce tunnel quantity when idle to conserve resources")%></label>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("Reduced tunnel count")%>:</b>
|
||||
<input type="text" id="reduceCount" name="reduceCount" size="1" maxlength="1" title="<%=intl._t("Number of tunnels to keep open to maintain availability of service")%>" value="<%=editBean.getReduceCount(curTunnel)%>" class="freetext quantity" />
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<b><%=intl._t("Idle period")%>:</b>
|
||||
<input type="text" id="reduceTime" name="reduceTime" size="4" maxlength="4" title="<%=intl._t("Period of inactivity before tunnel number is reduced")%>" value="<%=editBean.getReduceTime(curTunnel)%>" class="freetext period" />
|
||||
<%=intl._t("minutes")%>
|
||||
</td>
|
||||
</tr>
|
||||
<% /***************** %>
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
@@ -925,6 +734,239 @@
|
||||
} // ab64
|
||||
} // currentSigType
|
||||
%>
|
||||
</table>
|
||||
<table class="tunnelConfig" id="accessOptions">
|
||||
<tr>
|
||||
<th colspan="8" class="tableTop">
|
||||
<%=intl._t("Tunnel Access Control Options")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<th colspan="8">
|
||||
<%=intl._t("Restricted Access List")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td colspan="8">
|
||||
<span class="multiOption"><label title="<%=intl._t("Allow all clients to connect to this service")%>"><input value="0" type="radio" name="accessMode"<%=(editBean.getAccessMode(curTunnel).equals("0") ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Disable")%></label></span>
|
||||
<span class="multiOption"><label title="<%=intl._t("Prevent listed clients from connecting to this service")%>"><input value="2" type="radio" name="accessMode"<%=(editBean.getAccessMode(curTunnel).equals("2") ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Blacklist")%></label></span>
|
||||
<span class="multiOption"><label title="<%=intl._t("Only allow listed clients to connect to this service")%>"><input value="1" type="radio" name="accessMode"<%=(editBean.getAccessMode(curTunnel).equals("1") ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Whitelist")%></label></span>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td colspan="8">
|
||||
<b><%=intl._t("Access List Description")%></b> (<%=intl._t("Specify clients, 1 per line")%>)
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td colspan="8">
|
||||
<textarea rows="2" style="height: 8em;" cols="60" name="accessList" title="<%=intl._t("Control access to this service")%>" wrap="off" spellcheck="false"><%=editBean.getAccessList(curTunnel)%></textarea>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td colspan="8">
|
||||
<b><%=intl._t("Filter Definition File")%></b>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td colspan="8">
|
||||
<%=intl._t("You can define an advanced filter for this tunnel.")%> (<a href="http://i2p-projekt.i2p/spec/filter-format" target="_blank"><%=intl._t("Format Specification")%></a>)
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td colspan="8">
|
||||
<label for="filterDefinition"><%=intl._t("Absolute path to file containing filter definition")%></label>
|
||||
<input type="text" id="filterDefinition" name="filterDefinition" value="<%=editBean.getFilterDefinition(curTunnel)%>" size="80"/>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<th colspan="8">
|
||||
<%=intl._t("Server Access Options")%>
|
||||
</th>
|
||||
</tr>
|
||||
<%
|
||||
if (("httpserver".equals(tunnelType)) || ("httpbidirserver".equals(tunnelType))) {
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<label title="<%=intl._t("Prevent clients from accessing this service via an inproxy")%>"><input value="1" type="checkbox" name="rejectInproxy"<%=(editBean.isRejectInproxy(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Block Access via Inproxies")%></label>
|
||||
</td><td colspan="7">
|
||||
<label><input value="1" type="checkbox" name="rejectReferer"<%=(editBean.isRejectReferer(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Block Accesses containing Referers")%></label>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<label title="<%=intl._t("Deny User-Agents matching these strings (probably from inproxies)")%>"><input value="1" type="checkbox" name="rejectUserAgents"<%=(editBean.isRejectUserAgents(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Block these User-Agents")%></label>
|
||||
</td><td colspan="7">
|
||||
<input type="text" id="userAgents" name="userAgents" size="20" title="<%=intl._t("comma separated, e.g. Mozilla,Opera (case-sensitive)")%>" value="<%=editBean.getUserAgents(curTunnel)%>" class="freetext" />
|
||||
</td>
|
||||
</tr>
|
||||
<% } // httpserver
|
||||
%>
|
||||
<tr>
|
||||
<td>
|
||||
<label title="<%=intl._t("Use unique IP addresses for each connecting client (local non-SSL servers only)")%>"><input value="1" type="checkbox" name="uniqueLocal"<%=(editBean.getUniqueLocal(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Unique Local Address per Client")%></label>
|
||||
</td><td colspan="7">
|
||||
<label title="<%=intl._t("Only enable if you are hosting this service on multiple routers")%>"><input value="1" type="checkbox" name="multihome"<%=(editBean.getMultihome(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Optimize for Multihoming")%></label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="tunnelConfig" id="performanceOptions">
|
||||
<tr>
|
||||
<th colspan="5" class="tableTop">
|
||||
<%=intl._t("Tunnel Performance Options")%>
|
||||
</th>
|
||||
</tr>
|
||||
<%
|
||||
if (!"streamrserver".equals(tunnelType)) {
|
||||
%>
|
||||
<tr>
|
||||
<th colspan="5">
|
||||
<%=intl._t("Profile")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td colspan="5">
|
||||
<select id="profile" name="profile" title="<%=intl._t("Connection Profile")%>" class="selectbox">
|
||||
<% boolean interactiveProfile = editBean.isInteractive(curTunnel);
|
||||
%><option <%=(interactiveProfile == true ? "selected=\"selected\" " : "")%>value="interactive"><%=intl._t("interactive connection")%> </option>
|
||||
<option <%=(interactiveProfile == false ? "selected=\"selected\" " : "")%>value="bulk"><%=intl._t("bulk connection (downloads/websites/BT)")%> </option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} /* !streamrserver */
|
||||
%>
|
||||
<tr>
|
||||
<th colspan="5">
|
||||
<%=intl._t("Reduce tunnel quantity when idle")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td colspan="5">
|
||||
<label><input value="1" type="checkbox" id="startOnLoad" name="reduce" <%=(editBean.getReduce(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<%=intl._t("Reduce tunnel quantity when idle to conserve resources")%></label>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("Reduced tunnel count")%>:</b>
|
||||
<input type="text" id="reduceCount" name="reduceCount" size="1" maxlength="1" title="<%=intl._t("Number of tunnels to keep open to maintain availability of service")%>" value="<%=editBean.getReduceCount(curTunnel)%>" class="freetext quantity" />
|
||||
</td>
|
||||
|
||||
<td colspan="4">
|
||||
<b><%=intl._t("Idle period")%>:</b>
|
||||
<input type="text" id="reduceTime" name="reduceTime" size="4" maxlength="4" title="<%=intl._t("Period of inactivity before tunnel number is reduced")%>" value="<%=editBean.getReduceTime(curTunnel)%>" class="freetext period" />
|
||||
<%=intl._t("minutes")%>
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
if (("httpserver".equals(tunnelType)) || ("httpbidirserver".equals(tunnelType))) {
|
||||
%>
|
||||
<tr>
|
||||
<th colspan="8">
|
||||
<%=intl._t("Server Throttling")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td id="throttle" colspan="8">
|
||||
<table id="throttler">
|
||||
<tr>
|
||||
<th colspan="5">
|
||||
<%=intl._t("Inbound connection limits (0=unlimited)")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td></td>
|
||||
<td><b><%=intl._t("Per Minute")%></b></td>
|
||||
<td><b><%=intl._t("Per Hour")%></b></td>
|
||||
<td><b><%=intl._t("Per Day")%></b></td>
|
||||
<td class="blankColumn"></td>
|
||||
</tr><tr>
|
||||
<td><b><%=intl._t("Per Client")%></b></td>
|
||||
<td>
|
||||
<input type="text" name="limitMinute" title="<%=intl._t("Maximum number of web page requests per minute for a unique client before access to the server is blocked")%>" value="<%=editBean.getLimitMinute(curTunnel)%>" class="freetext" />
|
||||
</td><td>
|
||||
<input type="text" name="limitHour" title="<%=intl._t("Maximum number of web page requests per hour for a unique client before access to the server is blocked")%>" value="<%=editBean.getLimitHour(curTunnel)%>" class="freetext" />
|
||||
</td><td>
|
||||
<input type="text" name="limitDay" title="<%=intl._t("Maximum number of web page requests per day for a unique client before access to the server is blocked")%>" value="<%=editBean.getLimitDay(curTunnel)%>" class="freetext" />
|
||||
</td><td class="blankColumn"></td>
|
||||
</tr><tr>
|
||||
<td><b><%=intl._t("Total")%></b></td>
|
||||
<td>
|
||||
<input type="text" name="totalMinute" title="<%=intl._t("Total number of web page requests per minute before access to the server is blocked")%>" value="<%=editBean.getTotalMinute(curTunnel)%>" class="freetext" />
|
||||
</td><td>
|
||||
<input type="text" name="totalHour" title="<%=intl._t("Total number of web page requests per hour before access to the server is blocked")%>" value="<%=editBean.getTotalHour(curTunnel)%>" class="freetext" />
|
||||
</td><td>
|
||||
<input type="text" name="totalDay" title="<%=intl._t("Total number of web page requests per day before access to the server is blocked")%>" value="<%=editBean.getTotalDay(curTunnel)%>" class="freetext" />
|
||||
</td><td class="blankColumn"></td>
|
||||
</tr><tr>
|
||||
<th colspan="5"><%=intl._t("Max concurrent connections (0=unlimited)")%></th>
|
||||
</tr><tr>
|
||||
<td></td><td>
|
||||
<input type="text" name="maxStreams" title="<%=intl._t("Maximum number of simultaneous client connections")%>" value="<%=editBean.getMaxStreams(curTunnel)%>" class="freetext" />
|
||||
</td><td></td><td></td><td class="blankColumn"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<th colspan="5">
|
||||
<%=intl._t("POST limits (0=unlimited)")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td></td><td>
|
||||
<b><%=intl._t("Per Period")%></b>
|
||||
</td><td>
|
||||
<b><%=intl._t("Ban Duration")%></b>
|
||||
</td><td></td><td class="blankColumn"></td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("Per Client")%>
|
||||
</b>
|
||||
</td><td>
|
||||
<input type="text" name="postMax" title="<%=intl._t("Maximum number of post requests permitted for a unique client for the configured timespan")%>" value="<%=editBean.getPostMax(curTunnel)%>" class="freetext quantity"/>
|
||||
</td><td colspan="2">
|
||||
<input type="text" name="postBanTime" title="<%=intl._t("If a client exceeds the maximum number of post requests per allocated period, enforce a ban for this number of minutes")%>" value="<%=editBean.getPostBanTime(curTunnel)%>" class="freetext period"/>
|
||||
<%=intl._t("minutes")%>
|
||||
</td><td class="blankColumn"></td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("Total")%>
|
||||
</b>
|
||||
</td><td>
|
||||
<input type="text" name="postTotalMax" title="<%=intl._t("Total number of post requests permitted for the configured timespan")%>" value="<%=editBean.getPostTotalMax(curTunnel)%>" class="freetext quantity"/>
|
||||
</td><td colspan="2">
|
||||
<input type="text" name="postTotalBanTime" title="<%=intl._t("If the maximum number of post requests per allocated period is exceeded, enforce a global access ban for this number of minutes")%>" value="<%=editBean.getPostTotalBanTime(curTunnel)%>" class="freetext period"/>
|
||||
<%=intl._t("minutes")%>
|
||||
</td><td class="blankColumn"></td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("POST limit period")%>
|
||||
</b>
|
||||
</td><td colspan="2">
|
||||
<input type="text" name="postCheckTime" title="<%=intl._t("Timespan for the maximum number of post requests to be reached before a ban is triggered")%>" value="<%=editBean.getPostCheckTime(curTunnel)%>" class="freetext period"/>
|
||||
<%=intl._t("minutes")%>
|
||||
</td><td></td><td class="blankColumn"></td>
|
||||
</tr>
|
||||
<% } // httpserver
|
||||
%>
|
||||
<%
|
||||
if (!editBean.isRouterContext()) {
|
||||
%>
|
||||
</table>
|
||||
<table class="tunnelConfig">
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Router I2CP Address")%>
|
||||
</th>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<b><%=intl._t("Host")%>:</b>
|
||||
<input type="text" id="clientHost" name="clientHost" size="20" title="<%=intl._t("I2CP Hostname or IP")%>" value="<%=editBean.getI2CPHost(curTunnel)%>" class="freetext" />
|
||||
</td><td>
|
||||
<b><%=intl._t("Port")%>:</b>
|
||||
<input type="text" id="clientPort" name="clientport" size="20" title="<%=intl._t("I2CP Port Number")%>" value="<%=editBean.getI2CPPort(curTunnel)%>" class="freetext" />
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
} // !isRouterContext
|
||||
%>
|
||||
</table>
|
||||
<table class="tunnelConfig" id="customOptions">
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<%=intl._t("Custom options")%>
|
||||
@@ -941,4 +983,4 @@
|
||||
<button id="controlSave" class="control" type="submit" name="action" value="Save changes"><%=intl._t("Save")%></button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</table>
|
||||
|
||||
53
apps/routerconsole/jsp/js/tableSlider.js
Normal file
53
apps/routerconsole/jsp/js/tableSlider.js
Normal file
@@ -0,0 +1,53 @@
|
||||
var hideableTables = document.querySelectorAll("table.tunnelConfig th");
|
||||
|
||||
hideableTables.forEach(function(configTable) {
|
||||
configTable.onclick = function() {
|
||||
function lookupTableRow() {
|
||||
for (var i = 0, row; (row = configTable.offsetParent.rows[i]); i++) {
|
||||
if (configTable.parentNode == row) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
var collapseme = false;
|
||||
for (var i = 0, row; (row = configTable.offsetParent.rows[i]); i++) {
|
||||
var l = lookupTableRow();
|
||||
if (i > l) {
|
||||
if (collapseme) {
|
||||
if (row.firstElementChild.localName != "th") {
|
||||
if (
|
||||
!row.firstElementChild.classList.contains("buttons")
|
||||
) {
|
||||
row.style.visibility = "collapse";
|
||||
}
|
||||
}
|
||||
} else if (row.style.visibility == "visible") {
|
||||
if (row.firstElementChild.localName != "th") {
|
||||
if (
|
||||
!row.firstElementChild.classList.contains("buttons")
|
||||
) {
|
||||
row.style.visibility = "collapse";
|
||||
collapseme = true;
|
||||
configTable.classList.remove("tunnelConfigExpanded");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
row.style.visibility = "visible";
|
||||
configTable.classList.add("tunnelConfigExpanded");
|
||||
}
|
||||
}
|
||||
}
|
||||
configTable.parentNode.style.visibility = "visible";
|
||||
};
|
||||
for (var i = 0, row; (row = configTable.offsetParent.rows[i]); i++) {
|
||||
if (row.firstElementChild.localName != "th") {
|
||||
if (!row.firstElementChild.classList.contains("buttons")) {
|
||||
row.style.visibility = "collapse";
|
||||
}
|
||||
}
|
||||
}
|
||||
for (var i = 0, row; (row = hideableTables[0].offsetParent.rows[i]); i++) {
|
||||
row.style.visibility = "visible";
|
||||
}
|
||||
});
|
||||
@@ -245,10 +245,15 @@ h3 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.panel .tunnelConfig {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
th.tableTop {
|
||||
font-size: 115%;
|
||||
}
|
||||
|
||||
th {
|
||||
/*background: #000;
|
||||
background: linear-gradient(to bottom, #1a261a 0%, #223022 7%, #212f21 9%, #172317 21%, #091109 49%, #050d05 50%, #020602 51%, #010301 53%, #000000 56%, #000000 100%);
|
||||
background: linear-gradient(to bottom, rgba(0,0,0,0) 50%, #000 50%), repeating-linear-gradient(to right, rgba(0,0,0,0.5) 1px, rgba(0,0,0,0.5) 2px, rgba(0,16,0,0.5) 2px, rgba(0,16,0,0.5) 4px), linear-gradient(to bottom, #002000, #000 75%);*/
|
||||
padding: 7px 5px;
|
||||
border-top: 1px solid #7778bf;
|
||||
border-bottom: 1px solid #7778bf;
|
||||
@@ -299,6 +304,15 @@ td.infohelp {
|
||||
border-right: 1px solid #433e47;
|
||||
}
|
||||
|
||||
.tunnelConfigExpanded {
|
||||
background: url(images/dropdown_active.png) left center no-repeat #1f1a24 !important;
|
||||
}
|
||||
|
||||
table.tunnelConfig th {
|
||||
background: url(images/dropdown.png) left center no-repeat #1f1a24;
|
||||
padding-left: 18px;
|
||||
}
|
||||
|
||||
#clientTunnels tr, #serverTunnels tr, .tunnelConfig tr {
|
||||
background: #1F1A24;
|
||||
}
|
||||
|
||||
@@ -413,9 +413,17 @@ h2, h3 {
|
||||
background: repeating-linear-gradient(135deg, rgba(255,255,255,0.5) 2px, rgba(240, 240, 255, 0.3) 3px, #fff 5px) #fff;
|
||||
}
|
||||
|
||||
.panel .tunnelConfig {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
th.tableTop {
|
||||
font-size: 115%;
|
||||
}
|
||||
|
||||
th {
|
||||
background: #eef url(images/header.png) center center repeat-x;
|
||||
background: linear-gradient(to bottom, #fff 50%, rgba(238, 238, 255, 0.2) 50%, #eef 100%) !important;
|
||||
/*background: #eef url(images/header.png) center center repeat-x;*/
|
||||
background: linear-gradient(to bottom, #fff 50%, rgba(238, 238, 255, 0.2) 50%, #eef 100%);
|
||||
padding: 6px 5px;
|
||||
text-align: left;
|
||||
border-top: 1px solid #7778bf;
|
||||
@@ -483,6 +491,15 @@ td.infohelp {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.tunnelConfigExpanded {
|
||||
background: url(images/dropdown_active.png) left center no-repeat #f8f8ff !important;
|
||||
}
|
||||
|
||||
table.tunnelConfig th {
|
||||
background: url(images/dropdown.png) left center no-repeat #f8f8ff;
|
||||
padding-left: 18px;
|
||||
}
|
||||
|
||||
.tunnelProperties {
|
||||
background: #fafaff !important;
|
||||
}
|
||||
@@ -894,10 +911,14 @@ input.tunnelName, input.tunnelDescriptionText, #userAgents, .freetext.tunnelDesc
|
||||
|
||||
/* more space */
|
||||
|
||||
.freetext, .tunnelConfig textarea, #customOptions, #userAgents, #hostField {
|
||||
.freetext, .tunnelConfig textarea, #userAgents, #hostField {
|
||||
margin: 5px !important;
|
||||
}
|
||||
|
||||
#customOptions {
|
||||
margin-top: 15px !important;
|
||||
}
|
||||
|
||||
#tunnelDepth, #tunnelVariance, #tunnelQuantity, #tunnelBackupQuantity,
|
||||
#tunnelDepthOut, #tunnelVarianceOut, #tunnelQuantityOut, #tunnelBackupQuantityOut,
|
||||
#leasesetKey {
|
||||
@@ -919,7 +940,7 @@ textarea[name="accessList"], #hostField, #localDestination, .authentication {
|
||||
height: 30px !important;
|
||||
}
|
||||
|
||||
#customOptions, #userAgents, #leasesetKey {
|
||||
#userAgents, #leasesetKey {
|
||||
width: calc(100% - 20px) !important;
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 235 B After Width: | Height: | Size: 377 B |
Reference in New Issue
Block a user