diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java index 9936a1f77..402cf6b7e 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java @@ -233,7 +233,7 @@ public class NetDbHelper extends HelperBase { } if (!span) buf.append(""); - buf.append(""); + buf.append("\n"); _out.write(buf.toString()); } @@ -241,23 +241,25 @@ public class NetDbHelper extends HelperBase { * @since 0.9.28 */ private void renderLookupForm() throws IOException { - _out.write("

Pick One

\n" + - "Caps e.g. f or XOfR
\n" + - "Cost
\n" + - "Country code e.g. ru
\n" + - "Family
\n" + - "Hash prefix
\n" + - "IP host name, IPv4, or IPv6, /24,/16,/8 suffixes optional for IPv4
\n" + - "IPv6 Prefix
\n" + - "MTU
\n" + - "Port
\n" + - "Sig Type
\n" + - "SSU Caps
\n" + - "Version
\n" + - "

Add Sybil analysis (must pick one above):

\n" + - "Sybil close to Router hash, dest hash, b32, or from address book
\n" + - "or Sybil close to this router
" + - "

" + - "
\n"); + _out.write("
\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "
Network Database Search
Select one search field only:
Capabilities:e.g. f or XOfR
Cost:
Country Code:e.g. ru
Router Family:
Hash Prefix:
IP or Hostname:host name, IPv4, or IPv6, /24,/16,/8 suffixes optional for IPv4
IPv6 Prefix:
MTU:
Port Number:
Signature Type:
SSU Capabilities:
Router Version:
Add Sybil analysis (must pick one above):
Sybil close to:Router hash, dest hash, b32, or from address book
or Sybil close to this router:
\n
\n"); } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java index 5bda8fef7..8deac73f2 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java @@ -521,8 +521,9 @@ class NetDbRenderer { buf.append("" + _t("Country") + "" + _t("Count") + "\n"); for (String country : countryList) { int num = countries.count(country); - buf.append("\"").append(country.toUpperCase(Locale.US)).append("\""); "); + buf.append(""); + buf.append("\"").append(country.toUpperCase(Locale.US)).append("\"");"); buf.append(getTranslatedCountry(country)); buf.append("").append(num).append("\n"); } @@ -616,9 +617,10 @@ class NetDbRenderer { .append(""); String country = _context.commSystem().getCountry(info.getIdentity().getHash()); if(country != null) { + buf.append(""); buf.append("\"").append(country.toUpperCase(Locale.US)).append('\"'); "); + buf.append(" src=\"/flags.jsp?c=").append(country).append("\"> ").append(""); } for (RouterAddress addr : info.getAddresses()) { String style = addr.getTransportStyle(); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java index a4e43112a..97b492d0a 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java @@ -832,7 +832,7 @@ public class SummaryHelper extends HelperBase { if (allowReseed()) { if (reseedInProgress) { // While reseed occurring, show status message instead - buf.append("").append(_context.netDb().reseedChecker().getStatus()).append("
"); + buf.append("
").append(_context.netDb().reseedChecker().getStatus()).append("
"); } else { // While no reseed occurring, show reseed link long nonce = _context.random().nextLong(); @@ -849,7 +849,7 @@ public class SummaryHelper extends HelperBase { if (!reseedInProgress) { String reseedErrorMessage = _context.netDb().reseedChecker().getError(); if (reseedErrorMessage.length() > 0) { - buf.append("").append(reseedErrorMessage).append("
"); + buf.append("
").append(reseedErrorMessage).append("
"); } } if (buf.length() <= 0) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SybilRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SybilRenderer.java index b349c2861..0ac62b07c 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SybilRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SybilRenderer.java @@ -218,12 +218,12 @@ class SybilRenderer { // Distance to our router analysis buf.append("

Closest Floodfills to Our Routing Key (Where we Store our RI)

"); - buf.append("

See all

"); + buf.append("

See all

"); renderRouterInfoHTML(out, buf, ourRKey, avgMinDist, ris, points); RouterKeyGenerator rkgen = _context.routerKeyGenerator(); Hash nkey = rkgen.getNextRoutingKey(us); buf.append("

Closest Floodfills to Tomorrow's Routing Key (Where we will Store our RI)

"); - buf.append("

See all

"); + buf.append("

See all

"); renderRouterInfoHTML(out, buf, nkey, avgMinDist, ris, points); buf.append("

Closest Floodfills to Our Router Hash (DHT Neighbors if we are Floodfill)

"); @@ -247,11 +247,11 @@ class SybilRenderer { TunnelPool in = clientInboundPools.get(client); String name = (in != null) ? in.getSettings().getDestinationNickname() : client.toBase64().substring(0,4); buf.append("

Closest floodfills to the Routing Key for " + DataHelper.escapeHTML(name) + " (where we store our LS)

"); - buf.append("

See all

"); + buf.append("

See all

"); renderRouterInfoHTML(out, buf, rkey, avgMinDist, ris, points); nkey = rkgen.getNextRoutingKey(ls.getHash()); buf.append("

Closest floodfills to Tomorrow's Routing Key for " + DataHelper.escapeHTML(name) + " (where we will store our LS)

"); - buf.append("

See all

"); + buf.append("

See all

"); renderRouterInfoHTML(out, buf, nkey, avgMinDist, ris, points); } @@ -406,7 +406,7 @@ class SybilRenderer { if (ip == null) continue; if (ip[0] == ourIP[0] && ip[1] == ourIP[1]) { - buf.append("

"); + buf.append("

"); if (ip[2] == ourIP[2]) { if (ip[3] == ourIP[3]) { buf.append("Same IP as us"); @@ -457,7 +457,7 @@ class SybilRenderer { int i2 = (i >> 8) & 0xff; int i3 = i & 0xff; String sip = i0 + "." + i1 + '.' + i2 + '.' + i3; - buf.append("

").append(count).append(" floodfills with IP ").append(count).append(" floodfills with IP ").append(sip) .append(":

"); for (RouterInfo info : ris) { @@ -510,7 +510,7 @@ class SybilRenderer { int i1 = (i >> 8) & 0xff; int i2 = i & 0xff; String sip = i0 + "." + i1 + '.' + i2 + ".0/24"; - buf.append("

").append(count).append(" floodfills with IP ").append(count).append(" floodfills with IP ").append(sip) .append(":

"); for (RouterInfo info : ris) { @@ -560,7 +560,7 @@ class SybilRenderer { int i0 = i >> 8; int i1 = i & 0xff; String sip = i0 + "." + i1 + ".0/16"; - buf.append("

").append(count).append(" floodfills with IP ").append(count).append(" floodfills with IP ").append(sip) .append("

"); for (RouterInfo info : ris) { @@ -728,11 +728,11 @@ class SybilRenderer { if (i == 0) { //buf.append("

Not to worry, but above router is closer than average minimum distance " + fmt.format(avgMinDist) + "

"); } else if (i == 1) { - buf.append("

Not to worry, but above routers are closer than average minimum distance " + fmt.format(avgMinDist) + "

"); + buf.append("

Not to worry, but above routers are closer than average minimum distance " + fmt.format(avgMinDist) + "

"); } else if (i == 2) { - buf.append("

Possible Sybil Warning - above routers are closer than average minimum distance " + fmt.format(avgMinDist) + "

"); + buf.append("

Possible Sybil Warning - above routers are closer than average minimum distance " + fmt.format(avgMinDist) + "

"); } else { - buf.append("

Major Sybil Warning - above router is closer than average minimum distance " + fmt.format(avgMinDist) + "

"); + buf.append("

Major Sybil Warning - above router is closer than average minimum distance " + fmt.format(avgMinDist) + "

"); } } // this is dumb because they are already sorted @@ -884,9 +884,10 @@ class SybilRenderer { buf.append("" + _t("Addresses") + ":"); String country = _context.commSystem().getCountry(info.getIdentity().getHash()); if(country != null) { + buf.append(""); buf.append("\"").append(country.toUpperCase(Locale.US)).append('\"'); "); + buf.append(" src=\"/flags.jsp?c=").append(country).append("\"> ").append(""); } for (RouterAddress addr : info.getAddresses()) { String style = addr.getTransportStyle(); @@ -921,7 +922,7 @@ class SybilRenderer { return; final DecimalFormat fmt = new DecimalFormat("#0.00"); XORComparator xor = new XORComparator(Hash.FAKE_HASH); - out.write("

Group Distances

\n"); + out.write("

Group Distances

HashDistance from previous
\n"); Collections.sort(sybils, xor); Hash prev = null; for (Hash h : sybils) { @@ -952,8 +953,8 @@ class SybilRenderer { prev = null; final int limit = Math.min(10, sybils.size()); for (int i = start; i <= days; i++) { - out.write("

Distance for " + new Date(now) + - "

HashDistance from previous
\n"); + out.write("

Distance for " + new Date(now) + + "

HashDistanceDistance from previous
\n"); Hash rkey = rkgen.getRoutingKey(from, now); xor = new XORComparator(rkey); Collections.sort(sybils, xor); diff --git a/core/java/src/net/i2p/kademlia/KBucketSet.java b/core/java/src/net/i2p/kademlia/KBucketSet.java index 34fa516b7..96803d1b1 100644 --- a/core/java/src/net/i2p/kademlia/KBucketSet.java +++ b/core/java/src/net/i2p/kademlia/KBucketSet.java @@ -765,7 +765,7 @@ public class KBucketSet { @Override public String toString() { StringBuilder buf = new StringBuilder(1024); - buf.append("Bucket set rooted on: ").append(_us.toString()) + buf.append("
Bucket set rooted on: ").append(_us.toString()) .append(" K=").append(BUCKET_SIZE) .append(" B=").append(B_VALUE) .append(" with ").append(size()) @@ -775,7 +775,7 @@ public class KBucketSet { int len = _buckets.size(); for (int i = 0; i < len; i++) { KBucket b = _buckets.get(i); - buf.append("* Bucket ").append(i).append("/").append(len).append(": "); + buf.append("Bucket ").append(i).append("/").append(len).append(": "); buf.append(b.toString()).append("
\n"); } } finally { releaseReadLock(); } diff --git a/installer/resources/themes/console/classic/console.css b/installer/resources/themes/console/classic/console.css index 6eb7380e4..5ae478ea1 100644 --- a/installer/resources/themes/console/classic/console.css +++ b/installer/resources/themes/console/classic/console.css @@ -251,7 +251,7 @@ div.routersummary input[type=text] { .routersummary button[type="submit"] { min-width: 87px; margin: 2px 2px 1px; - padding: 5px 2px !important; +/* padding: 5px 2px !important;*/ } #xhr { @@ -380,6 +380,15 @@ div.routersummary td { 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 { margin: -2px 0; } @@ -546,6 +555,7 @@ input[type="radio"], input[type="checkbox"] { min-width: 16px !important; min-height: 16px !important; vertical-align: middle; + background: none; } input[type="file"] { @@ -1035,22 +1045,56 @@ button::-moz-focus-inner, input[type="submit"]::-moz-focus-inner, input[type="re .routersummary .download { 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; - padding: 5px 3px 5px 17px !important; + padding: 5px 3px 5px 21px !important; /* 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) { .routersummary .download, .routersummary .download:hover, .routersummary .download:focus, .routersummary .download:active { 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 buttons & inputs */ @@ -1193,7 +1237,7 @@ div.news { border-right: 1px solid #89f; text-align: right; color: #331e0c; - min-width: 500px; + min-width: 520px; padding: 3px 10px 3px 10px; font-size: 8pt; } @@ -2701,10 +2745,10 @@ p#enablefullstats { } .langbox { - margin: 5px 5px 0 5px; + margin: 4px 4px 0; color: #001; font-size: 7pt; - width: 312px; + width: 360px; text-align: right; float: right; padding: 1px; @@ -3664,7 +3708,7 @@ div#sybilnav { 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; padding: 5px 5px 5px 30px; 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%); } -p.family + p.family, p.sybil_floodfill + p.sybil_floodfill { +p.family + p.family, p.sybil_info + p.sybil_info { 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; } @@ -3712,6 +3756,40 @@ p:empty { /* empty paragraph nuke */ 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 */ /* /stats */ @@ -3879,6 +3957,25 @@ table#netdboverview { 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 */ div#volunteer, div#sidebarhelp, div#configurationhelp, div#reachabilityhelp, div#legal, div#changelog { @@ -4288,7 +4385,7 @@ div.news { } .routersummary button[value="cancelShutdown"] { - padding-left: 20px !important; + padding-left: 21px !important; } div.app { @@ -4359,4 +4456,8 @@ div.news { div.joblog h3 { margin-top: 8px; } + +.subheading b { + font-size: 10.5pt !important; +} } diff --git a/installer/resources/themes/console/classic/mobile.css b/installer/resources/themes/console/classic/mobile.css index d2f46085a..92866533e 100644 --- a/installer/resources/themes/console/classic/mobile.css +++ b/installer/resources/themes/console/classic/mobile.css @@ -14,6 +14,16 @@ div.routersummary { margin: 0 auto -6px; } +@media screen and (min-width: 1500px) { +div.routersummary { + width: 600px !important; +} + +.routersummary table[id^="sb_"] { + width: 600px !important; +} +} + #xhr { margin-top: 9px !important; } @@ -105,7 +115,7 @@ h1 { } div.news { - margin: 0 0 -10px; + margin: 0 0 -1px; min-width: 500px; } @@ -114,5 +124,25 @@ div.main { 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; +} } diff --git a/installer/resources/themes/console/dark/console.css b/installer/resources/themes/console/dark/console.css index e367c8715..18063a899 100644 --- a/installer/resources/themes/console/dark/console.css +++ b/installer/resources/themes/console/dark/console.css @@ -397,6 +397,19 @@ div.routersummary table { 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 { background-image: none !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 */ -webkit-filter: invert(100%) sepia(100%) hue-rotate(70deg) saturate(200%); vertical-align: middle; + background: none; } input[type="checkbox"]:hover, .optbox:hover, input[type="checkbox"]:focus, .optbox:focus { @@ -3237,6 +3251,11 @@ table#netdboverview { margin-bottom: 0; } +#netdbcountrylist img { + margin-right: 5px; + text-align: right; +} + #netdbtransports { border-left: 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; } +/* 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 */ #criticallogs ul { /* tidy router logs ul */ @@ -4117,6 +4204,10 @@ table#leasesetdebug th a:hover, table#leasesetsummary th a:hover { font-size: 10pt; } +.main#debug h2 + hr { + display: none; +} + div.debugcontainer { border: 1px solid #f00; } @@ -4412,7 +4503,7 @@ table.sybil_routerinfo:first-of-type th { 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; padding: 5px 5px 5px 30px; 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; } -p.family + p.family, p.sybil_floodfill + p.sybil_floodfill { +p.family + p.family, p.sybil_info + p.sybil_info { margin-top: -4px; } @@ -4432,7 +4523,7 @@ p#sybilinfo { 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; } @@ -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, -#floodfill th, .applabel a, #jardump td { +#floodfill th, .applabel a, #jardump td, .statusnotes { font-size: 9pt !important; } @@ -5078,8 +5169,15 @@ div.joblog h3 { margin-bottom: 12px !important; } - #certs.main p + p:empty + h4 { margin-top: -15px !important; } + +button.reload, button.stop { + min-width: 101px; +} + +.subheading b { + font-size: 10.5pt !important; +} } diff --git a/installer/resources/themes/console/dark/mobile.css b/installer/resources/themes/console/dark/mobile.css index 6402da156..6353aa1fb 100644 --- a/installer/resources/themes/console/dark/mobile.css +++ b/installer/resources/themes/console/dark/mobile.css @@ -23,6 +23,16 @@ div.routersummary { 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 { display: inline-block; padding-top: 8px !important; @@ -113,3 +123,21 @@ div.main { min-width: 590px; 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; +} +} \ No newline at end of file diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 08e72b426..bc8732105 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -289,6 +289,20 @@ div.routersummary table { 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 { background-image: none !important; background-color: transparent !important; @@ -1967,7 +1981,7 @@ h1 { margin: 0 0 10px 207px; font-size: 18pt; line-height: 90%; - letter-spacing: 0.08em; + letter-spacing: 0.12em; text-transform: uppercase; box-shadow: inset 0 0 0 1px #bbf; white-space: normal; @@ -2140,7 +2154,7 @@ h4 { padding: 2px 3px; color: #001; font-size: 7pt; - width: 350px; + width: 360px; text-align: right; float: right; 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; } +.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 { 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-size: 16px 16px, 100% 100% !important; padding: 5px 3px 5px 17px !important; -/* margin-top: -4px;*/ } .routersummary .cancel { margin-top: 10px; } -@media screen and (-webkit-min-device-pixel-ratio:0) { -.routersummary .download, .routersummary .download:hover, .routersummary .download:focus, .routersummary .download:active { - padding-left: 19px !important; +/* 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) 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; - padding: 5px 3px 5px 17px !important; - border: 1px solid #f60; + padding: 5px 3px 5px 21px !important; } /* end sidebar buttons */ @@ -2625,6 +2675,7 @@ input[type="checkbox"], input[type="radio"] { vertical-align: middle !important; margin-top: 4px !important; margin-bottom: 4px !important; + background: none; } 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; } -#netdboverview th { +#netdboverview th, #netdblookup th { text-transform: uppercase; font-size: 11pt; letter-spacing: 0.08em; @@ -3441,6 +3492,11 @@ table#leasesetdebug th a:hover, table#leasesetsummary th a:hover { border-left: 1px solid #447; } +#netdbcountrylist img { + margin-right: 5px; + text-align: right; +} + #leasesetsummary td:first-child { width: 50px; white-space: nowrap; @@ -3611,7 +3667,7 @@ table.sybil_routerinfo:first-of-type th { 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; padding: 5px 5px 5px 30px; margin: 3px 0; @@ -3623,7 +3679,7 @@ p.family + p.family { 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; } @@ -3650,8 +3706,49 @@ p:empty { /* empty paragraph nuke */ 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 { background: #fff; @@ -4125,7 +4222,7 @@ img.app, img.app2p { @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, -#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; } @@ -4190,4 +4287,13 @@ h3#pluginconfig, h3#webappconfig, h3#i2pclientconfig, h3#pluginmanage, p#clientc .sorry { margin-left: 232px !important; } -} \ No newline at end of file + +.routersummary .reload, .routersummary .stop { + min-width: 96px; + margin: 0 3px -5px; +} + +.subheading b { + font-size: 10.5pt !important; +} +} diff --git a/installer/resources/themes/console/light/i2ptunnel.css b/installer/resources/themes/console/light/i2ptunnel.css index c0d170496..1c2b5d540 100644 --- a/installer/resources/themes/console/light/i2ptunnel.css +++ b/installer/resources/themes/console/light/i2ptunnel.css @@ -867,4 +867,4 @@ body, select, .control, input, textarea { th { font-size: 10.5pt; } -} +} \ No newline at end of file diff --git a/installer/resources/themes/console/light/mobile.css b/installer/resources/themes/console/light/mobile.css index 958ce9bf5..92834aedb 100644 --- a/installer/resources/themes/console/light/mobile.css +++ b/installer/resources/themes/console/light/mobile.css @@ -14,6 +14,16 @@ div.routersummary { margin: 0 auto -6px; } +@media screen and (min-width: 1500px) { +div.routersummary { + width: 600px !important; +} + +.routersummary table[id^="sb_"] { + width: 600px !important; +} +} + #xhr { margin-top: 9px !important; } @@ -65,20 +75,44 @@ table[id^="sb_"] tr:nth-child(odd) td { } h1 { - margin: 14px 10px -1px 0; + margin: 14px 0 -1px; min-width: 0; } div.news { - margin: 0 10px -11px 0; + margin: 0 0 -11px; min-width: 0; } div.main { - margin: 10px 10px 20px 0; + margin: 10px 0 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 { padding-bottom: 10px !important; } diff --git a/installer/resources/themes/console/midnight/console.css b/installer/resources/themes/console/midnight/console.css index 85e6f6263..e521ab522 100644 --- a/installer/resources/themes/console/midnight/console.css +++ b/installer/resources/themes/console/midnight/console.css @@ -191,6 +191,7 @@ input[type="checkbox"], .optbox { vertical-align: sub; 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%); + background: none; } 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; } +.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 { text-indent: -99999px; 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; } -.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; +/* 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, #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) { @@ -1165,7 +1211,21 @@ div.logo hr { 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 */ + #sb_localid + #sb_version { margin-top: 6px !important; margin-bottom: 5px !important; @@ -2028,7 +2088,10 @@ h2 a:visited { h2 a:hover { 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 { @@ -2067,11 +2130,11 @@ h2, h3, h4, .confignav { } .langbox { - margin: 3px 4px 2px 5px; + margin: 5px 4px 2px 5px; padding: 0; color: #c9ceff; font-size: 7pt; - width: 350px; + width: 360px; text-align: right; float: right; vertical-align: middle; @@ -2079,7 +2142,8 @@ h2, h3, h4, .confignav { .langbox img { opacity: 0.5; - padding: 1px 2px !important; + margin: 0 !important; + padding: 0; } .langbox img:hover { @@ -3510,6 +3574,7 @@ div#volunteer { } #changelog pre { + margin-top: 11px; padding: 10px 10px 10px 20px; max-height: 600px; overflow-y: scroll; @@ -3570,6 +3635,11 @@ table#netdboverview { margin-bottom: 0; } +#netdbcountrylist img { + margin-right: 5px; + text-align: right; +} + #netdbtransports { border-left: 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; } +/* 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 */ a[name="criticallogs"] + p + h3 + p + ul { /* tidy router logs ul */ @@ -4016,6 +4155,10 @@ table#jardump { /* /jars */ margin-top: -13px; } +.main#debug h2 + hr { + display: none; +} + div.footnote { text-align: right; color: #443da0; @@ -4046,17 +4189,17 @@ div.home { } h4.app, h4.app2 { - background: url(images/header.png) center center repeat-x; - border: 1px solid #443da0; - font-size: 10.5pt; - font-variant: small-caps; - letter-spacing: 2px; - margin: 11px -8px -9px -8px; - padding: 7px 8px 7px; - text-transform: uppercase; - text-align: left; - letter-spacing: 0.08em; - word-spacing: 0.1em; + 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; + font-size: 10.5pt; + font-variant: small-caps; + letter-spacing: 2px; + margin: 11px -8px -9px -8px; + padding: 7px 8px 7px; + text-transform: uppercase; + text-align: left; + letter-spacing: 0.08em; + word-spacing: 0.1em; } h4.app2 { @@ -4073,7 +4216,7 @@ div.ag2 { div.app { float: left; - padding: 2px 0 4px; + padding: 2px 0 0; min-width: 70px; border: 1px solid #443da0; background: #000; @@ -4238,7 +4381,7 @@ td.app { div.applabel { font-size: 8pt; margin: 2px 0 0; - padding: 5px 2px 2px; + padding: 5px 2px 6px; text-align: center; vertical-align: bottom; line-height: 95%; @@ -4579,7 +4722,7 @@ table.sybil_routerinfo:first-of-type th { 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; padding: 5px 5px 5px 30px; 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; } -p.sybil_floodfill, p.hashdist, p.family { +p.sybil_info, p.hashdist, p.family { 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; } -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; } @@ -5172,4 +5315,8 @@ h4#updateplugins { .sorry { margin-left: 232px !important; } + +.subheading b { + font-size: 10.5pt !important; +} } diff --git a/installer/resources/themes/console/midnight/mobile.css b/installer/resources/themes/console/midnight/mobile.css index ede599ac7..318ac8724 100644 --- a/installer/resources/themes/console/midnight/mobile.css +++ b/installer/resources/themes/console/midnight/mobile.css @@ -23,6 +23,16 @@ div.routersummary { 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 { display: inline-block; padding-top: 8px !important; @@ -111,3 +121,21 @@ div.main { min-width: 580px; 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; +} +} \ No newline at end of file
HashDistanceDistance from previous