mirror of
https://github.com/buger/goreplay.git
synced 2024-04-21 12:32:02 +00:00
continue work on new docs
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
POST /post HTTP/1.1
|
||||
Content-Length: 7
|
||||
Host: www.w3.org
|
||||
|
||||
a=1&b=2
|
||||
@@ -1,29 +0,0 @@
|
||||
Gor is an open-source tool for capturing and replaying live HTTP traffic into a test environment in order to continuously test your system with real data. It can be used to increase confidence in code deployments, configuration changes and infrastructure changes.
|
||||
|
||||
Read for more info:
|
||||
|
||||
* [[Getting Started]]
|
||||
* [[The Basics]]
|
||||
* [[Capturing and replaying traffic]]
|
||||
* [[Replaying HTTP traffic]]
|
||||
* [[[PRO] Replaying Binary protocols]]
|
||||
* [[[PRO] Recording and replaying keep alive TCP sessions]]
|
||||
* [[Saving and Replaying from file]]
|
||||
* [Performance testing](https://github.com/buger/gor/wiki/Saving-and-Replaying-from-file#performance-testing)
|
||||
* [[Rate limiting]]
|
||||
* [[Request filtering]]
|
||||
* [[Request rewriting]]
|
||||
* [[Middleware]]
|
||||
* [[Distributed configuration]]
|
||||
* [[Exporting to ElasticSearch]]
|
||||
* [[FAQ]]
|
||||
* [[Troubleshooting]]
|
||||
|
||||
## Commercial Aspects
|
||||
|
||||
* [[Commercial Support]]
|
||||
* [[Commercial FAQ]]
|
||||
* [[Commercial collaboration]]
|
||||
|
||||
|
||||
Next: [Getting Started](Getting-Started)
|
||||
@@ -2,7 +2,7 @@ Gor supports rewriting of URLs, URL params and headers, see below.
|
||||
|
||||
Rewriting may be useful if you test environment does not have the same data as your production, and you want to perform all actions in the context of `test` user: for example rewrite all API tokens to some test value. Other possible use cases are toggling features on/off using custom headers or rewriting URL's if they changed in the new environment.
|
||||
|
||||
For more complex logic you can use [[Middleware]].
|
||||
For more complex logic you can use [Middleware](middleware.md).
|
||||
|
||||
#### Rewrite URL based on a mapping
|
||||
`--http-rewrite-url` expects value in "<search>:<replace>" format: ":" is a dilimiter. In `<replace>` section you may use captured regexp group values. This works similar to `replace` method in Javascript or `gsub` in Ruby.
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
### Overview
|
||||
Gor architecture tries to follow UNIX philosophy: everything made of pipes, various inputs multiplexing data to outputs.
|
||||
|
||||
You can [rate limit](Rate limiting), [filter](Request filtering), [rewrite](Request rewriting) requests or even use your own [middleware](Middleware) to implement custom logic. Also, it is possible to replay requests at the higher rate for [load testing](Saving and Replaying from file).
|
||||
|
||||
### Available input and output plugins
|
||||
|
||||
Available inputs:
|
||||
* `--input-raw` - used to capture HTTP traffic, you should specify IP address or interface and application port. More about [[Capturing and replaying traffic]].
|
||||
* `--input-file` - accepts file which previously was recorded using `--output-file`. More about [[Saving and Replaying from file]]
|
||||
* `--input-tcp` - used by Gor aggregation instance if you decided forward traffic from multiple forwarder Gor instances to it. Read about using [[Aggregator-forwarder setup]].
|
||||
|
||||
Available outputs:
|
||||
* `--output-http` - replay HTTP traffic to given endpoint, accepts base url. Read [more about it](Replaying HTTP traffic)
|
||||
* `--output-file` - records incoming traffic to the file. More about [[Saving and Replaying from file]]
|
||||
* `--output-tcp` - forward incoming data to another Gor instance, used in conjunction with `--input-tcp`. Read more about [[Aggregator-forwarder setup]].
|
||||
* `--output-stdout` - used for debugging, outputs all data to stdout.
|
||||
@@ -0,0 +1,39 @@
|
||||
.wy-breadcrumbs li {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.wy-breadcrumbs li.wy-breadcrumbs-aside {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.wy-breadcrumbs li a {
|
||||
display: inline-block;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.wy-breadcrumbs li a:first-child {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.wy-breadcrumbs-extra {
|
||||
margin-bottom: 0;
|
||||
color: #b3b3b3;
|
||||
font-size: 80%;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 480px) {
|
||||
.wy-breadcrumbs-extra {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wy-breadcrumbs li.wy-breadcrumbs-aside {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media print {
|
||||
.wy-breadcrumbs li.wy-breadcrumbs-aside {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,355 @@
|
||||
.codeblock-example {
|
||||
border: 1px solid #e1e4e5;
|
||||
border-bottom: none;
|
||||
padding: 24px;
|
||||
padding-top: 48px;
|
||||
font-weight: 500;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.codeblock-example:after {
|
||||
content: "Example";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background: #9B59B6;
|
||||
color: #fff;
|
||||
padding: 6px 12px;
|
||||
}
|
||||
|
||||
.codeblock-example.prettyprint-example-only {
|
||||
border: 1px solid #e1e4e5;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.codeblock,
|
||||
pre.literal-block,
|
||||
.rst-content .literal-block,
|
||||
.rst-content pre.literal-block,
|
||||
div[class^='highlight'] {
|
||||
border: 1px solid #e1e4e5;
|
||||
padding: 0;
|
||||
overflow-x: auto;
|
||||
background: #fff;
|
||||
margin: 1px 0 24px;
|
||||
}
|
||||
|
||||
.codeblock div[class^='highlight'],
|
||||
pre.literal-block div[class^='highlight'],
|
||||
.rst-content .literal-block div[class^='highlight'],
|
||||
div[class^='highlight'] div[class^='highlight'] {
|
||||
border: none;
|
||||
background: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div[class^='highlight'] td.code {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.linenodiv pre {
|
||||
border-right: solid 1px #e6e9ea;
|
||||
margin: 0;
|
||||
padding: 12px;
|
||||
font-family: "Source Code Pro","Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;
|
||||
font-size: 12px;
|
||||
line-height: 1.5;
|
||||
color: #d9d9d9;
|
||||
}
|
||||
|
||||
div[class^='highlight'] pre {
|
||||
white-space: pre;
|
||||
margin: 0;
|
||||
padding: 12px;
|
||||
font-family: "Source Code Pro","Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;
|
||||
font-size: 12px;
|
||||
line-height: 1.5;
|
||||
display: block;
|
||||
overflow: auto;
|
||||
color: #404040;
|
||||
}
|
||||
|
||||
@media print {
|
||||
.codeblock,
|
||||
pre.literal-block,
|
||||
.rst-content .literal-block,
|
||||
.rst-content pre.literal-block,
|
||||
div[class^='highlight'],
|
||||
div[class^='highlight'] pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.hll {
|
||||
background-color: #ffc;
|
||||
margin: 0 -12px;
|
||||
padding: 0 12px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.c {
|
||||
color: #998;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.err {
|
||||
color: #a61717;
|
||||
background-color: #e3d2d2;
|
||||
}
|
||||
|
||||
.k {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.o {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.cm {
|
||||
color: #998;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.cp {
|
||||
color: #999;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.c1 {
|
||||
color: #998;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.cs {
|
||||
color: #999;
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.gd {
|
||||
color: #000;
|
||||
background-color: #fdd;
|
||||
}
|
||||
|
||||
.gd .x {
|
||||
color: #000;
|
||||
background-color: #faa;
|
||||
}
|
||||
|
||||
.ge {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.gr {
|
||||
color: #a00
|
||||
}
|
||||
|
||||
.gh {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.gi {
|
||||
color: #000;
|
||||
background-color: #dfd;
|
||||
}
|
||||
|
||||
.gi .x {
|
||||
color: #000;
|
||||
background-color: #afa;
|
||||
}
|
||||
|
||||
.go {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
.gp {
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.gs {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.gu {
|
||||
color: purple;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.gt {
|
||||
color: #a00;
|
||||
}
|
||||
|
||||
.kc {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.kd {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.kn {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.kp {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.kr {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.kt {
|
||||
color: #458;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.m {
|
||||
color: #099;
|
||||
}
|
||||
|
||||
.s {
|
||||
color: #d14;
|
||||
}
|
||||
|
||||
.n {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.na {
|
||||
color: teal;
|
||||
}
|
||||
|
||||
.nb {
|
||||
color: #0086b3;
|
||||
}
|
||||
|
||||
.nc {
|
||||
color: #458;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.no {
|
||||
color: teal;
|
||||
}
|
||||
|
||||
.ni {
|
||||
color: purple;
|
||||
}
|
||||
|
||||
.ne {
|
||||
color: #900;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.nf {
|
||||
color: #900;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.nn {
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.nt {
|
||||
color: navy;
|
||||
}
|
||||
|
||||
.nv {
|
||||
color: teal;
|
||||
}
|
||||
|
||||
.ow {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.w {
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
.mf {
|
||||
color: #099;
|
||||
}
|
||||
|
||||
.mh {
|
||||
color: #099;
|
||||
}
|
||||
|
||||
.mi {
|
||||
color: #099;
|
||||
}
|
||||
|
||||
.mo {
|
||||
color: #099;
|
||||
}
|
||||
|
||||
.sb {
|
||||
color: #d14;
|
||||
}
|
||||
|
||||
.sc {
|
||||
color: #d14;
|
||||
}
|
||||
|
||||
.sd {
|
||||
color: #d14;
|
||||
}
|
||||
|
||||
.s2 {
|
||||
color: #d14
|
||||
}
|
||||
|
||||
.se {
|
||||
color: #d14;
|
||||
}
|
||||
|
||||
.sh {
|
||||
color: #d14;
|
||||
}
|
||||
|
||||
.si {
|
||||
color: #d14;
|
||||
}
|
||||
|
||||
.sx {
|
||||
color: #d14;
|
||||
}
|
||||
|
||||
.sr {
|
||||
color: #009926;
|
||||
}
|
||||
|
||||
.s1 {
|
||||
color: #d14;
|
||||
}
|
||||
|
||||
.ss {
|
||||
color: #990073;
|
||||
}
|
||||
|
||||
.bp {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.vc {
|
||||
color: teal;
|
||||
}
|
||||
|
||||
.vg {
|
||||
color: teal;
|
||||
}
|
||||
|
||||
.vi {
|
||||
color: teal;
|
||||
}
|
||||
|
||||
.il {
|
||||
color: #099;
|
||||
}
|
||||
|
||||
.gc {
|
||||
color: #999;
|
||||
background-color: #EAF2F5;
|
||||
}
|
||||
+3442
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,171 @@
|
||||
code {
|
||||
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace !important;
|
||||
border-bottom-left-radius: 3px;
|
||||
border-bottom-right-radius: 3px;
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
background-color: #f7f7f7 !important;
|
||||
color: #333 !important;
|
||||
font-size: 14px !important;
|
||||
border: none !important;
|
||||
padding: 5px !important;
|
||||
}
|
||||
|
||||
pre > code {
|
||||
line-height: 20px;
|
||||
padding: 16px !important;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
color: #777 !important;
|
||||
border-left: 4px solid rgb(221, 221, 221);
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
margin-left: 0px !important;
|
||||
}
|
||||
|
||||
/* Visited links purple is not a good idea */
|
||||
a:visited {
|
||||
color: #008BF3;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #008BF3;
|
||||
}
|
||||
|
||||
h3, h4, h5, h6 {
|
||||
color: #333 !important;
|
||||
}
|
||||
|
||||
.rst-versions {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* The next and previous button we don't need */
|
||||
.rst-footer-buttons {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Foldable parts */
|
||||
details > * {
|
||||
margin-left: 20px;
|
||||
}
|
||||
details > summary {
|
||||
margin-left: 0px; /* To overwrite the margin from above */
|
||||
|
||||
font-size: 120%;
|
||||
cursor: pointer
|
||||
}
|
||||
|
||||
/* Fix the design not having the correct spacing */
|
||||
.wy-menu-vertical .subnav li.current > a {
|
||||
padding: 0.4045em 2.427em;
|
||||
}
|
||||
|
||||
.toctree-l3 {
|
||||
padding-left: 1.0em;
|
||||
}
|
||||
|
||||
footer .fastlane {
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
footer .fastlane iframe {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* Custom Syntax highlighting to look more like GitHub.com */
|
||||
.hljs-symbol {
|
||||
color: #0086b3;
|
||||
}
|
||||
|
||||
.hljs-keyword {
|
||||
font-weight: normal;
|
||||
color: #a71d5d;
|
||||
}
|
||||
|
||||
.hljs-string {
|
||||
color: #183691;
|
||||
}
|
||||
|
||||
/* Header Anchors */
|
||||
/* From https://github.com/facelessuser/pymdown-extensions/blob/bf18d0635e9d91b0f98eacdcaa10f26e0ace0f20/doc_theme/css/theme_custom.css#L322-L395 */
|
||||
.rst-content .headeranchor-link {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
display: block;
|
||||
padding-right: 6px;
|
||||
padding-left: 30px;
|
||||
margin-left: -30px;
|
||||
}
|
||||
|
||||
.rst-content .headeranchor-link:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.rst-content h1,
|
||||
.rst-content h2,
|
||||
.rst-content h3,
|
||||
.rst-content h4,
|
||||
.rst-content h5,
|
||||
.rst-content h6 {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.rst-content h1 .headeranchor,
|
||||
.rst-content h2 .headeranchor,
|
||||
.rst-content h3 .headeranchor,
|
||||
.rst-content h4 .headeranchor,
|
||||
.rst-content h5 .headeranchor,
|
||||
.rst-content h6 .headeranchor {
|
||||
display: none;
|
||||
color: #000;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.rst-content h1:hover .headeranchor-link,
|
||||
.rst-content h2:hover .headeranchor-link,
|
||||
.rst-content h3:hover .headeranchor-link,
|
||||
.rst-content h4:hover .headeranchor-link,
|
||||
.rst-content h5:hover .headeranchor-link,
|
||||
.rst-content h6:hover .headeranchor-link {
|
||||
height: 1em;
|
||||
padding-left: 8px;
|
||||
margin-left: -30px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.rst-content h1:hover .headeranchor-link .headeranchor,
|
||||
.rst-content h2:hover .headeranchor-link .headeranchor,
|
||||
.rst-content h3:hover .headeranchor-link .headeranchor,
|
||||
.rst-content h4:hover .headeranchor-link .headeranchor,
|
||||
.rst-content h5:hover .headeranchor-link .headeranchor,
|
||||
.rst-content h6:hover .headeranchor-link .headeranchor {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.rst-content .headeranchor {
|
||||
font: normal normal 16px FontAwesome;
|
||||
line-height: 1;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.rst-content .headeranchor:before {
|
||||
content: '\f0c1';
|
||||
}
|
||||
|
||||
/* index.md badges */
|
||||
@media screen and (max-width: 768px) {
|
||||
.badge img {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,435 @@
|
||||
.wy-affix {
|
||||
position: fixed;
|
||||
top: 1.618em;
|
||||
}
|
||||
|
||||
.wy-menu a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.wy-menu-vertical header,
|
||||
.wy-menu-vertical p.caption {
|
||||
height: 32px;
|
||||
display: inline-block;
|
||||
line-height: 32px;
|
||||
padding: 0 1.618em;
|
||||
margin-bottom: 0;
|
||||
margin-top: 14px;
|
||||
display: block;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
font-size: 85%;
|
||||
color: #ccc;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.wy-menu-vertical span {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.wy-menu-vertical ul {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.divide-top {
|
||||
border-top: solid 1px #404040;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.divide-bottom {
|
||||
border-bottom: solid 1px #404040;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.current {
|
||||
background-color: #e5e5e5;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.current a {
|
||||
color: rgba(0, 93, 255, 0.7);
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.current a:hover {
|
||||
color: rgba(0, 93, 255, 0.9);
|
||||
}
|
||||
|
||||
.wy-menu-vertical li code,
|
||||
.wy-menu-vertical li .rst-content tt,
|
||||
.rst-content .wy-menu-vertical li tt {
|
||||
border: none;
|
||||
background: inherit;
|
||||
color: inherit;
|
||||
padding-left: 0;
|
||||
padding-right: 0
|
||||
}
|
||||
|
||||
.wy-menu-vertical li span.toctree-expand {
|
||||
display: block;
|
||||
float: left;
|
||||
margin-left: -1.2em;
|
||||
font-size: .8em;
|
||||
line-height: 1.6em;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.on a,
|
||||
.wy-menu-vertical li.current>a {
|
||||
color: rgba(0, 93, 255, 0.9);
|
||||
font-weight: 700;
|
||||
position: relative;
|
||||
background: #fafafa;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/*.wy-menu-vertical li.on a:hover span.toctree-expand,
|
||||
.wy-menu-vertical li.current>a:hover span.toctree-expand {
|
||||
color: gray;
|
||||
}*/
|
||||
|
||||
.wy-menu-vertical li.on a span.toctree-expand,
|
||||
.wy-menu-vertical li.current>a span.toctree-expand {
|
||||
display: block;
|
||||
font-size: .8em;
|
||||
line-height: 1.6em;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,
|
||||
.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,
|
||||
.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a {
|
||||
display: block;
|
||||
padding: .4045em 4.045em;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l2 span.toctree-expand {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l3 {
|
||||
background-color: #eee;
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l3.current>a {
|
||||
padding: .4045em 4.045em;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a {
|
||||
display: block;
|
||||
padding: .4045em 5.663em;
|
||||
border-top: none;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand {
|
||||
color: rgba(0, 93, 255, 0.9);
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l3 span.toctree-expand {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l4 {
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.current ul {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.wy-menu-vertical .local-toc li ul {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li ul li a {
|
||||
margin-bottom: 0;
|
||||
color: rgba(0, 93, 255, 0.7);
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.wy-menu-vertical a {
|
||||
display: inline-block;
|
||||
line-height: 18px;
|
||||
padding: .4045em 1.618em;
|
||||
display: block;
|
||||
position: relative;
|
||||
font-size: 90%;
|
||||
color: rgba(0, 93, 255, 0.7);
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.on a:hover,
|
||||
.wy-menu-vertical li.current>a:hover {
|
||||
background-color: #fafafa;
|
||||
}
|
||||
|
||||
.wy-menu-vertical a:hover {
|
||||
color: rgba(0, 93, 255, 0.9);
|
||||
cursor: pointer;
|
||||
background-color: #fafafa;
|
||||
}
|
||||
|
||||
.wy-menu-vertical a:hover span.toctree-expand {
|
||||
color: rgba(0, 93, 255, 0.5);
|
||||
}
|
||||
|
||||
.wy-menu-vertical a:active span.toctree-expand {
|
||||
color: rgba(0, 93, 255, 0.7);
|
||||
}
|
||||
|
||||
/* Search */
|
||||
|
||||
.wy-side-nav-search {
|
||||
z-index: 200;
|
||||
background-color: #fafafa;
|
||||
border-bottom: #333;
|
||||
text-align: center;
|
||||
padding: .809em;
|
||||
display: block;
|
||||
color: #333;
|
||||
margin-bottom: .809em
|
||||
}
|
||||
|
||||
.wy-side-nav-search input[type=text] {
|
||||
width: 100%;
|
||||
color: #333;
|
||||
border-radius: 3px;
|
||||
outline: 0;
|
||||
padding: 10px;
|
||||
background-color: #fff;
|
||||
border: solid 1px #6d6d6d;
|
||||
box-shadow: none
|
||||
}
|
||||
|
||||
.wy-side-nav-search img {
|
||||
display: block;
|
||||
margin: auto auto .809em;
|
||||
height: 45px;
|
||||
width: 45px;
|
||||
background-color: #2980B9;
|
||||
padding: 5px;
|
||||
border-radius: 100%
|
||||
}
|
||||
|
||||
.wy-side-nav-search>a,
|
||||
.wy-side-nav-search .wy-dropdown>a {
|
||||
color: #333;
|
||||
font-size: 100%;
|
||||
font-weight: 700;
|
||||
display: inline-block;
|
||||
padding: 4px 6px;
|
||||
margin-bottom: .809em
|
||||
}
|
||||
|
||||
.wy-side-nav-search>a:hover,
|
||||
.wy-side-nav-search .wy-dropdown>a:hover {
|
||||
background: rgba(255,255,255,0.1)
|
||||
}
|
||||
|
||||
.wy-side-nav-search>a img.logo,
|
||||
.wy-side-nav-search .wy-dropdown>a img.logo {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
height: auto;
|
||||
width: auto;
|
||||
border-radius: 0;
|
||||
max-width: 100%;
|
||||
background: transparent
|
||||
}
|
||||
|
||||
.wy-side-nav-search>a.icon img.logo,
|
||||
.wy-side-nav-search .wy-dropdown>a.icon img.logo {
|
||||
margin-top: .85em
|
||||
}
|
||||
|
||||
.wy-nav .wy-menu-vertical header {
|
||||
color: #2980B9
|
||||
}
|
||||
|
||||
.wy-nav .wy-menu-vertical a {
|
||||
color: #b3b3b3
|
||||
}
|
||||
|
||||
.wy-nav .wy-menu-vertical a:hover {
|
||||
background-color: #2980B9;
|
||||
color: #fff
|
||||
}
|
||||
|
||||
[data-menu-wrap] {
|
||||
-webkit-transition: all .2s ease-in;
|
||||
-moz-transition: all .2s ease-in;
|
||||
transition: all .2s ease-in;
|
||||
position: absolute;
|
||||
opacity: 1;
|
||||
width: 100%;
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
[data-menu-wrap].move-center {
|
||||
left: 0;
|
||||
right: auto;
|
||||
opacity: 1
|
||||
}
|
||||
|
||||
[data-menu-wrap].move-left {
|
||||
right: auto;
|
||||
left: -100%;
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
[data-menu-wrap].move-right {
|
||||
right: -100%;
|
||||
left: auto;
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
.wy-body-for-nav {
|
||||
background: left repeat-y #fcfcfc;
|
||||
background-image: url(data:image/png;
|
||||
base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOERBMTRGRDBFMUUxMUUzODUwMkJCOThDMEVFNURFMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOERBMTRGRTBFMUUxMUUzODUwMkJCOThDMEVFNURFMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4REExNEZCMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4REExNEZDMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EwrlwAAAAA5JREFUeNpiMDU0BAgwAAE2AJgB9BnaAAAAAElFTkSuQmCC);
|
||||
background-size: 300px 1px
|
||||
}
|
||||
|
||||
.wy-grid-for-nav {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%
|
||||
}
|
||||
|
||||
.wy-nav-side {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
padding-bottom: 2em;
|
||||
width: 300px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
min-height: 100%;
|
||||
background-color: #fafafa;
|
||||
z-index: 200;
|
||||
border-right: 2px solid #eee;
|
||||
}
|
||||
|
||||
.wy-nav-top {
|
||||
display: none;
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
padding: .4045em .809em;
|
||||
position: relative;
|
||||
line-height: 50px;
|
||||
text-align: center;
|
||||
font-size: 100%;
|
||||
*zoom: 1
|
||||
}
|
||||
|
||||
.wy-nav-top:before,
|
||||
.wy-nav-top:after {
|
||||
display: table;
|
||||
content: ""
|
||||
}
|
||||
|
||||
.wy-nav-top:after {
|
||||
clear: both
|
||||
}
|
||||
|
||||
.wy-nav-top a {
|
||||
color: #fff;
|
||||
font-weight: 700
|
||||
}
|
||||
|
||||
.wy-nav-top img {
|
||||
margin-right: 12px;
|
||||
height: 45px;
|
||||
width: 45px;
|
||||
background-color: #2980B9;
|
||||
padding: 5px;
|
||||
border-radius: 100%
|
||||
}
|
||||
|
||||
.wy-nav-top i {
|
||||
font-size: 30px;
|
||||
line-height: 50px;
|
||||
float: left;
|
||||
cursor: pointer
|
||||
}
|
||||
|
||||
.wy-nav-content-wrap {
|
||||
margin-left: 300px;
|
||||
background: #fcfcfc;
|
||||
min-height: 100%
|
||||
}
|
||||
|
||||
.wy-nav-content {
|
||||
padding: 1.618em 3.236em;
|
||||
height: 100%;
|
||||
max-width: 1100px;
|
||||
margin: auto
|
||||
}
|
||||
|
||||
.wy-body-mask {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0,0,0,0.2);
|
||||
display: none;
|
||||
z-index: 499
|
||||
}
|
||||
|
||||
.wy-body-mask.on {
|
||||
display: block
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.wy-body-for-nav {
|
||||
background: #fcfcfc
|
||||
}
|
||||
|
||||
.wy-nav-top {
|
||||
display: block
|
||||
}
|
||||
|
||||
.wy-nav-side {
|
||||
left: -300px
|
||||
}
|
||||
|
||||
.wy-nav-side.shift {
|
||||
width: 85%;
|
||||
left: 0
|
||||
}
|
||||
|
||||
.wy-nav-content-wrap {
|
||||
margin-left: 0
|
||||
}
|
||||
|
||||
.wy-nav-content-wrap .wy-nav-content {
|
||||
padding: 1.618em
|
||||
}
|
||||
|
||||
.wy-nav-content-wrap.shift {
|
||||
position: fixed;
|
||||
min-width: 100%;
|
||||
left: 85%;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
overflow: hidden
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1400px) {
|
||||
.wy-nav-content {
|
||||
margin: 0;
|
||||
background: #fcfcfc
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
### Overview
|
||||
Gor architecture tries to follow UNIX philosophy: everything made of pipes, various inputs multiplexing data to outputs.
|
||||
|
||||
You can [rate limit](/rate-limiting.md), [filter](request-filtering.md), [rewrite](request-rewriting.md) requests or even use your own [middleware](middleware.md) to implement custom logic. Also, it is possible to replay requests at the higher rate for [load testing](saving-and-replaying-from-file.md).
|
||||
|
||||
### Available inputs
|
||||
|
||||
* `--input-raw` - used to capture HTTP traffic, you should specify IP address or interface and application port. More about [[Capturing and replaying traffic]].
|
||||
* `--input-file` - accepts file which previously was recorded using ` --output-file`. More about [[Saving and Replaying from file]]
|
||||
* `--input-tcp` - used by Gor aggregation instance if you decided forward traffic from multiple forwarder Gor instances to it. Read about using [[Aggregator-forwarder setup]].
|
||||
|
||||
### Available outputs
|
||||
|
||||
* `--output-http` - replay HTTP traffic to given endpoint, accepts base url. Read [more about it](Replaying HTTP traffic)
|
||||
* `--output-file` - records incoming traffic to the file. More about [[Saving and Replaying from file]]
|
||||
* `--output-tcp` - forward incoming data to another Gor instance, used in conjunction with `--input-tcp`. Read more about [[Aggregator-forwarder setup]].
|
||||
* `--output-stdout` - used for debugging, outputs all data to stdout.
|
||||
@@ -41,4 +41,4 @@ Next: [[The Basics]]
|
||||
### Watch an overview:
|
||||
|
||||
|
||||
[](https://www.youtube.com/watch?v=CxuKZcMKaW4)
|
||||

|
||||
@@ -0,0 +1,33 @@
|
||||
---
|
||||
layout: home
|
||||
---
|
||||
|
||||
Gor is an open-source tool for capturing and replaying live HTTP traffic into a test environment in order to continuously test your system with real data. It can be used to increase confidence in code deployments, configuration changes and infrastructure changes.
|
||||
|
||||
Read for more info:
|
||||
|
||||
* [Tutorial](getting-started/tutorial.md)
|
||||
* [The Basics](getting-started/basics.md)
|
||||
* [Capturing and replaying traffic](capturing-and-replaying-traffic.md)
|
||||
* [Replaying HTTP traffic](replaying-http-traffic.md)
|
||||
* [[PRO] Replaying Binary protocols](pro/replaying-binary-protocols.md)
|
||||
* [[PRO] Recording and replaying keep alive TCP sessions](pro/recording-and-replaying-keep-alive-tcp-sessions.md)
|
||||
* [Saving and Replaying from file](saving-and-replaying-from-file.md)
|
||||
* [Performance testing](saving-and-replaying-from-file.md#performance-testing)
|
||||
* [Rate limiting](rate-limiting.md)
|
||||
* [Request filtering](request-filtering.md)
|
||||
* [Request rewriting](request-rewriting.md)
|
||||
* [Middleware](middleware.md)
|
||||
* [Distributed configuration](distributed-configuration.md)
|
||||
* [Exporting to ElasticSearch](exporting-to-elasticsearch.md)
|
||||
* [FAQ](faq.md)
|
||||
* [Troubleshooting](troubleshooting.md)
|
||||
|
||||
## Commercial Aspects
|
||||
|
||||
* [Commercial Support](commercial-support.md)
|
||||
* [Commercial FAQ](commercial-faq.md)
|
||||
* [Commercial collaboration](commercial-collaboration.md)
|
||||
|
||||
|
||||
Next: [Getting Started](Getting-Started)
|
||||
@@ -0,0 +1,7 @@
|
||||
$(document).ready(function () {
|
||||
$('img[alt="YOUTUBE"]').each(function () {
|
||||
var id = $(this).attr('src').split('/')[$(this).attr('src').split('/').length - 1].split("=")[1];
|
||||
var video = '<iframe style="width: 100%;height: 450px;" src="https://www.youtube.com/embed/' + id + '" frameborder="0" allowfullscreen></iframe>';
|
||||
$(this).replaceWith(video);
|
||||
});
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
|
||||
site_name: My Docs
|
||||
theme: readthedocs
|
||||
+435
@@ -0,0 +1,435 @@
|
||||
.wy-affix {
|
||||
position: fixed;
|
||||
top: 1.618em;
|
||||
}
|
||||
|
||||
.wy-menu a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.wy-menu-vertical header,
|
||||
.wy-menu-vertical p.caption {
|
||||
height: 32px;
|
||||
display: inline-block;
|
||||
line-height: 32px;
|
||||
padding: 0 1.618em;
|
||||
margin-bottom: 0;
|
||||
margin-top: 14px;
|
||||
display: block;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
font-size: 85%;
|
||||
color: #ccc;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.wy-menu-vertical span {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.wy-menu-vertical ul {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.divide-top {
|
||||
border-top: solid 1px #404040;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.divide-bottom {
|
||||
border-bottom: solid 1px #404040;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.current {
|
||||
background-color: #e5e5e5;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.current a {
|
||||
color: rgba(0, 93, 255, 0.7);
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.current a:hover {
|
||||
color: rgba(0, 93, 255, 0.9);
|
||||
}
|
||||
|
||||
.wy-menu-vertical li code,
|
||||
.wy-menu-vertical li .rst-content tt,
|
||||
.rst-content .wy-menu-vertical li tt {
|
||||
border: none;
|
||||
background: inherit;
|
||||
color: inherit;
|
||||
padding-left: 0;
|
||||
padding-right: 0
|
||||
}
|
||||
|
||||
.wy-menu-vertical li span.toctree-expand {
|
||||
display: block;
|
||||
float: left;
|
||||
margin-left: -1.2em;
|
||||
font-size: .8em;
|
||||
line-height: 1.6em;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.on a,
|
||||
.wy-menu-vertical li.current>a {
|
||||
color: rgba(0, 93, 255, 0.9);
|
||||
font-weight: 700;
|
||||
position: relative;
|
||||
background: #fafafa;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/*.wy-menu-vertical li.on a:hover span.toctree-expand,
|
||||
.wy-menu-vertical li.current>a:hover span.toctree-expand {
|
||||
color: gray;
|
||||
}*/
|
||||
|
||||
.wy-menu-vertical li.on a span.toctree-expand,
|
||||
.wy-menu-vertical li.current>a span.toctree-expand {
|
||||
display: block;
|
||||
font-size: .8em;
|
||||
line-height: 1.6em;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,
|
||||
.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,
|
||||
.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a {
|
||||
display: block;
|
||||
padding: .4045em 4.045em;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l2 span.toctree-expand {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l3 {
|
||||
background-color: #eee;
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l3.current>a {
|
||||
padding: .4045em 4.045em;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a {
|
||||
display: block;
|
||||
padding: .4045em 5.663em;
|
||||
border-top: none;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand {
|
||||
color: rgba(0, 93, 255, 0.9);
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l3 span.toctree-expand {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.toctree-l4 {
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.current ul {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.wy-menu-vertical .local-toc li ul {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.wy-menu-vertical li ul li a {
|
||||
margin-bottom: 0;
|
||||
color: rgba(0, 93, 255, 0.7);
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.wy-menu-vertical a {
|
||||
display: inline-block;
|
||||
line-height: 18px;
|
||||
padding: .4045em 1.618em;
|
||||
display: block;
|
||||
position: relative;
|
||||
font-size: 90%;
|
||||
color: rgba(0, 93, 255, 0.7);
|
||||
}
|
||||
|
||||
.wy-menu-vertical li.on a:hover,
|
||||
.wy-menu-vertical li.current>a:hover {
|
||||
background-color: #fafafa;
|
||||
}
|
||||
|
||||
.wy-menu-vertical a:hover {
|
||||
color: rgba(0, 93, 255, 0.9);
|
||||
cursor: pointer;
|
||||
background-color: #fafafa;
|
||||
}
|
||||
|
||||
.wy-menu-vertical a:hover span.toctree-expand {
|
||||
color: rgba(0, 93, 255, 0.5);
|
||||
}
|
||||
|
||||
.wy-menu-vertical a:active span.toctree-expand {
|
||||
color: rgba(0, 93, 255, 0.7);
|
||||
}
|
||||
|
||||
/* Search */
|
||||
|
||||
.wy-side-nav-search {
|
||||
z-index: 200;
|
||||
background-color: #fafafa;
|
||||
border-bottom: #333;
|
||||
text-align: center;
|
||||
padding: .809em;
|
||||
display: block;
|
||||
color: #333;
|
||||
margin-bottom: .809em
|
||||
}
|
||||
|
||||
.wy-side-nav-search input[type=text] {
|
||||
width: 100%;
|
||||
color: #333;
|
||||
border-radius: 3px;
|
||||
outline: 0;
|
||||
padding: 10px;
|
||||
background-color: #fff;
|
||||
border: solid 1px #6d6d6d;
|
||||
box-shadow: none
|
||||
}
|
||||
|
||||
.wy-side-nav-search img {
|
||||
display: block;
|
||||
margin: auto auto .809em;
|
||||
height: 45px;
|
||||
width: 45px;
|
||||
background-color: #2980B9;
|
||||
padding: 5px;
|
||||
border-radius: 100%
|
||||
}
|
||||
|
||||
.wy-side-nav-search>a,
|
||||
.wy-side-nav-search .wy-dropdown>a {
|
||||
color: #333;
|
||||
font-size: 100%;
|
||||
font-weight: 700;
|
||||
display: inline-block;
|
||||
padding: 4px 6px;
|
||||
margin-bottom: .809em
|
||||
}
|
||||
|
||||
.wy-side-nav-search>a:hover,
|
||||
.wy-side-nav-search .wy-dropdown>a:hover {
|
||||
background: rgba(255,255,255,0.1)
|
||||
}
|
||||
|
||||
.wy-side-nav-search>a img.logo,
|
||||
.wy-side-nav-search .wy-dropdown>a img.logo {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
height: auto;
|
||||
width: auto;
|
||||
border-radius: 0;
|
||||
max-width: 100%;
|
||||
background: transparent
|
||||
}
|
||||
|
||||
.wy-side-nav-search>a.icon img.logo,
|
||||
.wy-side-nav-search .wy-dropdown>a.icon img.logo {
|
||||
margin-top: .85em
|
||||
}
|
||||
|
||||
.wy-nav .wy-menu-vertical header {
|
||||
color: #2980B9
|
||||
}
|
||||
|
||||
.wy-nav .wy-menu-vertical a {
|
||||
color: #b3b3b3
|
||||
}
|
||||
|
||||
.wy-nav .wy-menu-vertical a:hover {
|
||||
background-color: #2980B9;
|
||||
color: #fff
|
||||
}
|
||||
|
||||
[data-menu-wrap] {
|
||||
-webkit-transition: all .2s ease-in;
|
||||
-moz-transition: all .2s ease-in;
|
||||
transition: all .2s ease-in;
|
||||
position: absolute;
|
||||
opacity: 1;
|
||||
width: 100%;
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
[data-menu-wrap].move-center {
|
||||
left: 0;
|
||||
right: auto;
|
||||
opacity: 1
|
||||
}
|
||||
|
||||
[data-menu-wrap].move-left {
|
||||
right: auto;
|
||||
left: -100%;
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
[data-menu-wrap].move-right {
|
||||
right: -100%;
|
||||
left: auto;
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
.wy-body-for-nav {
|
||||
background: left repeat-y #fcfcfc;
|
||||
background-image: url(data:image/png;
|
||||
base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOERBMTRGRDBFMUUxMUUzODUwMkJCOThDMEVFNURFMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOERBMTRGRTBFMUUxMUUzODUwMkJCOThDMEVFNURFMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4REExNEZCMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4REExNEZDMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EwrlwAAAAA5JREFUeNpiMDU0BAgwAAE2AJgB9BnaAAAAAElFTkSuQmCC);
|
||||
background-size: 300px 1px
|
||||
}
|
||||
|
||||
.wy-grid-for-nav {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%
|
||||
}
|
||||
|
||||
.wy-nav-side {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
padding-bottom: 2em;
|
||||
width: 300px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
min-height: 100%;
|
||||
background-color: #fafafa;
|
||||
z-index: 200;
|
||||
border-right: 2px solid #eee;
|
||||
}
|
||||
|
||||
.wy-nav-top {
|
||||
display: none;
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
padding: .4045em .809em;
|
||||
position: relative;
|
||||
line-height: 50px;
|
||||
text-align: center;
|
||||
font-size: 100%;
|
||||
*zoom: 1
|
||||
}
|
||||
|
||||
.wy-nav-top:before,
|
||||
.wy-nav-top:after {
|
||||
display: table;
|
||||
content: ""
|
||||
}
|
||||
|
||||
.wy-nav-top:after {
|
||||
clear: both
|
||||
}
|
||||
|
||||
.wy-nav-top a {
|
||||
color: #fff;
|
||||
font-weight: 700
|
||||
}
|
||||
|
||||
.wy-nav-top img {
|
||||
margin-right: 12px;
|
||||
height: 45px;
|
||||
width: 45px;
|
||||
background-color: #2980B9;
|
||||
padding: 5px;
|
||||
border-radius: 100%
|
||||
}
|
||||
|
||||
.wy-nav-top i {
|
||||
font-size: 30px;
|
||||
line-height: 50px;
|
||||
float: left;
|
||||
cursor: pointer
|
||||
}
|
||||
|
||||
.wy-nav-content-wrap {
|
||||
margin-left: 300px;
|
||||
background: #fcfcfc;
|
||||
min-height: 100%
|
||||
}
|
||||
|
||||
.wy-nav-content {
|
||||
padding: 1.618em 3.236em;
|
||||
height: 100%;
|
||||
max-width: 1100px;
|
||||
margin: auto
|
||||
}
|
||||
|
||||
.wy-body-mask {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0,0,0,0.2);
|
||||
display: none;
|
||||
z-index: 499
|
||||
}
|
||||
|
||||
.wy-body-mask.on {
|
||||
display: block
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.wy-body-for-nav {
|
||||
background: #fcfcfc
|
||||
}
|
||||
|
||||
.wy-nav-top {
|
||||
display: block
|
||||
}
|
||||
|
||||
.wy-nav-side {
|
||||
left: -300px
|
||||
}
|
||||
|
||||
.wy-nav-side.shift {
|
||||
width: 85%;
|
||||
left: 0
|
||||
}
|
||||
|
||||
.wy-nav-content-wrap {
|
||||
margin-left: 0
|
||||
}
|
||||
|
||||
.wy-nav-content-wrap .wy-nav-content {
|
||||
padding: 1.618em
|
||||
}
|
||||
|
||||
.wy-nav-content-wrap.shift {
|
||||
position: fixed;
|
||||
min-width: 100%;
|
||||
left: 85%;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
overflow: hidden
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1400px) {
|
||||
.wy-nav-content {
|
||||
margin: 0;
|
||||
background: #fcfcfc
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
_site
|
||||
.sass-cache
|
||||
.jekyll-metadata
|
||||
@@ -0,0 +1,24 @@
|
||||
source "https://rubygems.org"
|
||||
ruby RUBY_VERSION
|
||||
|
||||
# Hello! This is where you manage which Jekyll version is used to run.
|
||||
# When you want to use a different version, change it below, save the
|
||||
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
|
||||
#
|
||||
# bundle exec jekyll serve
|
||||
#
|
||||
# This will help ensure the proper Jekyll version is running.
|
||||
# Happy Jekylling!
|
||||
gem "jekyll", "3.3.1"
|
||||
|
||||
# This is the default theme for new Jekyll sites. You may change this to anything you like.
|
||||
gem "minima", "~> 2.0"
|
||||
|
||||
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
|
||||
# uncomment the line below. To upgrade, run `bundle update github-pages`.
|
||||
# gem "github-pages", group: :jekyll_plugins
|
||||
|
||||
# If you have any plugins, put them here!
|
||||
group :jekyll_plugins do
|
||||
gem "jekyll-feed", "~> 0.6"
|
||||
end
|
||||
@@ -0,0 +1,56 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
addressable (2.5.0)
|
||||
public_suffix (~> 2.0, >= 2.0.2)
|
||||
colorator (1.1.0)
|
||||
ffi (1.9.14)
|
||||
forwardable-extended (2.6.0)
|
||||
jekyll (3.3.1)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
jekyll-sass-converter (~> 1.0)
|
||||
jekyll-watch (~> 1.1)
|
||||
kramdown (~> 1.3)
|
||||
liquid (~> 3.0)
|
||||
mercenary (~> 0.3.3)
|
||||
pathutil (~> 0.9)
|
||||
rouge (~> 1.7)
|
||||
safe_yaml (~> 1.0)
|
||||
jekyll-feed (0.8.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-sass-converter (1.5.0)
|
||||
sass (~> 3.4)
|
||||
jekyll-watch (1.5.0)
|
||||
listen (~> 3.0, < 3.1)
|
||||
kramdown (1.13.1)
|
||||
liquid (3.0.6)
|
||||
listen (3.0.8)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
mercenary (0.3.6)
|
||||
minima (2.1.0)
|
||||
jekyll (~> 3.3)
|
||||
pathutil (0.14.0)
|
||||
forwardable-extended (~> 2.6)
|
||||
public_suffix (2.0.5)
|
||||
rb-fsevent (0.9.8)
|
||||
rb-inotify (0.9.7)
|
||||
ffi (>= 0.5.0)
|
||||
rouge (1.11.1)
|
||||
safe_yaml (1.0.4)
|
||||
sass (3.4.23)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
jekyll (= 3.3.1)
|
||||
jekyll-feed (~> 0.6)
|
||||
minima (~> 2.0)
|
||||
|
||||
RUBY VERSION
|
||||
ruby 2.3.1p112
|
||||
|
||||
BUNDLED WITH
|
||||
1.13.7
|
||||
@@ -0,0 +1,34 @@
|
||||
# Welcome to Jekyll!
|
||||
#
|
||||
# This config file is meant for settings that affect your whole blog, values
|
||||
# which you are expected to set up once and rarely edit after that. If you find
|
||||
# yourself editing this file very often, consider using Jekyll's data files
|
||||
# feature for the data you need to update frequently.
|
||||
#
|
||||
# For technical reasons, this file is *NOT* reloaded automatically when you use
|
||||
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
|
||||
|
||||
# Site settings
|
||||
# These are used to personalize your new site. If you look in the HTML files,
|
||||
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
|
||||
# You can create any custom variable you would like, and they will be accessible
|
||||
# in the templates via {{ site.myvariable }}.
|
||||
title: Your awesome title
|
||||
email: your-email@domain.com
|
||||
description: > # this means to ignore newlines until "baseurl:"
|
||||
Write an awesome description for your new site here. You can edit this
|
||||
line in _config.yml. It will appear in your document head meta (for
|
||||
Google search results) and in your feed.xml site description.
|
||||
baseurl: "" # the subpath of your site, e.g. /blog
|
||||
url: "" # the base hostname & protocol for your site, e.g. http://example.com
|
||||
twitter_username: jekyllrb
|
||||
github_username: jekyll
|
||||
|
||||
# Build settings
|
||||
markdown: kramdown
|
||||
theme: minima
|
||||
gems:
|
||||
- jekyll-feed
|
||||
exclude:
|
||||
- Gemfile
|
||||
- Gemfile.lock
|
||||
@@ -0,0 +1,25 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Welcome to Jekyll!"
|
||||
date: 2017-01-06 11:19:34 +0300
|
||||
categories: jekyll update
|
||||
---
|
||||
You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
|
||||
|
||||
To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.
|
||||
|
||||
Jekyll also offers powerful support for code snippets:
|
||||
|
||||
{% highlight ruby %}
|
||||
def print_hi(name)
|
||||
puts "Hi, #{name}"
|
||||
end
|
||||
print_hi('Tom')
|
||||
#=> prints 'Hi, Tom' to STDOUT.
|
||||
{% endhighlight %}
|
||||
|
||||
Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
|
||||
|
||||
[jekyll-docs]: http://jekyllrb.com/docs/home
|
||||
[jekyll-gh]: https://github.com/jekyll/jekyll
|
||||
[jekyll-talk]: https://talk.jekyllrb.com/
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
layout: page
|
||||
title: About
|
||||
permalink: /about/
|
||||
---
|
||||
|
||||
This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](http://jekyllrb.com/)
|
||||
|
||||
You can find the source code for the Jekyll new theme at:
|
||||
{% include icon-github.html username="jekyll" %} /
|
||||
[minima](https://github.com/jekyll/minima)
|
||||
|
||||
You can find the source code for Jekyll at
|
||||
{% include icon-github.html username="jekyll" %} /
|
||||
[jekyll](https://github.com/jekyll/jekyll)
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
# You don't need to edit this file, it's empty on purpose.
|
||||
# Edit theme's home layout instead if you wanna make some changes
|
||||
# See: https://jekyllrb.com/docs/themes/#overriding-theme-defaults
|
||||
layout: home
|
||||
---
|
||||
Reference in New Issue
Block a user