forked from I2P_Developers/i2p.i2p
NedDb advanced lookup layout and theme improvements
This commit is contained in:
@ -233,7 +233,7 @@ public class NetDbHelper extends HelperBase {
|
|||||||
}
|
}
|
||||||
if (!span)
|
if (!span)
|
||||||
buf.append("</center>");
|
buf.append("</center>");
|
||||||
buf.append("</div>");
|
buf.append("</div>\n");
|
||||||
_out.write(buf.toString());
|
_out.write(buf.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -241,23 +241,25 @@ public class NetDbHelper extends HelperBase {
|
|||||||
* @since 0.9.28
|
* @since 0.9.28
|
||||||
*/
|
*/
|
||||||
private void renderLookupForm() throws IOException {
|
private void renderLookupForm() throws IOException {
|
||||||
_out.write("<form action=\"/netdb\" method=\"GET\"><p><b>Pick One</b></p>\n" +
|
_out.write("<form action=\"/netdb\" method=\"GET\">\n" +
|
||||||
"Caps <input type=\"text\" name=\"caps\">e.g. f or XOfR<br>\n" +
|
"<table id=\"netdblookup\"><tr><th colspan=\"3\">Network Database Search</th></tr>\n" +
|
||||||
"Cost <input type=\"text\" name=\"cost\"><br>\n" +
|
"<tr><td colspan=\"3\" class=\"subheading\"><b>Select one search field <i>only</i>:</b></td></tr>\n" +
|
||||||
"Country code <input type=\"text\" name=\"c\">e.g. ru<br>\n" +
|
"<tr><td>Capabilities:</td><td><input type=\"text\" name=\"caps\"></td><td>e.g. f or XOfR</td></tr>\n" +
|
||||||
"Family <input type=\"text\" name=\"fam\"><br>\n" +
|
"<tr><td>Cost:</td><td><input type=\"text\" name=\"cost\"></td><td></td></tr>\n" +
|
||||||
"Hash prefix <input type=\"text\" name=\"r\"><br>\n" +
|
"<tr><td>Country Code:</td><td><input type=\"text\" name=\"c\"></td><td>e.g. ru</td></tr>\n" +
|
||||||
"IP <input type=\"text\" name=\"ip\">host name, IPv4, or IPv6, /24,/16,/8 suffixes optional for IPv4<br>\n" +
|
"<tr><td>Router Family:</td><td><input type=\"text\" name=\"fam\"></td><td></td></tr>\n" +
|
||||||
"IPv6 Prefix <input type=\"text\" name=\"ipv6\"><br>\n" +
|
"<tr><td>Hash Prefix:</td><td><input type=\"text\" name=\"r\"></td><td></td></tr>\n" +
|
||||||
"MTU <input type=\"text\" name=\"mtu\"><br>\n" +
|
"<tr><td>IP or Hostname:</td><td><input type=\"text\" name=\"ip\"></td><td>host name, IPv4, or IPv6, /24,/16,/8 suffixes optional for IPv4</td></tr>\n" +
|
||||||
"Port <input type=\"text\" name=\"port\"><br>\n" +
|
"<tr><td>IPv6 Prefix:</td><td><input type=\"text\" name=\"ipv6\"></td><td></td></tr>\n" +
|
||||||
"Sig Type <input type=\"text\" name=\"type\"><br>\n" +
|
"<tr><td>MTU:</td><td><input type=\"text\" name=\"mtu\"></td><td></td></tr>\n" +
|
||||||
"SSU Caps <input type=\"text\" name=\"ssucaps\"><br>\n" +
|
"<tr><td>Port Number:</td><td><input type=\"text\" name=\"port\"></td><td></td></tr>\n" +
|
||||||
"Version <input type=\"text\" name=\"v\"><br>\n" +
|
"<tr><td>Signature Type:</td><td><input type=\"text\" name=\"type\"></td><td></td></tr>\n" +
|
||||||
"<p><b>Add Sybil analysis (must pick one above):</b></p>\n" +
|
"<tr><td>SSU Capabilities:</td><td><input type=\"text\" name=\"ssucaps\"></td><td></td></tr>\n" +
|
||||||
"Sybil close to <input type=\"text\" name=\"sybil2\">Router hash, dest hash, b32, or from address book<br>\n" +
|
"<tr><td>Router Version:</td><td><input type=\"text\" name=\"v\"></td><td></td></tr>\n" +
|
||||||
"or Sybil close to this router <input type=\"checkbox\" class=\"optbox\" value=\"1\" name=\"sybil\"><br>" +
|
"<tr><td colspan=\"3\" class=\"subheading\"><b>Add Sybil analysis (must pick one above):</b></td></tr>\n" +
|
||||||
"<p><input type=\"submit\" class=\"search\" value=\"Lookup\"></p>" +
|
"<tr><td>Sybil close to:</td><td><input type=\"text\" name=\"sybil2\"></td><td>Router hash, dest hash, b32, or from address book</td>\n" +
|
||||||
"</form>\n");
|
"<tr><td>or Sybil close to this router:</td><td><input type=\"checkbox\" class=\"optbox\" value=\"1\" name=\"sybil\"></td><td></td></tr>\n" +
|
||||||
|
"<tr><td colspan=\"3\" class=\"optionsave\"><button type=\"submit\" class=\"search\" value=\"Lookup\">Lookup</button></td></tr>\n" +
|
||||||
|
"</table>\n</form>\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -521,8 +521,9 @@ class NetDbRenderer {
|
|||||||
buf.append("<tr><th align=\"left\">" + _t("Country") + "</th><th>" + _t("Count") + "</th></tr>\n");
|
buf.append("<tr><th align=\"left\">" + _t("Country") + "</th><th>" + _t("Count") + "</th></tr>\n");
|
||||||
for (String country : countryList) {
|
for (String country : countryList) {
|
||||||
int num = countries.count(country);
|
int num = countries.count(country);
|
||||||
buf.append("<tr><td><img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase(Locale.US)).append("\"");
|
buf.append("<tr><td><a href=\"/netdb?c=").append(country).append("\">");
|
||||||
buf.append(" src=\"/flags.jsp?c=").append(country).append("\"> <a href=\"/netdb?c=").append(country).append("\">");
|
buf.append("<img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase(Locale.US)).append("\"");
|
||||||
|
buf.append(" src=\"/flags.jsp?c=").append(country).append("\">");
|
||||||
buf.append(getTranslatedCountry(country));
|
buf.append(getTranslatedCountry(country));
|
||||||
buf.append("</a></td><td align=\"center\">").append(num).append("</td></tr>\n");
|
buf.append("</a></td><td align=\"center\">").append(num).append("</td></tr>\n");
|
||||||
}
|
}
|
||||||
@ -616,9 +617,10 @@ class NetDbRenderer {
|
|||||||
.append("<td colspan=\"2\">");
|
.append("<td colspan=\"2\">");
|
||||||
String country = _context.commSystem().getCountry(info.getIdentity().getHash());
|
String country = _context.commSystem().getCountry(info.getIdentity().getHash());
|
||||||
if(country != null) {
|
if(country != null) {
|
||||||
|
buf.append("<a href=\"/netdb?c=").append(country).append("\">");
|
||||||
buf.append("<img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase(Locale.US)).append('\"');
|
buf.append("<img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase(Locale.US)).append('\"');
|
||||||
buf.append(" title=\"").append(getTranslatedCountry(country)).append('\"');
|
buf.append(" title=\"").append(getTranslatedCountry(country)).append('\"');
|
||||||
buf.append(" src=\"/flags.jsp?c=").append(country).append("\"> ");
|
buf.append(" src=\"/flags.jsp?c=").append(country).append("\"> ").append("</a>");
|
||||||
}
|
}
|
||||||
for (RouterAddress addr : info.getAddresses()) {
|
for (RouterAddress addr : info.getAddresses()) {
|
||||||
String style = addr.getTransportStyle();
|
String style = addr.getTransportStyle();
|
||||||
|
@ -832,7 +832,7 @@ public class SummaryHelper extends HelperBase {
|
|||||||
if (allowReseed()) {
|
if (allowReseed()) {
|
||||||
if (reseedInProgress) {
|
if (reseedInProgress) {
|
||||||
// While reseed occurring, show status message instead
|
// While reseed occurring, show status message instead
|
||||||
buf.append("<i>").append(_context.netDb().reseedChecker().getStatus()).append("</i><br>");
|
buf.append("<div class=\"sb_notice\"><i>").append(_context.netDb().reseedChecker().getStatus()).append("</i></div>");
|
||||||
} else {
|
} else {
|
||||||
// While no reseed occurring, show reseed link
|
// While no reseed occurring, show reseed link
|
||||||
long nonce = _context.random().nextLong();
|
long nonce = _context.random().nextLong();
|
||||||
@ -849,7 +849,7 @@ public class SummaryHelper extends HelperBase {
|
|||||||
if (!reseedInProgress) {
|
if (!reseedInProgress) {
|
||||||
String reseedErrorMessage = _context.netDb().reseedChecker().getError();
|
String reseedErrorMessage = _context.netDb().reseedChecker().getError();
|
||||||
if (reseedErrorMessage.length() > 0) {
|
if (reseedErrorMessage.length() > 0) {
|
||||||
buf.append("<i>").append(reseedErrorMessage).append("</i><br>");
|
buf.append("<div class=\"sb_notice\"><i>").append(reseedErrorMessage).append("</i></div>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (buf.length() <= 0)
|
if (buf.length() <= 0)
|
||||||
|
@ -218,12 +218,12 @@ class SybilRenderer {
|
|||||||
|
|
||||||
// Distance to our router analysis
|
// Distance to our router analysis
|
||||||
buf.append("<h3 id=\"ritoday\" class=\"sybils\">Closest Floodfills to Our Routing Key (Where we Store our RI)</h3>");
|
buf.append("<h3 id=\"ritoday\" class=\"sybils\">Closest Floodfills to Our Routing Key (Where we Store our RI)</h3>");
|
||||||
buf.append("<p><a href=\"/netdb?caps=f&sybil\">See all</a></p>");
|
buf.append("<p class=\"sybil_info\"><a href=\"/netdb?caps=f&sybil\">See all</a></p>");
|
||||||
renderRouterInfoHTML(out, buf, ourRKey, avgMinDist, ris, points);
|
renderRouterInfoHTML(out, buf, ourRKey, avgMinDist, ris, points);
|
||||||
RouterKeyGenerator rkgen = _context.routerKeyGenerator();
|
RouterKeyGenerator rkgen = _context.routerKeyGenerator();
|
||||||
Hash nkey = rkgen.getNextRoutingKey(us);
|
Hash nkey = rkgen.getNextRoutingKey(us);
|
||||||
buf.append("<h3 id=\"ritmrw\" class=\"sybils\">Closest Floodfills to Tomorrow's Routing Key (Where we will Store our RI)</h3>");
|
buf.append("<h3 id=\"ritmrw\" class=\"sybils\">Closest Floodfills to Tomorrow's Routing Key (Where we will Store our RI)</h3>");
|
||||||
buf.append("<p><a href=\"/netdb?caps=f&sybil\">See all</a></p>");
|
buf.append("<p class=\"sybil_info\"><a href=\"/netdb?caps=f&sybil\">See all</a></p>");
|
||||||
renderRouterInfoHTML(out, buf, nkey, avgMinDist, ris, points);
|
renderRouterInfoHTML(out, buf, nkey, avgMinDist, ris, points);
|
||||||
|
|
||||||
buf.append("<h3 id=\"dht\" class=\"sybils\">Closest Floodfills to Our Router Hash (DHT Neighbors if we are Floodfill)</h3>");
|
buf.append("<h3 id=\"dht\" class=\"sybils\">Closest Floodfills to Our Router Hash (DHT Neighbors if we are Floodfill)</h3>");
|
||||||
@ -247,11 +247,11 @@ class SybilRenderer {
|
|||||||
TunnelPool in = clientInboundPools.get(client);
|
TunnelPool in = clientInboundPools.get(client);
|
||||||
String name = (in != null) ? in.getSettings().getDestinationNickname() : client.toBase64().substring(0,4);
|
String name = (in != null) ? in.getSettings().getDestinationNickname() : client.toBase64().substring(0,4);
|
||||||
buf.append("<h3 class=\"sybils\">Closest floodfills to the Routing Key for " + DataHelper.escapeHTML(name) + " (where we store our LS)</h3>");
|
buf.append("<h3 class=\"sybils\">Closest floodfills to the Routing Key for " + DataHelper.escapeHTML(name) + " (where we store our LS)</h3>");
|
||||||
buf.append("<p><a href=\"/netdb?caps=f&sybil=" + ls.getHash().toBase64() + "\">See all</a></p>");
|
buf.append("<p class=\"sybil_info\"><a href=\"/netdb?caps=f&sybil=" + ls.getHash().toBase64() + "\">See all</a></p>");
|
||||||
renderRouterInfoHTML(out, buf, rkey, avgMinDist, ris, points);
|
renderRouterInfoHTML(out, buf, rkey, avgMinDist, ris, points);
|
||||||
nkey = rkgen.getNextRoutingKey(ls.getHash());
|
nkey = rkgen.getNextRoutingKey(ls.getHash());
|
||||||
buf.append("<h3 class=\"sybils\">Closest floodfills to Tomorrow's Routing Key for " + DataHelper.escapeHTML(name) + " (where we will store our LS)</h3>");
|
buf.append("<h3 class=\"sybils\">Closest floodfills to Tomorrow's Routing Key for " + DataHelper.escapeHTML(name) + " (where we will store our LS)</h3>");
|
||||||
buf.append("<p><a href=\"/netdb?caps=f&sybil=" + ls.getHash().toBase64() + "\">See all</a></p>");
|
buf.append("<p class=\"sybil_info\"><a href=\"/netdb?caps=f&sybil=" + ls.getHash().toBase64() + "\">See all</a></p>");
|
||||||
renderRouterInfoHTML(out, buf, nkey, avgMinDist, ris, points);
|
renderRouterInfoHTML(out, buf, nkey, avgMinDist, ris, points);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -406,7 +406,7 @@ class SybilRenderer {
|
|||||||
if (ip == null)
|
if (ip == null)
|
||||||
continue;
|
continue;
|
||||||
if (ip[0] == ourIP[0] && ip[1] == ourIP[1]) {
|
if (ip[0] == ourIP[0] && ip[1] == ourIP[1]) {
|
||||||
buf.append("<p id=\"sybil_floodfill\"><b>");
|
buf.append("<p id=\"sybil_info\"><b>");
|
||||||
if (ip[2] == ourIP[2]) {
|
if (ip[2] == ourIP[2]) {
|
||||||
if (ip[3] == ourIP[3]) {
|
if (ip[3] == ourIP[3]) {
|
||||||
buf.append("Same IP as us");
|
buf.append("Same IP as us");
|
||||||
@ -457,7 +457,7 @@ class SybilRenderer {
|
|||||||
int i2 = (i >> 8) & 0xff;
|
int i2 = (i >> 8) & 0xff;
|
||||||
int i3 = i & 0xff;
|
int i3 = i & 0xff;
|
||||||
String sip = i0 + "." + i1 + '.' + i2 + '.' + i3;
|
String sip = i0 + "." + i1 + '.' + i2 + '.' + i3;
|
||||||
buf.append("<p class=\"sybil floodfill\"><b>").append(count).append(" floodfills with IP <a href=\"/netdb?ip=")
|
buf.append("<p class=\"sybil_info\"><b>").append(count).append(" floodfills with IP <a href=\"/netdb?ip=")
|
||||||
.append(sip).append("&sybil\">").append(sip)
|
.append(sip).append("&sybil\">").append(sip)
|
||||||
.append("</a>:</b></p>");
|
.append("</a>:</b></p>");
|
||||||
for (RouterInfo info : ris) {
|
for (RouterInfo info : ris) {
|
||||||
@ -510,7 +510,7 @@ class SybilRenderer {
|
|||||||
int i1 = (i >> 8) & 0xff;
|
int i1 = (i >> 8) & 0xff;
|
||||||
int i2 = i & 0xff;
|
int i2 = i & 0xff;
|
||||||
String sip = i0 + "." + i1 + '.' + i2 + ".0/24";
|
String sip = i0 + "." + i1 + '.' + i2 + ".0/24";
|
||||||
buf.append("<p class=\"sybil floodfill\"><b>").append(count).append(" floodfills with IP <a href=\"/netdb?ip=")
|
buf.append("<p class=\"sybil_info\"><b>").append(count).append(" floodfills with IP <a href=\"/netdb?ip=")
|
||||||
.append(sip).append("&sybil\">").append(sip)
|
.append(sip).append("&sybil\">").append(sip)
|
||||||
.append("</a>:</b></p>");
|
.append("</a>:</b></p>");
|
||||||
for (RouterInfo info : ris) {
|
for (RouterInfo info : ris) {
|
||||||
@ -560,7 +560,7 @@ class SybilRenderer {
|
|||||||
int i0 = i >> 8;
|
int i0 = i >> 8;
|
||||||
int i1 = i & 0xff;
|
int i1 = i & 0xff;
|
||||||
String sip = i0 + "." + i1 + ".0/16";
|
String sip = i0 + "." + i1 + ".0/16";
|
||||||
buf.append("<p class=\"sybil floodfill\"><b>").append(count).append(" floodfills with IP <a href=\"/netdb?ip=")
|
buf.append("<p class=\"sybil_info\"><b>").append(count).append(" floodfills with IP <a href=\"/netdb?ip=")
|
||||||
.append(sip).append("&sybil\">").append(sip)
|
.append(sip).append("&sybil\">").append(sip)
|
||||||
.append("</a></b></p>");
|
.append("</a></b></p>");
|
||||||
for (RouterInfo info : ris) {
|
for (RouterInfo info : ris) {
|
||||||
@ -728,11 +728,11 @@ class SybilRenderer {
|
|||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
//buf.append("<p><b>Not to worry, but above router is closer than average minimum distance " + fmt.format(avgMinDist) + "</b></p>");
|
//buf.append("<p><b>Not to worry, but above router is closer than average minimum distance " + fmt.format(avgMinDist) + "</b></p>");
|
||||||
} else if (i == 1) {
|
} else if (i == 1) {
|
||||||
buf.append("<p><b>Not to worry, but above routers are closer than average minimum distance " + fmt.format(avgMinDist) + "</b></p>");
|
buf.append("<p class=\"sybil_info\"><b>Not to worry, but above routers are closer than average minimum distance " + fmt.format(avgMinDist) + "</b></p>");
|
||||||
} else if (i == 2) {
|
} else if (i == 2) {
|
||||||
buf.append("<p><b>Possible Sybil Warning - above routers are closer than average minimum distance " + fmt.format(avgMinDist) + "</b></p>");
|
buf.append("<p class=\"sybil_info\"><b>Possible Sybil Warning - above routers are closer than average minimum distance " + fmt.format(avgMinDist) + "</b></p>");
|
||||||
} else {
|
} else {
|
||||||
buf.append("<p><b>Major Sybil Warning - above router is closer than average minimum distance " + fmt.format(avgMinDist) + "</b></p>");
|
buf.append("<p class=\"sybil_info\"><b>Major Sybil Warning - above router is closer than average minimum distance " + fmt.format(avgMinDist) + "</b></p>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// this is dumb because they are already sorted
|
// this is dumb because they are already sorted
|
||||||
@ -884,9 +884,10 @@ class SybilRenderer {
|
|||||||
buf.append("<tr><td><b>" + _t("Addresses") + ":</b></td><td colspan=\"3\">");
|
buf.append("<tr><td><b>" + _t("Addresses") + ":</b></td><td colspan=\"3\">");
|
||||||
String country = _context.commSystem().getCountry(info.getIdentity().getHash());
|
String country = _context.commSystem().getCountry(info.getIdentity().getHash());
|
||||||
if(country != null) {
|
if(country != null) {
|
||||||
|
buf.append("<a href=\"/netdb?c=").append(country).append("\">");
|
||||||
buf.append("<img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase(Locale.US)).append('\"');
|
buf.append("<img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase(Locale.US)).append('\"');
|
||||||
buf.append(" title=\"").append(getTranslatedCountry(country)).append('\"');
|
buf.append(" title=\"").append(getTranslatedCountry(country)).append('\"');
|
||||||
buf.append(" src=\"/flags.jsp?c=").append(country).append("\"> ");
|
buf.append(" src=\"/flags.jsp?c=").append(country).append("\"> ").append("</a>");
|
||||||
}
|
}
|
||||||
for (RouterAddress addr : info.getAddresses()) {
|
for (RouterAddress addr : info.getAddresses()) {
|
||||||
String style = addr.getTransportStyle();
|
String style = addr.getTransportStyle();
|
||||||
@ -921,7 +922,7 @@ class SybilRenderer {
|
|||||||
return;
|
return;
|
||||||
final DecimalFormat fmt = new DecimalFormat("#0.00");
|
final DecimalFormat fmt = new DecimalFormat("#0.00");
|
||||||
XORComparator<Hash> xor = new XORComparator<Hash>(Hash.FAKE_HASH);
|
XORComparator<Hash> xor = new XORComparator<Hash>(Hash.FAKE_HASH);
|
||||||
out.write("<h3>Group Distances</h3><table><tr><th>Hash<th>Distance from previous</tr>\n");
|
out.write("<h3 class=\"tabletitle\">Group Distances</h3><table class=\"sybil_distance\"><tr><th>Hash<th>Distance from previous</tr>\n");
|
||||||
Collections.sort(sybils, xor);
|
Collections.sort(sybils, xor);
|
||||||
Hash prev = null;
|
Hash prev = null;
|
||||||
for (Hash h : sybils) {
|
for (Hash h : sybils) {
|
||||||
@ -952,8 +953,8 @@ class SybilRenderer {
|
|||||||
prev = null;
|
prev = null;
|
||||||
final int limit = Math.min(10, sybils.size());
|
final int limit = Math.min(10, sybils.size());
|
||||||
for (int i = start; i <= days; i++) {
|
for (int i = start; i <= days; i++) {
|
||||||
out.write("<h3>Distance for " + new Date(now) +
|
out.write("<h3 class=\"tabletitle\">Distance for " + new Date(now) +
|
||||||
"</h3><table><tr><th>Hash<th>Distance<th>Distance from previous</tr>\n");
|
"</h3><table class=\"sybil_distance\"><tr><th>Hash<th>Distance<th>Distance from previous</tr>\n");
|
||||||
Hash rkey = rkgen.getRoutingKey(from, now);
|
Hash rkey = rkgen.getRoutingKey(from, now);
|
||||||
xor = new XORComparator<Hash>(rkey);
|
xor = new XORComparator<Hash>(rkey);
|
||||||
Collections.sort(sybils, xor);
|
Collections.sort(sybils, xor);
|
||||||
|
@ -765,7 +765,7 @@ public class KBucketSet<T extends SimpleDataStructure> {
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder buf = new StringBuilder(1024);
|
StringBuilder buf = new StringBuilder(1024);
|
||||||
buf.append("<b>Bucket set rooted on:</b> ").append(_us.toString())
|
buf.append("<hr><b>Bucket set rooted on:</b> ").append(_us.toString())
|
||||||
.append(" K=").append(BUCKET_SIZE)
|
.append(" K=").append(BUCKET_SIZE)
|
||||||
.append(" B=").append(B_VALUE)
|
.append(" B=").append(B_VALUE)
|
||||||
.append(" with ").append(size())
|
.append(" with ").append(size())
|
||||||
@ -775,7 +775,7 @@ public class KBucketSet<T extends SimpleDataStructure> {
|
|||||||
int len = _buckets.size();
|
int len = _buckets.size();
|
||||||
for (int i = 0; i < len; i++) {
|
for (int i = 0; i < len; i++) {
|
||||||
KBucket<T> b = _buckets.get(i);
|
KBucket<T> b = _buckets.get(i);
|
||||||
buf.append("<b>* Bucket ").append(i).append("/").append(len).append(":</b> ");
|
buf.append("<b>Bucket ").append(i).append("/").append(len).append(":</b> ");
|
||||||
buf.append(b.toString()).append("<br>\n");
|
buf.append(b.toString()).append("<br>\n");
|
||||||
}
|
}
|
||||||
} finally { releaseReadLock(); }
|
} finally { releaseReadLock(); }
|
||||||
|
@ -251,7 +251,7 @@ div.routersummary input[type=text] {
|
|||||||
.routersummary button[type="submit"] {
|
.routersummary button[type="submit"] {
|
||||||
min-width: 87px;
|
min-width: 87px;
|
||||||
margin: 2px 2px 1px;
|
margin: 2px 2px 1px;
|
||||||
padding: 5px 2px !important;
|
/* padding: 5px 2px !important;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
#xhr {
|
#xhr {
|
||||||
@ -380,6 +380,15 @@ div.routersummary td {
|
|||||||
padding: 2px 2px 1px;
|
padding: 2px 2px 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sb_notice {
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid #89f;
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: 0 0 1px #bbb;
|
||||||
|
margin: 7px 5px -2px;
|
||||||
|
padding: 5px 3px;
|
||||||
|
}
|
||||||
|
|
||||||
div.routersummary form {
|
div.routersummary form {
|
||||||
margin: -2px 0;
|
margin: -2px 0;
|
||||||
}
|
}
|
||||||
@ -546,6 +555,7 @@ input[type="radio"], input[type="checkbox"] {
|
|||||||
min-width: 16px !important;
|
min-width: 16px !important;
|
||||||
min-height: 16px !important;
|
min-height: 16px !important;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
|
background: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="file"] {
|
input[type="file"] {
|
||||||
@ -1035,22 +1045,56 @@ button::-moz-focus-inner, input[type="submit"]::-moz-focus-inner, input[type="re
|
|||||||
.routersummary .download {
|
.routersummary .download {
|
||||||
background: url(/themes/console/images/buttons/download.png) 3px center no-repeat, linear-gradient(to bottom, #fff 0%, #ddd 100%);
|
background: url(/themes/console/images/buttons/download.png) 3px center no-repeat, linear-gradient(to bottom, #fff 0%, #ddd 100%);
|
||||||
background-size: 16px 16px, 100% 100% !important;
|
background-size: 16px 16px, 100% 100% !important;
|
||||||
padding: 5px 3px 5px 17px !important;
|
padding: 5px 3px 5px 21px !important;
|
||||||
/* margin-top: -4px;*/
|
/* margin-top: -4px;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Show text on context specific buttons (eg deferred shutdown) */
|
||||||
|
|
||||||
|
.routersummary .reload[value="restartImmediate"], .routersummary .stop[value="shutdownImmediate"], .routersummary .reload[value="Reseed"] {
|
||||||
|
text-indent: 0;
|
||||||
|
text-align: left;
|
||||||
|
min-width: 0 !important;
|
||||||
|
padding-left: 21px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="restartImmediate"] {
|
||||||
|
background: url(/themes/console/images/buttons/restart.png) center left 4px no-repeat, linear-gradient(to bottom, #fff 0%, #ddd 100%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="restartImmediate"]:hover, .routersummary .reload[value="restartImmediate"]:focus, .routersummary .reload[value="restartImmediate"]:active {
|
||||||
|
background: url(/themes/console/images/buttons/restart_hover.png) center left 4px no-repeat, linear-gradient(to bottom, #ddd 0%, #fff 100%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .stop[value="shutdownImmediate"] {
|
||||||
|
background: url(/themes/console/images/buttons/shutdown.png) center left 4px no-repeat, linear-gradient(to bottom, #fff 0%, #ddd 100%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .stop[value="shutdownImmediate"]:hover, .routersummary .stop[value="shutdownImmediate"]:focus, .routersummary .stop[value="shutdownImmediate"]:active {
|
||||||
|
background: url(/themes/console/images/buttons/shutdown_hover.png) center left 4px no-repeat, linear-gradient(to bottom, #ddd 0%, #fff 100%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="Reseed"] {
|
||||||
|
background: url(/themes/console/images/buttons/download.png) center left 4px no-repeat, linear-gradient(to bottom, #fff 0%, #ddd 100%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="Reseed"]:hover, .routersummary .reload[value="Reseed"]:focus, .routersummary .reload[value="Reseed"]:active {
|
||||||
|
background: url(/themes/console/images/buttons/download.png) center left 4px no-repeat !important, linear-gradient(to bottom, #ddd 0%, #fff 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .download:hover, .routersummary .download:focus, .routersummary .download:active {
|
||||||
|
background: url(/themes/console/images/buttons/download.png) 4px center no-repeat, linear-gradient(to bottom, #ddd 0%, #fff 100%);
|
||||||
|
background-size: 16px 16px, 100% 100% !important;
|
||||||
|
padding: 5px 3px 5px 21px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||||
.routersummary .download, .routersummary .download:hover, .routersummary .download:focus, .routersummary .download:active {
|
.routersummary .download, .routersummary .download:hover, .routersummary .download:focus, .routersummary .download:active {
|
||||||
padding-left: 19px !important;
|
padding-left: 19px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
.routersummary .download:hover, .routersummary .download:focus, .routersummary .download:active {
|
|
||||||
background: url(/themes/console/images/buttons/download.png) 3px center no-repeat, linear-gradient(to bottom, #ddd 0%, #fff 100%);
|
|
||||||
background-size: 16px 16px, 100% 100% !important;
|
|
||||||
padding: 5px 3px 5px 17px !important;
|
|
||||||
border: 1px solid #f60;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* end sidebar buttons */
|
/* end sidebar buttons */
|
||||||
/* end buttons & inputs */
|
/* end buttons & inputs */
|
||||||
@ -1193,7 +1237,7 @@ div.news {
|
|||||||
border-right: 1px solid #89f;
|
border-right: 1px solid #89f;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
color: #331e0c;
|
color: #331e0c;
|
||||||
min-width: 500px;
|
min-width: 520px;
|
||||||
padding: 3px 10px 3px 10px;
|
padding: 3px 10px 3px 10px;
|
||||||
font-size: 8pt;
|
font-size: 8pt;
|
||||||
}
|
}
|
||||||
@ -2701,10 +2745,10 @@ p#enablefullstats {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.langbox {
|
.langbox {
|
||||||
margin: 5px 5px 0 5px;
|
margin: 4px 4px 0;
|
||||||
color: #001;
|
color: #001;
|
||||||
font-size: 7pt;
|
font-size: 7pt;
|
||||||
width: 312px;
|
width: 360px;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
float: right;
|
float: right;
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
@ -3664,7 +3708,7 @@ div#sybilnav {
|
|||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.sybil_floodfill, p.family, p.threatpoints, p.hashdist {
|
p.sybil_info, p.family, p.threatpoints, p.hashdist {
|
||||||
border: 1px solid #89f;
|
border: 1px solid #89f;
|
||||||
padding: 5px 5px 5px 30px;
|
padding: 5px 5px 5px 30px;
|
||||||
margin: 3px 0;
|
margin: 3px 0;
|
||||||
@ -3674,11 +3718,11 @@ p.sybil_floodfill, p.family, p.threatpoints, p.hashdist {
|
|||||||
background: url(images/eye.png) 8px center no-repeat, linear-gradient(to right, #fff 0%, #dde1ff 70%);
|
background: url(images/eye.png) 8px center no-repeat, linear-gradient(to right, #fff 0%, #dde1ff 70%);
|
||||||
}
|
}
|
||||||
|
|
||||||
p.family + p.family, p.sybil_floodfill + p.sybil_floodfill {
|
p.family + p.family, p.sybil_info + p.sybil_info {
|
||||||
margin-top: -4px;
|
margin-top: -4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.sybil_floodfill + a[name] + table.sybil_routerinfo, p.hashdist + a[name] + table.sybil_routerinfo {
|
p.sybil_info + a[name] + table.sybil_routerinfo, p.hashdist + a[name] + table.sybil_routerinfo {
|
||||||
margin-top: 10px !important;
|
margin-top: 10px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3712,6 +3756,40 @@ p:empty { /* empty paragraph nuke */
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Advanced lookup */
|
||||||
|
|
||||||
|
#netdblookup {
|
||||||
|
margin-bottom: -8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup th {
|
||||||
|
font-size: 11pt;
|
||||||
|
text-align: left;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup td:first-child {
|
||||||
|
text-align: right;
|
||||||
|
width: 100px;
|
||||||
|
white-space: nowrap;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup td:nth-child(2) {
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subheading {
|
||||||
|
text-align: left !important;
|
||||||
|
background: #fff;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #89f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subheading b {
|
||||||
|
font-size: 10pt !important;
|
||||||
|
}
|
||||||
|
|
||||||
/* end netdb */
|
/* end netdb */
|
||||||
|
|
||||||
/* /stats */
|
/* /stats */
|
||||||
@ -3879,6 +3957,25 @@ table#netdboverview {
|
|||||||
padding: 5px;
|
padding: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#netdbcountrylist img {
|
||||||
|
margin-right: 5px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sybil_distance th {
|
||||||
|
text-align: left;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sybil_distance th:last-child, .sybil_distance td:last-child {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sybil_distance tr:nth-child(n+2):hover {
|
||||||
|
background: #ffe;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
/* /help */
|
/* /help */
|
||||||
|
|
||||||
div#volunteer, div#sidebarhelp, div#configurationhelp, div#reachabilityhelp, div#legal, div#changelog {
|
div#volunteer, div#sidebarhelp, div#configurationhelp, div#reachabilityhelp, div#legal, div#changelog {
|
||||||
@ -4288,7 +4385,7 @@ div.news {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.routersummary button[value="cancelShutdown"] {
|
.routersummary button[value="cancelShutdown"] {
|
||||||
padding-left: 20px !important;
|
padding-left: 21px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.app {
|
div.app {
|
||||||
@ -4359,4 +4456,8 @@ div.news {
|
|||||||
div.joblog h3 {
|
div.joblog h3 {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.subheading b {
|
||||||
|
font-size: 10.5pt !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,16 @@ div.routersummary {
|
|||||||
margin: 0 auto -6px;
|
margin: 0 auto -6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 1500px) {
|
||||||
|
div.routersummary {
|
||||||
|
width: 600px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary table[id^="sb_"] {
|
||||||
|
width: 600px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#xhr {
|
#xhr {
|
||||||
margin-top: 9px !important;
|
margin-top: 9px !important;
|
||||||
}
|
}
|
||||||
@ -105,7 +115,7 @@ h1 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
div.news {
|
div.news {
|
||||||
margin: 0 0 -10px;
|
margin: 0 0 -1px;
|
||||||
min-width: 500px;
|
min-width: 500px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,5 +124,25 @@ div.main {
|
|||||||
min-width: 500px;
|
min-width: 500px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.confignav {
|
.sorry {
|
||||||
|
margin: -1px 0 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 1500px) {
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin: 9px 0 -1px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.news {
|
||||||
|
margin: -1px 0 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.main {
|
||||||
|
margin: -1px 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sorry {
|
||||||
|
margin: -1px 0 0 !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -397,6 +397,19 @@ div.routersummary table {
|
|||||||
line-height: 140%;
|
line-height: 140%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sb_notice {
|
||||||
|
background: #010;
|
||||||
|
border: 1px solid #262;
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: inset 0 0 0 1px #000;
|
||||||
|
margin: 10px -4px -2px;
|
||||||
|
padding: 5px 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr + .sb_notice {
|
||||||
|
margin-top: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
div.routersummary tr {
|
div.routersummary tr {
|
||||||
background-image: none !important;
|
background-image: none !important;
|
||||||
background-color: transparent !important;
|
background-color: transparent !important;
|
||||||
@ -1440,6 +1453,7 @@ input[type="checkbox"], .optbox {
|
|||||||
filter: invert(100%) sepia(100%) hue-rotate(70deg) saturate(200%); /* colorize radios and checkboxes */
|
filter: invert(100%) sepia(100%) hue-rotate(70deg) saturate(200%); /* colorize radios and checkboxes */
|
||||||
-webkit-filter: invert(100%) sepia(100%) hue-rotate(70deg) saturate(200%);
|
-webkit-filter: invert(100%) sepia(100%) hue-rotate(70deg) saturate(200%);
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
|
background: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="checkbox"]:hover, .optbox:hover, input[type="checkbox"]:focus, .optbox:focus {
|
input[type="checkbox"]:hover, .optbox:hover, input[type="checkbox"]:focus, .optbox:focus {
|
||||||
@ -3237,6 +3251,11 @@ table#netdboverview {
|
|||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#netdbcountrylist img {
|
||||||
|
margin-right: 5px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
#netdbtransports {
|
#netdbtransports {
|
||||||
border-left: 1px solid transparent !important;
|
border-left: 1px solid transparent !important;
|
||||||
border-right: 1px solid transparent !important;
|
border-right: 1px solid transparent !important;
|
||||||
@ -3287,6 +3306,74 @@ th > img[src^="/imagegen"] { /* scale down header images */
|
|||||||
border: 1px solid #000;
|
border: 1px solid #000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Advanced lookup */
|
||||||
|
|
||||||
|
#netdblookup {
|
||||||
|
margin-bottom: -4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup th {
|
||||||
|
text-align: left;
|
||||||
|
font-size: 11pt;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
padding: 10px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup td:first-child {
|
||||||
|
text-align: right;
|
||||||
|
width: 100px;
|
||||||
|
white-space: nowrap;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup td:nth-child(2) {
|
||||||
|
width: 100px;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subheading {
|
||||||
|
text-align: left !important;
|
||||||
|
background: #000;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #494;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subheading b {
|
||||||
|
font-size: 10pt !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup .optbox {
|
||||||
|
margin: 10px ;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup .optionsave {
|
||||||
|
padding: 10px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdb .tabletitle {
|
||||||
|
margin-bottom: -2px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sybil_distance th {
|
||||||
|
text-align: left;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sybil_distance th:last-child, .sybil_distance td:last-child {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sybil_distance tr:nth-child(n+2):hover {
|
||||||
|
background: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sybil_distance:last-child {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* end netdb */
|
||||||
|
|
||||||
/* logs */
|
/* logs */
|
||||||
|
|
||||||
#criticallogs ul { /* tidy router logs ul */
|
#criticallogs ul { /* tidy router logs ul */
|
||||||
@ -4117,6 +4204,10 @@ table#leasesetdebug th a:hover, table#leasesetsummary th a:hover {
|
|||||||
font-size: 10pt;
|
font-size: 10pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.main#debug h2 + hr {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
div.debugcontainer {
|
div.debugcontainer {
|
||||||
border: 1px solid #f00;
|
border: 1px solid #f00;
|
||||||
}
|
}
|
||||||
@ -4412,7 +4503,7 @@ table.sybil_routerinfo:first-of-type th {
|
|||||||
font-size: 9pt;
|
font-size: 9pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.sybil_floodfill, p.family, p.threatpoints, p.hashdist, p#sybil_totals {
|
p.sybil_info, p.family, p.threatpoints, p.hashdist, p#sybil_totals {
|
||||||
border: 1px solid #494;
|
border: 1px solid #494;
|
||||||
padding: 5px 5px 5px 30px;
|
padding: 5px 5px 5px 30px;
|
||||||
margin: 3px 0;
|
margin: 3px 0;
|
||||||
@ -4424,7 +4515,7 @@ p.sybil_floodfill, p.family, p.threatpoints, p.hashdist, p#sybil_totals {
|
|||||||
box-shadow: inset 0 0 0 1px #300;
|
box-shadow: inset 0 0 0 1px #300;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.family + p.family, p.sybil_floodfill + p.sybil_floodfill {
|
p.family + p.family, p.sybil_info + p.sybil_info {
|
||||||
margin-top: -4px;
|
margin-top: -4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4432,7 +4523,7 @@ p#sybilinfo {
|
|||||||
line-height: 140%;
|
line-height: 140%;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.sybil_floodfill + a[name] + table.sybil_routerinfo, p.hashdist + a[name] + table.sybil_routerinfo {
|
p.sybil_info + a[name] + table.sybil_routerinfo, p.hashdist + a[name] + table.sybil_routerinfo {
|
||||||
margin-top: 10px !important;
|
margin-top: 10px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5028,7 +5119,7 @@ ul.statlist a[name], ul.statlist b, ul.statlist li b, ul.statlist a[name]:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.routersummary td, .routersummary a, .routersummary button, .routersummary h4, .routersummary h4 a,
|
.routersummary td, .routersummary a, .routersummary button, .routersummary h4, .routersummary h4 a,
|
||||||
#floodfill th, .applabel a, #jardump td {
|
#floodfill th, .applabel a, #jardump td, .statusnotes {
|
||||||
font-size: 9pt !important;
|
font-size: 9pt !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5078,8 +5169,15 @@ div.joblog h3 {
|
|||||||
margin-bottom: 12px !important;
|
margin-bottom: 12px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#certs.main p + p:empty + h4 {
|
#certs.main p + p:empty + h4 {
|
||||||
margin-top: -15px !important;
|
margin-top: -15px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
button.reload, button.stop {
|
||||||
|
min-width: 101px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subheading b {
|
||||||
|
font-size: 10.5pt !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,16 @@ div.routersummary {
|
|||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 1500px) {
|
||||||
|
div.routersummary {
|
||||||
|
width: 600px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary table[id^="sb_"] {
|
||||||
|
width: 600px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
div[style^='height'] + a {
|
div[style^='height'] + a {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding-top: 8px !important;
|
padding-top: 8px !important;
|
||||||
@ -113,3 +123,21 @@ div.main {
|
|||||||
min-width: 590px;
|
min-width: 590px;
|
||||||
margin: -1px 0 5px;
|
margin: -1px 0 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sorry {
|
||||||
|
margin: -1px 0 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 1500px) {
|
||||||
|
div.news {
|
||||||
|
margin: -1px 0 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.main {
|
||||||
|
margin: -1px 0 5px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sorry {
|
||||||
|
margin: -1px 0 0 !important;
|
||||||
|
}
|
||||||
|
}
|
@ -289,6 +289,20 @@ div.routersummary table {
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sb_notice {
|
||||||
|
background: #eef;
|
||||||
|
border: 1px solid #89f;
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: 0 0 1px #bbb, inset 0 0 0 1px #fff;
|
||||||
|
margin: 8px 0 -2px;
|
||||||
|
padding: 5px 3px;
|
||||||
|
line-height: 140%;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr + .sb_notice {
|
||||||
|
margin-top: -2px;
|
||||||
|
}
|
||||||
|
|
||||||
div.routersummary tr {
|
div.routersummary tr {
|
||||||
background-image: none !important;
|
background-image: none !important;
|
||||||
background-color: transparent !important;
|
background-color: transparent !important;
|
||||||
@ -1967,7 +1981,7 @@ h1 {
|
|||||||
margin: 0 0 10px 207px;
|
margin: 0 0 10px 207px;
|
||||||
font-size: 18pt;
|
font-size: 18pt;
|
||||||
line-height: 90%;
|
line-height: 90%;
|
||||||
letter-spacing: 0.08em;
|
letter-spacing: 0.12em;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
box-shadow: inset 0 0 0 1px #bbf;
|
box-shadow: inset 0 0 0 1px #bbf;
|
||||||
white-space: normal;
|
white-space: normal;
|
||||||
@ -2140,7 +2154,7 @@ h4 {
|
|||||||
padding: 2px 3px;
|
padding: 2px 3px;
|
||||||
color: #001;
|
color: #001;
|
||||||
font-size: 7pt;
|
font-size: 7pt;
|
||||||
width: 350px;
|
width: 360px;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
float: right;
|
float: right;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
@ -2565,6 +2579,17 @@ button::-moz-focus-inner, input[type="submit"]::-moz-focus-inner, input[type="re
|
|||||||
box-shadow: inset 2px 2px 2px #555;
|
box-shadow: inset 2px 2px 2px #555;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="Reseed"] {
|
||||||
|
text-indent: 0;
|
||||||
|
text-align: left;
|
||||||
|
min-width: 0;
|
||||||
|
background: url(/themes/console/images/buttons/download.png) center left 4px no-repeat, linear-gradient(to bottom, #fff 0%, #ddd 100%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="Reseed"]:hover, .routersummary .reload[value="Reseed"]:focus {
|
||||||
|
background: url(/themes/console/images/buttons/download.png) center left 4px no-repeat, linear-gradient(to bottom, #ddd 0%, #fff 100%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
.routersummary .stop {
|
.routersummary .stop {
|
||||||
background: url(/themes/console/images/buttons/shutdown.png) center center no-repeat, linear-gradient(to bottom, #fff 0%, #ddd 100%);
|
background: url(/themes/console/images/buttons/shutdown.png) center center no-repeat, linear-gradient(to bottom, #fff 0%, #ddd 100%);
|
||||||
}
|
}
|
||||||
@ -2578,24 +2603,49 @@ button::-moz-focus-inner, input[type="submit"]::-moz-focus-inner, input[type="re
|
|||||||
background: url(/themes/console/images/buttons/download.png) 3px center no-repeat, linear-gradient(to bottom, #fff 0%, #ddd 100%);
|
background: url(/themes/console/images/buttons/download.png) 3px center no-repeat, linear-gradient(to bottom, #fff 0%, #ddd 100%);
|
||||||
background-size: 16px 16px, 100% 100% !important;
|
background-size: 16px 16px, 100% 100% !important;
|
||||||
padding: 5px 3px 5px 17px !important;
|
padding: 5px 3px 5px 17px !important;
|
||||||
/* margin-top: -4px;*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.routersummary .cancel {
|
.routersummary .cancel {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
/* Show text on context specific buttons (eg deferred shutdown) */
|
||||||
.routersummary .download, .routersummary .download:hover, .routersummary .download:focus, .routersummary .download:active {
|
|
||||||
padding-left: 19px !important;
|
.routersummary .reload[value="restartImmediate"], .routersummary .stop[value="shutdownImmediate"], .routersummary .reload[value="Reseed"] {
|
||||||
|
text-indent: 0;
|
||||||
|
text-align: left;
|
||||||
|
min-width: 0 !important;
|
||||||
|
padding-left: 21px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="restartImmediate"] {
|
||||||
|
background: url(/themes/console/images/buttons/restart.png) center left 4px no-repeat, linear-gradient(to bottom, #fff 0%, #ddd 100%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="restartImmediate"]:hover, .routersummary .reload[value="restartImmediate"]:focus, .routersummary .reload[value="restartImmediate"]:active {
|
||||||
|
background: url(/themes/console/images/buttons/restart_hover.png) center left 4px no-repeat, linear-gradient(to bottom, #ddd 0%, #fff 100%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .stop[value="shutdownImmediate"] {
|
||||||
|
background: url(/themes/console/images/buttons/shutdown.png) center left 4px no-repeat, linear-gradient(to bottom, #fff 0%, #ddd 100%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .stop[value="shutdownImmediate"]:hover, .routersummary .stop[value="shutdownImmediate"]:focus, .routersummary .stop[value="shutdownImmediate"]:active {
|
||||||
|
background: url(/themes/console/images/buttons/shutdown_hover.png) center left 4px no-repeat, linear-gradient(to bottom, #ddd 0%, #fff 100%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="Reseed"] {
|
||||||
|
background: url(/themes/console/images/buttons/download.png) center left 4px no-repeat, linear-gradient(to bottom, #fff 0%, #ddd 100%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="Reseed"]:hover, .routersummary .reload[value="Reseed"]:focus, .routersummary .reload[value="Reseed"]:active {
|
||||||
|
background: url(/themes/console/images/buttons/download.png) center left 4px no-repeat !important, linear-gradient(to bottom, #ddd 0%, #fff 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.routersummary .download:hover, .routersummary .download:focus, .routersummary .download:active {
|
.routersummary .download:hover, .routersummary .download:focus, .routersummary .download:active {
|
||||||
background: url(/themes/console/images/buttons/download.png) 3px center no-repeat, linear-gradient(to bottom, #ddd 0%, #fff 100%);
|
background: url(/themes/console/images/buttons/download.png) 4px center no-repeat, linear-gradient(to bottom, #ddd 0%, #fff 100%);
|
||||||
background-size: 16px 16px, 100% 100% !important;
|
background-size: 16px 16px, 100% 100% !important;
|
||||||
padding: 5px 3px 5px 17px !important;
|
padding: 5px 3px 5px 21px !important;
|
||||||
border: 1px solid #f60;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* end sidebar buttons */
|
/* end sidebar buttons */
|
||||||
@ -2625,6 +2675,7 @@ input[type="checkbox"], input[type="radio"] {
|
|||||||
vertical-align: middle !important;
|
vertical-align: middle !important;
|
||||||
margin-top: 4px !important;
|
margin-top: 4px !important;
|
||||||
margin-bottom: 4px !important;
|
margin-bottom: 4px !important;
|
||||||
|
background: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="checkbox"]:focus, input[type="radio"]:focus {
|
input[type="checkbox"]:focus, input[type="radio"]:focus {
|
||||||
@ -3391,7 +3442,7 @@ table#leasesetdebug th a:hover, table#leasesetsummary th a:hover {
|
|||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#netdboverview th {
|
#netdboverview th, #netdblookup th {
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
font-size: 11pt;
|
font-size: 11pt;
|
||||||
letter-spacing: 0.08em;
|
letter-spacing: 0.08em;
|
||||||
@ -3441,6 +3492,11 @@ table#leasesetdebug th a:hover, table#leasesetsummary th a:hover {
|
|||||||
border-left: 1px solid #447;
|
border-left: 1px solid #447;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#netdbcountrylist img {
|
||||||
|
margin-right: 5px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
#leasesetsummary td:first-child {
|
#leasesetsummary td:first-child {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
@ -3611,7 +3667,7 @@ table.sybil_routerinfo:first-of-type th {
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.sybil_floodfill, p.family, p.threatpoints, p.hashdist, p#sybil_totals {
|
p.sybil_info, p.family, p.threatpoints, p.hashdist, p#sybil_totals {
|
||||||
border: 1px solid #7778bf;
|
border: 1px solid #7778bf;
|
||||||
padding: 5px 5px 5px 30px;
|
padding: 5px 5px 5px 30px;
|
||||||
margin: 3px 0;
|
margin: 3px 0;
|
||||||
@ -3623,7 +3679,7 @@ p.family + p.family {
|
|||||||
margin-top: -4px;
|
margin-top: -4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.sybil_floodfill + a[name] + table.sybil_routerinfo, p.hashdist + a[name] + table.sybil_routerinfo, table.sybil_routerinfo + p {
|
p.sybil_info + a[name] + table.sybil_routerinfo, p.hashdist + a[name] + table.sybil_routerinfo, table.sybil_routerinfo + p {
|
||||||
margin-top: 10px !important;
|
margin-top: 10px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3650,8 +3706,49 @@ p:empty { /* empty paragraph nuke */
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* end netdb */
|
/* Advanced lookup */
|
||||||
|
|
||||||
|
#netdblookup {
|
||||||
|
margin-bottom: -8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup td:first-child {
|
||||||
|
text-align: right;
|
||||||
|
width: 100px;
|
||||||
|
white-space: nowrap;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup td:nth-child(2) {
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subheading {
|
||||||
|
text-align: left !important;
|
||||||
|
background: #fff;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #7778bf;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subheading b {
|
||||||
|
font-size: 10pt !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sybil_distance th {
|
||||||
|
text-align: left;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sybil_distance th:last-child, .sybil_distance td:last-child {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sybil_distance tr:nth-child(n+2):hover {
|
||||||
|
background: #ffe;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* end netdb */
|
||||||
|
|
||||||
ul#banlist {
|
ul#banlist {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
@ -4125,7 +4222,7 @@ img.app, img.app2p {
|
|||||||
|
|
||||||
@media screen and (min-width: 1500px) {
|
@media screen and (min-width: 1500px) {
|
||||||
body, .main, .main td, .news p, #news p, .tab, .tab2, .main li b, div.joblog li, .themelabel, .ui_lang, .applabel a,
|
body, .main, .main td, .news p, #news p, .tab, .tab2, .main li b, div.joblog li, .themelabel, .ui_lang, .applabel a,
|
||||||
#peerdefs, #profile_defs, #thresholds, #configinfo, .infohelp, .infowarn, button, input, select, textarea {
|
#peerdefs, #profile_defs, #thresholds, #configinfo, .infohelp, .infowarn, button, input, select, textarea, #configinfo th {
|
||||||
font-size: 10pt !important;
|
font-size: 10pt !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4190,4 +4287,13 @@ h3#pluginconfig, h3#webappconfig, h3#i2pclientconfig, h3#pluginmanage, p#clientc
|
|||||||
.sorry {
|
.sorry {
|
||||||
margin-left: 232px !important;
|
margin-left: 232px !important;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
.routersummary .reload, .routersummary .stop {
|
||||||
|
min-width: 96px;
|
||||||
|
margin: 0 3px -5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subheading b {
|
||||||
|
font-size: 10.5pt !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -867,4 +867,4 @@ body, select, .control, input, textarea {
|
|||||||
th {
|
th {
|
||||||
font-size: 10.5pt;
|
font-size: 10.5pt;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -14,6 +14,16 @@ div.routersummary {
|
|||||||
margin: 0 auto -6px;
|
margin: 0 auto -6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 1500px) {
|
||||||
|
div.routersummary {
|
||||||
|
width: 600px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary table[id^="sb_"] {
|
||||||
|
width: 600px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#xhr {
|
#xhr {
|
||||||
margin-top: 9px !important;
|
margin-top: 9px !important;
|
||||||
}
|
}
|
||||||
@ -65,20 +75,44 @@ table[id^="sb_"] tr:nth-child(odd) td {
|
|||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
margin: 14px 10px -1px 0;
|
margin: 14px 0 -1px;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.news {
|
div.news {
|
||||||
margin: 0 10px -11px 0;
|
margin: 0 0 -11px;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.main {
|
div.main {
|
||||||
margin: 10px 10px 20px 0;
|
margin: 10px 0 0;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sorry {
|
||||||
|
margin-left: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 1500px) {
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin: 14px 0 -1px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.news {
|
||||||
|
margin: 0 0 -11px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.main {
|
||||||
|
margin: 10px 0 0 !important;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sorry {
|
||||||
|
margin-left: 0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.confignav {
|
.confignav {
|
||||||
padding-bottom: 10px !important;
|
padding-bottom: 10px !important;
|
||||||
}
|
}
|
||||||
|
@ -191,6 +191,7 @@ input[type="checkbox"], .optbox {
|
|||||||
vertical-align: sub;
|
vertical-align: sub;
|
||||||
filter: invert(100%) sepia(100%) hue-rotate(200deg) saturate(200%); /* colorize radios and checkboxes */
|
filter: invert(100%) sepia(100%) hue-rotate(200deg) saturate(200%); /* colorize radios and checkboxes */
|
||||||
-webkit-filter: invert(100%) sepia(100%) hue-rotate(200deg) saturate(200%);
|
-webkit-filter: invert(100%) sepia(100%) hue-rotate(200deg) saturate(200%);
|
||||||
|
background: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="checkbox"]:hover, .optbox:hover, input[type="checkbox"]:focus, .optbox:focus {
|
input[type="checkbox"]:hover, .optbox:hover, input[type="checkbox"]:focus, .optbox:focus {
|
||||||
@ -845,6 +846,12 @@ button::-moz-focus-inner, input[type="submit"]::-moz-focus-inner, input[type="re
|
|||||||
background-blend-mode: normal;
|
background-blend-mode: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.routersummary .download {
|
||||||
|
background: url(/themes/console/images/buttons/download.png) 3px center no-repeat;
|
||||||
|
background-size: 16px 16px, 100% 100% !important;
|
||||||
|
padding: 5px 3px 5px 17px !important;
|
||||||
|
}
|
||||||
|
|
||||||
.routersummary .reload, .routersummary .stop {
|
.routersummary .reload, .routersummary .stop {
|
||||||
text-indent: -99999px;
|
text-indent: -99999px;
|
||||||
background-size: 16px 16px, 100% 100% !important;
|
background-size: 16px 16px, 100% 100% !important;
|
||||||
@ -874,10 +881,49 @@ button::-moz-focus-inner, input[type="submit"]::-moz-focus-inner, input[type="re
|
|||||||
background-size: 16px 16px, 100% 100% !important;
|
background-size: 16px 16px, 100% 100% !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.routersummary .download {
|
/* Show text on context specific buttons (eg deferred shutdown) */
|
||||||
background: url(/themes/console/images/buttons/download.png) 3px center no-repeat;
|
|
||||||
background-size: 16px 16px, 100% 100% !important;
|
.routersummary .reload[value="restartImmediate"], .routersummary .stop[value="shutdownImmediate"], .routersummary .reload[value="Reseed"] {
|
||||||
padding: 5px 3px 5px 17px !important;
|
text-indent: 0;
|
||||||
|
text-align: left;
|
||||||
|
min-width: 0 !important;
|
||||||
|
padding-left: 21px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="restartImmediate"] {
|
||||||
|
background: url(/themes/console/images/buttons/restart.png) center left 4px no-repeat, linear-gradient(to bottom, #1f1e32, #090812 50%, #000 50%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="restartImmediate"]:hover {
|
||||||
|
background: #000 url(/themes/console/images/buttons/restart.png) center left 4px no-repeat !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="restartImmediate"]:focus, .routersummary .reload[value="restartImmediate"]:active {
|
||||||
|
background: url(/themes/console/images/buttons/restart_hover.png) center left 4px no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .stop[value="shutdownImmediate"] {
|
||||||
|
background: url(/themes/console/images/buttons/shutdown.png) center left 4px no-repeat, linear-gradient(to bottom, #1f1e32, #090812 50%, #000 50%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .stop[value="shutdownImmediate"]:hover {
|
||||||
|
background: #000 url(/themes/console/images/buttons/shutdown_hover.png) center left 4px no-repeat !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .stop[value="shutdownImmediate"]:focus, .routersummary .stop[value="shutdownImmediate"]:active {
|
||||||
|
background: url(/themes/console/images/buttons/shutdown_hover.png) center left 4px no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="Reseed"] {
|
||||||
|
background: url(/themes/console/images/buttons/download.png) center left 4px no-repeat, linear-gradient(to bottom, #1f1e32, #090812 50%, #000 50%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="Reseed"]:hover {
|
||||||
|
background: #000 url(/themes/console/images/buttons/download.png) center left 4px no-repeat !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary .reload[value="Reseed"]:focus, .routersummary .reload[value="Reseed"]:active {
|
||||||
|
background: #652787 url(/themes/console/images/buttons/download.png) center left 4px no-repeat !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||||
@ -1165,7 +1211,21 @@ div.logo hr {
|
|||||||
line-height: 140%;
|
line-height: 140%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sb_notice {
|
||||||
|
background: #001;
|
||||||
|
border: 1px solid #241f69;
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: inset 0 0 0 1px #000;
|
||||||
|
margin: 10px -4px -2px;
|
||||||
|
padding: 5px 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr + .sb_notice {
|
||||||
|
margin-top: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
/* sidebar stacked tables fix */
|
/* sidebar stacked tables fix */
|
||||||
|
|
||||||
#sb_localid + #sb_version {
|
#sb_localid + #sb_version {
|
||||||
margin-top: 6px !important;
|
margin-top: 6px !important;
|
||||||
margin-bottom: 5px !important;
|
margin-bottom: 5px !important;
|
||||||
@ -2028,7 +2088,10 @@ h2 a:visited {
|
|||||||
|
|
||||||
h2 a:hover {
|
h2 a:hover {
|
||||||
color: #652787;
|
color: #652787;
|
||||||
text-shadow: 0 0 1px #652787;
|
}
|
||||||
|
|
||||||
|
h2 a[name]:hover, h2 a[name]:active {
|
||||||
|
color: #c9ceff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3, h3.welcome, div.news h3 {
|
h3, h3.welcome, div.news h3 {
|
||||||
@ -2067,11 +2130,11 @@ h2, h3, h4, .confignav {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.langbox {
|
.langbox {
|
||||||
margin: 3px 4px 2px 5px;
|
margin: 5px 4px 2px 5px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
color: #c9ceff;
|
color: #c9ceff;
|
||||||
font-size: 7pt;
|
font-size: 7pt;
|
||||||
width: 350px;
|
width: 360px;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
float: right;
|
float: right;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
@ -2079,7 +2142,8 @@ h2, h3, h4, .confignav {
|
|||||||
|
|
||||||
.langbox img {
|
.langbox img {
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
padding: 1px 2px !important;
|
margin: 0 !important;
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.langbox img:hover {
|
.langbox img:hover {
|
||||||
@ -3510,6 +3574,7 @@ div#volunteer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#changelog pre {
|
#changelog pre {
|
||||||
|
margin-top: 11px;
|
||||||
padding: 10px 10px 10px 20px;
|
padding: 10px 10px 10px 20px;
|
||||||
max-height: 600px;
|
max-height: 600px;
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
@ -3570,6 +3635,11 @@ table#netdboverview {
|
|||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#netdbcountrylist img {
|
||||||
|
margin-right: 5px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
#netdbtransports {
|
#netdbtransports {
|
||||||
border-left: 1px solid transparent !important;
|
border-left: 1px solid transparent !important;
|
||||||
border-right: 1px solid transparent !important;
|
border-right: 1px solid transparent !important;
|
||||||
@ -3620,6 +3690,75 @@ th > img[src^="/imagegen"] { /* scale down header images */
|
|||||||
border: 1px solid #000;
|
border: 1px solid #000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Advanced lookup */
|
||||||
|
|
||||||
|
#netdblookup {
|
||||||
|
margin-bottom: -4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup th {
|
||||||
|
text-align: left;
|
||||||
|
font-size: 11pt;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
padding: 10px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup td:first-child {
|
||||||
|
text-align: right;
|
||||||
|
width: 100px;
|
||||||
|
white-space: nowrap;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup td:nth-child(2) {
|
||||||
|
width: 100px;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subheading {
|
||||||
|
text-align: left !important;
|
||||||
|
background: #000;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #443da0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subheading b {
|
||||||
|
font-size: 10pt !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup .optbox {
|
||||||
|
margin: 10px ;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdblookup .optionsave {
|
||||||
|
padding: 10px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#netdb .tabletitle {
|
||||||
|
margin-bottom: -2px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sybil_distance th {
|
||||||
|
text-align: left;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sybil_distance th:last-child, .sybil_distance td:last-child {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sybil_distance tr:nth-child(n+2):hover {
|
||||||
|
background: #002;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sybil_distance:last-child {
|
||||||
|
margin-bottom: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* end netdb */
|
||||||
|
|
||||||
/* logs */
|
/* logs */
|
||||||
|
|
||||||
a[name="criticallogs"] + p + h3 + p + ul { /* tidy router logs ul */
|
a[name="criticallogs"] + p + h3 + p + ul { /* tidy router logs ul */
|
||||||
@ -4016,6 +4155,10 @@ table#jardump { /* /jars */
|
|||||||
margin-top: -13px;
|
margin-top: -13px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.main#debug h2 + hr {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
div.footnote {
|
div.footnote {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
color: #443da0;
|
color: #443da0;
|
||||||
@ -4046,17 +4189,17 @@ div.home {
|
|||||||
}
|
}
|
||||||
|
|
||||||
h4.app, h4.app2 {
|
h4.app, h4.app2 {
|
||||||
background: url(images/header.png) center center repeat-x;
|
background: linear-gradient(to bottom, #191729 0%, #201f33 7%, #1f1e32 9%, #161525 21%, #090812 49%, #05050e 50%, #020206 51%, #010103 53%, #000000 56%, #000000 100%) !important;
|
||||||
border: 1px solid #443da0;
|
border: 1px solid #443da0;
|
||||||
font-size: 10.5pt;
|
font-size: 10.5pt;
|
||||||
font-variant: small-caps;
|
font-variant: small-caps;
|
||||||
letter-spacing: 2px;
|
letter-spacing: 2px;
|
||||||
margin: 11px -8px -9px -8px;
|
margin: 11px -8px -9px -8px;
|
||||||
padding: 7px 8px 7px;
|
padding: 7px 8px 7px;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
letter-spacing: 0.08em;
|
letter-spacing: 0.08em;
|
||||||
word-spacing: 0.1em;
|
word-spacing: 0.1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
h4.app2 {
|
h4.app2 {
|
||||||
@ -4073,7 +4216,7 @@ div.ag2 {
|
|||||||
|
|
||||||
div.app {
|
div.app {
|
||||||
float: left;
|
float: left;
|
||||||
padding: 2px 0 4px;
|
padding: 2px 0 0;
|
||||||
min-width: 70px;
|
min-width: 70px;
|
||||||
border: 1px solid #443da0;
|
border: 1px solid #443da0;
|
||||||
background: #000;
|
background: #000;
|
||||||
@ -4238,7 +4381,7 @@ td.app {
|
|||||||
div.applabel {
|
div.applabel {
|
||||||
font-size: 8pt;
|
font-size: 8pt;
|
||||||
margin: 2px 0 0;
|
margin: 2px 0 0;
|
||||||
padding: 5px 2px 2px;
|
padding: 5px 2px 6px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
vertical-align: bottom;
|
vertical-align: bottom;
|
||||||
line-height: 95%;
|
line-height: 95%;
|
||||||
@ -4579,7 +4722,7 @@ table.sybil_routerinfo:first-of-type th {
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.sybil_floodfill, p.family, p.threatpoints, p.hashdist, p#sybil_totals {
|
p.sybil_info, p.family, p.threatpoints, p.hashdist, p#sybil_totals {
|
||||||
border: 1px solid #443da0;
|
border: 1px solid #443da0;
|
||||||
padding: 5px 5px 5px 30px;
|
padding: 5px 5px 5px 30px;
|
||||||
margin: 3px 0;
|
margin: 3px 0;
|
||||||
@ -4590,15 +4733,15 @@ p.sybil_floodfill, p.family, p.threatpoints, p.hashdist, p#sybil_totals {
|
|||||||
box-shadow: inset 0 0 0 1px #080077;
|
box-shadow: inset 0 0 0 1px #080077;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.sybil_floodfill, p.hashdist, p.family {
|
p.sybil_info, p.hashdist, p.family {
|
||||||
margin-top: -1px;
|
margin-top: -1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.sybil_floodfill + p.sybil_floodfill, p.family + p.family {
|
p.sybil_info + p.sybil_info, p.family + p.family {
|
||||||
margin-top: -4px;
|
margin-top: -4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.sybil_floodfill + a[name] + table.sybil_routerinfo, p.hashdist + a[name] + table.sybil_routerinfo {
|
p.sybil_info + a[name] + table.sybil_routerinfo, p.hashdist + a[name] + table.sybil_routerinfo {
|
||||||
margin-top: 10px !important;
|
margin-top: 10px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5172,4 +5315,8 @@ h4#updateplugins {
|
|||||||
.sorry {
|
.sorry {
|
||||||
margin-left: 232px !important;
|
margin-left: 232px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.subheading b {
|
||||||
|
font-size: 10.5pt !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,16 @@ div.routersummary {
|
|||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 1500px) {
|
||||||
|
div.routersummary {
|
||||||
|
width: 600px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.routersummary table[id^="sb_"] {
|
||||||
|
width: 600px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
div[style^='height'] + a {
|
div[style^='height'] + a {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding-top: 8px !important;
|
padding-top: 8px !important;
|
||||||
@ -111,3 +121,21 @@ div.main {
|
|||||||
min-width: 580px;
|
min-width: 580px;
|
||||||
margin: -1px 0 !important;
|
margin: -1px 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sorry {
|
||||||
|
margin: -1px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 1500px) {
|
||||||
|
div.news {
|
||||||
|
margin: -1px 0 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.main {
|
||||||
|
margin: -1px 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sorry {
|
||||||
|
margin: -1px 0 0 !important;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user