Create gh-pages branch via GitHub
This commit is contained in:
commit
41c17713f2
BIN
images/arrow-down.png
Normal file
BIN
images/arrow-down.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 216 B |
BIN
images/octocat-small.png
Normal file
BIN
images/octocat-small.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 357 B |
203
index.html
Normal file
203
index.html
Normal file
@ -0,0 +1,203 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
||||
<title>Dnsdiag by farrokhi</title>
|
||||
|
||||
<link rel="stylesheet" href="stylesheets/styles.css">
|
||||
<link rel="stylesheet" href="stylesheets/github-light.css">
|
||||
<script src="javascripts/scale.fix.js"></script>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<header>
|
||||
<h1 class="header">Dnsdiag</h1>
|
||||
<p class="header">DNS Diagnostics and Performance Measurement Tools</p>
|
||||
|
||||
<ul>
|
||||
<li class="download"><a class="buttons" href="https://github.com/farrokhi/dnsdiag/zipball/master">Download ZIP</a></li>
|
||||
<li class="download"><a class="buttons" href="https://github.com/farrokhi/dnsdiag/tarball/master">Download TAR</a></li>
|
||||
<li><a class="buttons github" href="https://github.com/farrokhi/dnsdiag">View On GitHub</a></li>
|
||||
</ul>
|
||||
|
||||
<p class="header">This project is maintained by <a class="header name" href="https://github.com/farrokhi">farrokhi</a></p>
|
||||
|
||||
|
||||
</header>
|
||||
<section>
|
||||
<p><a href="https://travis-ci.org/farrokhi/dnsdiag"><img src="https://travis-ci.org/farrokhi/dnsdiag.svg" alt="Build Status"></a> <a href="https://pypi.python.org/pypi/dnsdiag/"><img src="https://img.shields.io/pypi/v/dnsdiag.svg?maxAge=8600" alt="PyPI"></a> <a href=""><img src="https://img.shields.io/pypi/l/dnsdiag.svg?maxAge=8600" alt="PyPI"></a> <a href=""><img src="https://img.shields.io/pypi/pyversions/dnsdiag.svg?maxAge=8600" alt="PyPI"></a> <a href="https://github.com/farrokhi/dnsdiag/stargazers"><img src="https://img.shields.io/github/stars/farrokhi/dnsdiag.svg?style=social&label=Star&maxAge=8600" alt="GitHub stars"></a></p>
|
||||
|
||||
<h1>
|
||||
<a id="dns-diagnostics-and-performance-measurement-tools" class="anchor" href="#dns-diagnostics-and-performance-measurement-tools" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>DNS Diagnostics and Performance Measurement Tools</h1>
|
||||
|
||||
<p>Ever been wondering if your ISP is <a href="https://decentralize.today/is-your-isp-hijacking-your-dns-traffic-f3eb7ccb0ee7#.fevks5wyc">hijacking your DNS traffic</a>? Ever observed any
|
||||
misbehavior with your DNS responses? Ever been redirected to wrong address and
|
||||
suspected something is wrong with your DNS? Here we have a <a href="http://github.com/farrokhi/dnsdiag">set of tools</a> to
|
||||
perform basic audits on your DNS requests and responses to make sure your DNS is
|
||||
working as you expect.</p>
|
||||
|
||||
<p>You can measure the response time of any given DNS server for arbitrary requests
|
||||
using <code>dnsping</code>. Just like traditional ping utility, it gives you similar
|
||||
functionality for DNS requests.</p>
|
||||
|
||||
<p>You can also trace the path your DNS request takes to destination to make sure
|
||||
it is not being redirected or hijacked. This can be done by comparing different
|
||||
DNS queries being sent to the same DNS server using <code>dnstraceroute</code> and observe
|
||||
if there is any difference between the path.</p>
|
||||
|
||||
<p><code>dnseval</code> evaluates multiple DNS resolvers and helps you choose the best DNS
|
||||
server for your network. While it is highly recommended to use your own DNS
|
||||
resolver and never trust any third-party DNS server, but in case you need to
|
||||
choose the best DNS forwarder for your network, <code>dnseval</code> lets you compare
|
||||
different DNS servers from performance (latency) and reliability (loss) point
|
||||
of view.</p>
|
||||
|
||||
<h1>
|
||||
<a id="prerequisites" class="anchor" href="#prerequisites" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>prerequisites</h1>
|
||||
|
||||
<p>This script requires python3 as well as latest
|
||||
<a href="http://www.dnspython.org/">dnspython</a> and
|
||||
<a href="https://pythonhosted.org/cymruwhois/">cymruwhois</a>. Please note that
|
||||
"dnstraceroute" requires a modified version of dnspython module. All required
|
||||
third-party modules are included as GIT submodules. You just need to run <code>git
|
||||
submodule update --init</code> and project directory to pull the required code.</p>
|
||||
|
||||
<h1>
|
||||
<a id="installation" class="anchor" href="#installation" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>installation</h1>
|
||||
|
||||
<p>There are several ways that you can use this toolset. However using the sourcecode is always recommended.</p>
|
||||
|
||||
<h2>
|
||||
<a id="from-source-code" class="anchor" href="#from-source-code" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>From Source Code</h2>
|
||||
|
||||
<ol>
|
||||
<li>You can checkout this git repo and its submodules</li>
|
||||
</ol>
|
||||
|
||||
<pre><code>git clone https://github.com/farrokhi/dnsdiag.git
|
||||
cd dnsdiag
|
||||
git submodule update --init
|
||||
</code></pre>
|
||||
|
||||
<ol>
|
||||
<li>You can alternatively install the package using pip:</li>
|
||||
</ol>
|
||||
|
||||
<pre><code>pip3 install --process-dependency-links dnsdiag
|
||||
</code></pre>
|
||||
|
||||
<h2>
|
||||
<a id="from-binary" class="anchor" href="#from-binary" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>From Binary</h2>
|
||||
|
||||
<p>From time to time, binary version will be released for Windows, Mac OS X and Linux platforms. You can grab the latest release from <a href="https://github.com/farrokhi/dnsdiag/releases">releases page</a>.</p>
|
||||
|
||||
<h1>
|
||||
<a id="dnsping" class="anchor" href="#dnsping" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>dnsping</h1>
|
||||
|
||||
<p>dnsping pings a DNS resolver by sending an arbitrary DNS query for given number
|
||||
of times:</p>
|
||||
|
||||
<pre><code>% ./dnsping.py -c 3 -t AAAA -s 8.8.8.8 dnsdiag.org
|
||||
dnsping.py DNS: 8.8.8.8:53, hostname: dnsdiag.org, rdatatype: AAAA
|
||||
4 bytes from 8.8.8.8: seq=0 time=123.509 ms
|
||||
4 bytes from 8.8.8.8: seq=1 time=115.726 ms
|
||||
4 bytes from 8.8.8.8: seq=2 time=117.351 ms
|
||||
|
||||
--- 8.8.8.8 dnsping statistics ---
|
||||
3 requests transmitted, 3 responses received, 0% lost
|
||||
min=115.726 ms, avg=118.862 ms, max=123.509 ms, stddev=4.105 ms
|
||||
</code></pre>
|
||||
|
||||
<p>This script calculates minimum, maximum and average response time as well as
|
||||
jitter (stddev)</p>
|
||||
|
||||
<h1>
|
||||
<a id="dnstraceroute" class="anchor" href="#dnstraceroute" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>dnstraceroute</h1>
|
||||
|
||||
<p>dnstraceroute is a traceroute utility to figure out the path that your DNS
|
||||
request is passing through to get to its destination. You may want to compare
|
||||
it to your actual network traceroute and make sure your DNS traffic is not
|
||||
routed to any unwanted path.</p>
|
||||
|
||||
<pre><code>% ./dnstraceroute.py --expert -C -t A -s 8.8.4.4 facebook.com
|
||||
dnstraceroute.py DNS: 8.8.4.4:53, hostname: facebook.com, rdatatype: A
|
||||
1 192.168.0.1 (192.168.0.1) 1 ms
|
||||
2 192.168.28.177 (192.168.28.177) 4 ms
|
||||
3 192.168.0.1 (192.168.0.1) 693 ms
|
||||
4 172.19.4.17 (172.19.4.17) 3 ms
|
||||
5 google-public-dns-b.google.com (8.8.4.4) 8 ms
|
||||
|
||||
=== Expert Hints ===
|
||||
[*] public DNS server is next to a private IP address (possible hijacking)
|
||||
</code></pre>
|
||||
|
||||
<p>Using <code>--expert</code> will instruct dnstraceroute to print expert hints (such as warnings of possible DNS traffic hijacking).</p>
|
||||
|
||||
<h1>
|
||||
<a id="dnseval" class="anchor" href="#dnseval" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>dnseval</h1>
|
||||
|
||||
<p>dnseval is a bulk ping utility that sends an arbitrary DNS query to a give list
|
||||
of DNS servers. This script is meant for comparing response time of multiple
|
||||
DNS servers at once:</p>
|
||||
|
||||
<pre><code>% ./dnseval.py -t AAAA -f public-v4.txt -c10 fg.weberdns.de
|
||||
server avg(ms) min(ms) max(ms) stddev(ms) lost(%) flags
|
||||
------------------------------------------------------------------------------------------------
|
||||
8.8.8.8 94.556 90.488 112.209 6.322 %0 QR -- -- RD RA AD --
|
||||
8.8.4.4 92.599 90.265 94.338 1.086 %0 QR -- -- RD RA AD --
|
||||
ns.ripe.net 92.754 91.632 93.980 0.900 %0 QR -- -- RD RA AD --
|
||||
4.2.2.1 92.703 91.869 93.298 0.482 %0 QR -- -- RD RA AD --
|
||||
4.2.2.2 93.195 91.667 94.919 1.065 %0 QR -- -- RD RA AD --
|
||||
4.2.2.3 93.118 92.076 94.835 0.835 %0 QR -- -- RD RA AD --
|
||||
4.2.2.4 94.308 92.175 103.318 3.261 %0 QR -- -- RD RA AD --
|
||||
4.2.2.5 92.650 91.643 94.460 1.002 %0 QR -- -- RD RA AD --
|
||||
209.244.0.3 92.810 89.961 94.807 1.266 %0 QR -- -- RD RA AD --
|
||||
209.244.0.4 93.127 91.962 95.970 1.227 %0 QR -- -- RD RA AD --
|
||||
195.46.39.39 92.770 90.777 93.656 0.914 %0 QR -- -- RD RA AD --
|
||||
195.46.39.40 92.903 91.280 94.914 1.147 %0 QR -- -- RD RA AD --
|
||||
</code></pre>
|
||||
|
||||
<h3>
|
||||
<a id="author" class="anchor" href="#author" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Author</h3>
|
||||
|
||||
<p>Babak Farrokhi </p>
|
||||
|
||||
<ul>
|
||||
<li>twitter: <a href="https://twitter.com/farrokhi">@farrokhi</a>
|
||||
</li>
|
||||
<li>github: <a href="https://github.com/farrokhi/">/farrokhi</a>
|
||||
</li>
|
||||
<li>website: <a href="https://farrokhi.net/">farrokhi.net</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3>
|
||||
<a id="license" class="anchor" href="#license" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>License</h3>
|
||||
|
||||
<p>dnsdiag is released under a 2 clause BSD license.</p>
|
||||
|
||||
<h3>
|
||||
<a id="credits" class="anchor" href="#credits" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Credits</h3>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://github.com/rthalley">@rthalley</a> for invaluable <a href="https://github.com/rthalley/dnspython">dnspython</a> library</li>
|
||||
<li>
|
||||
<a href="https://github.com/JustinAzoff">@JustinAzoff</a> for <a href="https://github.com/JustinAzoff/python-cymruwhois">python-cymruwhois</a> library</li>
|
||||
<li>
|
||||
<a href="https://github.com/bortzmeyer">@bortzmeyer</a> for his feedback and patches</li>
|
||||
</ul>
|
||||
</section>
|
||||
<footer>
|
||||
<p><small>Hosted on <a href="https://pages.github.com">GitHub Pages</a> using the Dinky theme</small></p>
|
||||
</footer>
|
||||
</div>
|
||||
<!--[if !IE]><script>fixScale(document);</script><![endif]-->
|
||||
|
||||
</body>
|
||||
</html>
|
20
javascripts/scale.fix.js
Normal file
20
javascripts/scale.fix.js
Normal file
@ -0,0 +1,20 @@
|
||||
fixScale = function(doc) {
|
||||
|
||||
var addEvent = 'addEventListener',
|
||||
type = 'gesturestart',
|
||||
qsa = 'querySelectorAll',
|
||||
scales = [1, 1],
|
||||
meta = qsa in doc ? doc[qsa]('meta[name=viewport]') : [];
|
||||
|
||||
function fix() {
|
||||
meta.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1];
|
||||
doc.removeEventListener(type, fix, true);
|
||||
}
|
||||
|
||||
if ((meta = meta[meta.length - 1]) && addEvent in doc) {
|
||||
fix();
|
||||
scales = [.25, 1.6];
|
||||
doc[addEvent](type, fix, true);
|
||||
}
|
||||
|
||||
};
|
6
params.json
Normal file
6
params.json
Normal file
File diff suppressed because one or more lines are too long
124
stylesheets/github-light.css
Normal file
124
stylesheets/github-light.css
Normal file
@ -0,0 +1,124 @@
|
||||
/*
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 GitHub, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
*/
|
||||
|
||||
.pl-c /* comment */ {
|
||||
color: #969896;
|
||||
}
|
||||
|
||||
.pl-c1 /* constant, variable.other.constant, support, meta.property-name, support.constant, support.variable, meta.module-reference, markup.raw, meta.diff.header */,
|
||||
.pl-s .pl-v /* string variable */ {
|
||||
color: #0086b3;
|
||||
}
|
||||
|
||||
.pl-e /* entity */,
|
||||
.pl-en /* entity.name */ {
|
||||
color: #795da3;
|
||||
}
|
||||
|
||||
.pl-smi /* variable.parameter.function, storage.modifier.package, storage.modifier.import, storage.type.java, variable.other */,
|
||||
.pl-s .pl-s1 /* string source */ {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.pl-ent /* entity.name.tag */ {
|
||||
color: #63a35c;
|
||||
}
|
||||
|
||||
.pl-k /* keyword, storage, storage.type */ {
|
||||
color: #a71d5d;
|
||||
}
|
||||
|
||||
.pl-s /* string */,
|
||||
.pl-pds /* punctuation.definition.string, string.regexp.character-class */,
|
||||
.pl-s .pl-pse .pl-s1 /* string punctuation.section.embedded source */,
|
||||
.pl-sr /* string.regexp */,
|
||||
.pl-sr .pl-cce /* string.regexp constant.character.escape */,
|
||||
.pl-sr .pl-sre /* string.regexp source.ruby.embedded */,
|
||||
.pl-sr .pl-sra /* string.regexp string.regexp.arbitrary-repitition */ {
|
||||
color: #183691;
|
||||
}
|
||||
|
||||
.pl-v /* variable */ {
|
||||
color: #ed6a43;
|
||||
}
|
||||
|
||||
.pl-id /* invalid.deprecated */ {
|
||||
color: #b52a1d;
|
||||
}
|
||||
|
||||
.pl-ii /* invalid.illegal */ {
|
||||
color: #f8f8f8;
|
||||
background-color: #b52a1d;
|
||||
}
|
||||
|
||||
.pl-sr .pl-cce /* string.regexp constant.character.escape */ {
|
||||
font-weight: bold;
|
||||
color: #63a35c;
|
||||
}
|
||||
|
||||
.pl-ml /* markup.list */ {
|
||||
color: #693a17;
|
||||
}
|
||||
|
||||
.pl-mh /* markup.heading */,
|
||||
.pl-mh .pl-en /* markup.heading entity.name */,
|
||||
.pl-ms /* meta.separator */ {
|
||||
font-weight: bold;
|
||||
color: #1d3e81;
|
||||
}
|
||||
|
||||
.pl-mq /* markup.quote */ {
|
||||
color: #008080;
|
||||
}
|
||||
|
||||
.pl-mi /* markup.italic */ {
|
||||
font-style: italic;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.pl-mb /* markup.bold */ {
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.pl-md /* markup.deleted, meta.diff.header.from-file */ {
|
||||
color: #bd2c00;
|
||||
background-color: #ffecec;
|
||||
}
|
||||
|
||||
.pl-mi1 /* markup.inserted, meta.diff.header.to-file */ {
|
||||
color: #55a532;
|
||||
background-color: #eaffea;
|
||||
}
|
||||
|
||||
.pl-mdr /* meta.diff.range */ {
|
||||
font-weight: bold;
|
||||
color: #795da3;
|
||||
}
|
||||
|
||||
.pl-mo /* meta.output */ {
|
||||
color: #1d3e81;
|
||||
}
|
||||
|
423
stylesheets/styles.css
Normal file
423
stylesheets/styles.css
Normal file
@ -0,0 +1,423 @@
|
||||
@import url(https://fonts.googleapis.com/css?family=Arvo:400,700,400italic);
|
||||
|
||||
/* MeyerWeb Reset */
|
||||
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, header, hgroup,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
|
||||
/* Base text styles */
|
||||
|
||||
body {
|
||||
padding:10px 50px 0 0;
|
||||
font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-size: 14px;
|
||||
color: #232323;
|
||||
background-color: #FBFAF7;
|
||||
margin: 0;
|
||||
line-height: 1.8em;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
color:#232323;
|
||||
margin:36px 0 10px;
|
||||
}
|
||||
|
||||
p, ul, ol, table, dl {
|
||||
margin:0 0 22px;
|
||||
}
|
||||
|
||||
h1, h2, h3 {
|
||||
font-family: Arvo, Monaco, serif;
|
||||
line-height:1.3;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
h1,h2, h3 {
|
||||
display: block;
|
||||
border-bottom: 1px solid #ccc;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
h4, h5, h6 {
|
||||
font-family: Arvo, Monaco, serif;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
a {
|
||||
color:#C30000;
|
||||
font-weight:200;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a small {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight:700;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-position: inside;
|
||||
list-style: disc;
|
||||
padding-left: 25px;
|
||||
}
|
||||
|
||||
ol {
|
||||
list-style-position: inside;
|
||||
list-style: decimal;
|
||||
padding-left: 25px;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0;
|
||||
padding: 0 0 0 20px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
dl, dt, dd, dl p {
|
||||
font-color: #444;
|
||||
}
|
||||
|
||||
dl dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dl dd {
|
||||
padding-left: 20px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
dl p {
|
||||
padding-left: 20px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
hr {
|
||||
border:0;
|
||||
background:#ccc;
|
||||
height:1px;
|
||||
margin:0 0 24px;
|
||||
}
|
||||
|
||||
/* Images */
|
||||
|
||||
img {
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
max-width: 650px;
|
||||
padding: 5px;
|
||||
margin: 10px 0 32px 0;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
p img {
|
||||
display: inline;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
|
||||
code, pre {
|
||||
font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
|
||||
color:#000;
|
||||
font-size:14px;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 4px 12px;
|
||||
background: #FDFEFB;
|
||||
border-radius:4px;
|
||||
border:1px solid #D7D8C8;
|
||||
overflow: auto;
|
||||
overflow-y: hidden;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
|
||||
/* Tables */
|
||||
|
||||
table {
|
||||
width:100%;
|
||||
}
|
||||
|
||||
table {
|
||||
border: 1px solid #ccc;
|
||||
margin-bottom: 32px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
font-family: 'Arvo', Helvetica, Arial, sans-serif;
|
||||
font-size: 18px;
|
||||
font-weight: normal;
|
||||
padding: 10px;
|
||||
background: #232323;
|
||||
color: #FDFEFB;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 10px;
|
||||
background: #ccc;
|
||||
}
|
||||
|
||||
|
||||
/* Wrapper */
|
||||
.wrapper {
|
||||
width:960px;
|
||||
}
|
||||
|
||||
|
||||
/* Header */
|
||||
|
||||
header {
|
||||
background-color: #171717;
|
||||
color: #FDFDFB;
|
||||
width:170px;
|
||||
float:left;
|
||||
position:fixed;
|
||||
border: 1px solid #000;
|
||||
-webkit-border-top-right-radius: 4px;
|
||||
-webkit-border-bottom-right-radius: 4px;
|
||||
-moz-border-radius-topright: 4px;
|
||||
-moz-border-radius-bottomright: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
padding: 34px 25px 22px 50px;
|
||||
margin: 30px 25px 0 0;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
p.header {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
h1.header {
|
||||
font-family: Arvo, sans-serif;
|
||||
font-size: 30px;
|
||||
font-weight: 300;
|
||||
line-height: 1.3em;
|
||||
border-bottom: none;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
|
||||
h1.header, a.header, a.name, header a{
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
a.header {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a.name {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
header ul {
|
||||
list-style:none;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
header li {
|
||||
list-style-type: none;
|
||||
width:132px;
|
||||
height:15px;
|
||||
margin-bottom: 12px;
|
||||
line-height: 1em;
|
||||
padding: 6px 6px 6px 7px;
|
||||
|
||||
background: #AF0011;
|
||||
background: -moz-linear-gradient(top, #AF0011 0%, #820011 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(100%,#dddddd));
|
||||
background: -webkit-linear-gradient(top, #AF0011 0%,#820011 100%);
|
||||
background: -o-linear-gradient(top, #AF0011 0%,#820011 100%);
|
||||
background: -ms-linear-gradient(top, #AF0011 0%,#820011 100%);
|
||||
background: linear-gradient(top, #AF0011 0%,#820011 100%);
|
||||
|
||||
border-radius:4px;
|
||||
border:1px solid #0D0D0D;
|
||||
|
||||
-webkit-box-shadow: inset 0px 1px 1px 0 rgba(233,2,38, 1);
|
||||
box-shadow: inset 0px 1px 1px 0 rgba(233,2,38, 1);
|
||||
|
||||
}
|
||||
|
||||
header li:hover {
|
||||
background: #C3001D;
|
||||
background: -moz-linear-gradient(top, #C3001D 0%, #950119 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(100%,#dddddd));
|
||||
background: -webkit-linear-gradient(top, #C3001D 0%,#950119 100%);
|
||||
background: -o-linear-gradient(top, #C3001D 0%,#950119 100%);
|
||||
background: -ms-linear-gradient(top, #C3001D 0%,#950119 100%);
|
||||
background: linear-gradient(top, #C3001D 0%,#950119 100%);
|
||||
}
|
||||
|
||||
a.buttons {
|
||||
-webkit-font-smoothing: antialiased;
|
||||
background: url(../images/arrow-down.png) no-repeat;
|
||||
font-weight: normal;
|
||||
text-shadow: rgba(0, 0, 0, 0.4) 0 -1px 0;
|
||||
padding: 2px 2px 2px 22px;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
a.github {
|
||||
background: url(../images/octocat-small.png) no-repeat 1px;
|
||||
}
|
||||
|
||||
a.buttons:hover {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
|
||||
/* Section - for main page content */
|
||||
|
||||
section {
|
||||
width:650px;
|
||||
float:right;
|
||||
padding-bottom:50px;
|
||||
}
|
||||
|
||||
|
||||
/* Footer */
|
||||
|
||||
footer {
|
||||
width:170px;
|
||||
float:left;
|
||||
position:fixed;
|
||||
bottom:10px;
|
||||
padding-left: 50px;
|
||||
}
|
||||
|
||||
@media print, screen and (max-width: 960px) {
|
||||
|
||||
div.wrapper {
|
||||
width:auto;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
header, section, footer {
|
||||
float:none;
|
||||
position:static;
|
||||
width:auto;
|
||||
}
|
||||
|
||||
footer {
|
||||
border-top: 1px solid #ccc;
|
||||
margin:0 84px 0 50px;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
header {
|
||||
padding-right:320px;
|
||||
}
|
||||
|
||||
section {
|
||||
padding:20px 84px 20px 50px;
|
||||
margin:0 0 20px;
|
||||
}
|
||||
|
||||
header a small {
|
||||
display:inline;
|
||||
}
|
||||
|
||||
header ul {
|
||||
position:absolute;
|
||||
right:130px;
|
||||
top:84px;
|
||||
}
|
||||
}
|
||||
|
||||
@media print, screen and (max-width: 720px) {
|
||||
body {
|
||||
word-wrap:break-word;
|
||||
}
|
||||
|
||||
header {
|
||||
padding:10px 20px 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
section {
|
||||
padding:10px 0 10px 20px;
|
||||
margin:0 0 30px;
|
||||
}
|
||||
|
||||
footer {
|
||||
margin: 0 0 0 30px;
|
||||
}
|
||||
|
||||
header ul, header p.view {
|
||||
position:static;
|
||||
}
|
||||
}
|
||||
|
||||
@media print, screen and (max-width: 480px) {
|
||||
|
||||
header ul li.download {
|
||||
display:none;
|
||||
}
|
||||
|
||||
footer {
|
||||
margin: 0 0 0 20px;
|
||||
}
|
||||
|
||||
footer a{
|
||||
display:block;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media print {
|
||||
body {
|
||||
padding:0.4in;
|
||||
font-size:12pt;
|
||||
color:#444;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user