зеркало из https://github.com/mozilla/mig.git
[doc] add syntax highlighting to go code samples
This commit is contained in:
Родитель
15752bdd4d
Коммит
e75b4425e3
|
@ -153,12 +153,13 @@ blockquote {
|
|||
border-left: 1px dotted #666;
|
||||
}
|
||||
|
||||
|
||||
pre {
|
||||
background: rgba(0, 0, 0, 0.9);
|
||||
border: 1px solid rgba(255, 255, 255, 0.15);
|
||||
padding: 10px;
|
||||
font-size: 14px;
|
||||
color: #b5e853;
|
||||
//color: #b5e853;
|
||||
border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
|
@ -167,6 +168,27 @@ pre {
|
|||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
pre.address {
|
||||
margin-bottom: 0 ;
|
||||
margin-top: 0 ;
|
||||
font: inherit }
|
||||
|
||||
pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
pre.code .ln { color: grey; } /* line numbers */
|
||||
//pre.code, code { background-color: #eeeeee }
|
||||
pre.code .comment, code .comment, code .c1 { color: #5C6576 }
|
||||
pre.code .keyword, code .keyword, code .kd, code .kn, code .k, code .o { color: #3e9101;}
|
||||
code .nb { color: #c45918;}
|
||||
code .s {color: #0a77c4;}
|
||||
pre.code .punctuation, code .punctuation, code .p { color: white;}
|
||||
pre.code .literal.string, code .literal.string { color: #0C5404 }
|
||||
pre.code .name.builtin, code .name.builtin, code .nx { color: white; }
|
||||
pre.code .deleted, code .deleted { background-color: #DEB0A1}
|
||||
pre.code .inserted, code .inserted { background-color: #A3D289}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
margin: 0 0 20px 0;
|
||||
|
|
|
@ -18,7 +18,7 @@ endpoints, etc..
|
|||
|
||||
Module are somewhat autonomous. They can be developped outside of the MIG code
|
||||
base, and only imported during compilation of the agent. Go does not provide a
|
||||
way to load modules dynamically, so modules compiled into the agent's static
|
||||
way to load modules dynamically, so modules are compiled into the agent's static
|
||||
binary, and not as separate files.
|
||||
|
||||
Module logic
|
||||
|
@ -389,7 +389,7 @@ The interface is defined as:
|
|||
|
||||
A typical implementation from the `timedrift` module looks as follows:
|
||||
|
||||
.. code::
|
||||
.. code:: go
|
||||
|
||||
func (r Runner) ParamsParser(args []string) (interface{}, error) {
|
||||
var (
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
</aside>
|
||||
<p>In this document, we explain how modules are written and integrated into MIG.</p>
|
||||
<p>The reception of a command by an agent triggers the execution of modules. A module is a Go package that is imported into the agent at compilation, and that performs a very specific set of tasks. For example, the <cite>file</cite> module provides a way to scan a file system for files that contain regexes, match a checksum, ... Another module is called <cite>netstat</cite>, and looks for IP addresses currently connected to an endpoint. <cite>ping</cite> is a module to ping targets from endpoints, etc..</p>
|
||||
<p>Module are somewhat autonomous. They can be developped outside of the MIG code base, and only imported during compilation of the agent. Go does not provide a way to load modules dynamically, so modules compiled into the agent's static binary, and not as separate files.</p>
|
||||
<p>Module are somewhat autonomous. They can be developped outside of the MIG code base, and only imported during compilation of the agent. Go does not provide a way to load modules dynamically, so modules are compiled into the agent's static binary, and not as separate files.</p>
|
||||
<section id="module-logic">
|
||||
<h2>1 Module logic</h2>
|
||||
<section id="registration">
|
||||
|
@ -281,32 +281,32 @@
|
|||
<span class="nx">ParamsParser</span><span class="p">([]</span><span class="kt">string</span><span class="p">)</span> <span class="p">(</span><span class="kd">interface</span><span class="p">{},</span> <span class="kt">error</span><span class="p">)</span>
|
||||
<span class="p">}</span></code></pre>
|
||||
<p>A typical implementation from the <cite>timedrift</cite> module looks as follows:</p>
|
||||
<pre><code class="">func (r Runner) ParamsParser(args []string) (interface{}, error) {
|
||||
var (
|
||||
err error
|
||||
drift string
|
||||
fs flag.FlagSet
|
||||
)
|
||||
if len(args) >= 1 && args[0] == "help" {
|
||||
printHelp(true)
|
||||
return nil, fmt.Errorf("help printed")
|
||||
}
|
||||
if len(args) == 0 {
|
||||
return r.Parameters, nil
|
||||
}
|
||||
fs.Init("time", flag.ContinueOnError)
|
||||
fs.StringVar(&drift, "drift", "", "see help")
|
||||
err = fs.Parse(args)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
_, err = time.ParseDuration(drift)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("invalid drift duration. try help.")
|
||||
}
|
||||
r.Parameters.Drift = drift
|
||||
return r.Parameters, r.ValidateParameters()
|
||||
}</code></pre>
|
||||
<pre><code class="go"><span class="kd">func</span> <span class="p">(</span><span class="nx">r</span> <span class="nx">Runner</span><span class="p">)</span> <span class="nx">ParamsParser</span><span class="p">(</span><span class="nx">args</span> <span class="p">[]</span><span class="kt">string</span><span class="p">)</span> <span class="p">(</span><span class="kd">interface</span><span class="p">{},</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span>
|
||||
<span class="kd">var</span> <span class="p">(</span>
|
||||
<span class="nx">err</span> <span class="kt">error</span>
|
||||
<span class="nx">drift</span> <span class="kt">string</span>
|
||||
<span class="nx">fs</span> <span class="nx">flag</span><span class="p">.</span><span class="nx">FlagSet</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="nx">args</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">1</span> <span class="o">&&</span> <span class="nx">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s">"help"</span> <span class="p">{</span>
|
||||
<span class="nx">printHelp</span><span class="p">(</span><span class="kc">true</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">nil</span><span class="p">,</span> <span class="nx">fmt</span><span class="p">.</span><span class="nx">Errorf</span><span class="p">(</span><span class="s">"help printed"</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="nx">args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">{</span>
|
||||
<span class="k">return</span> <span class="nx">r</span><span class="p">.</span><span class="nx">Parameters</span><span class="p">,</span> <span class="kc">nil</span>
|
||||
<span class="p">}</span>
|
||||
<span class="nx">fs</span><span class="p">.</span><span class="nx">Init</span><span class="p">(</span><span class="s">"time"</span><span class="p">,</span> <span class="nx">flag</span><span class="p">.</span><span class="nx">ContinueOnError</span><span class="p">)</span>
|
||||
<span class="nx">fs</span><span class="p">.</span><span class="nx">StringVar</span><span class="p">(</span><span class="o">&</span><span class="nx">drift</span><span class="p">,</span> <span class="s">"drift"</span><span class="p">,</span> <span class="s">""</span><span class="p">,</span> <span class="s">"see help"</span><span class="p">)</span>
|
||||
<span class="nx">err</span> <span class="p">=</span> <span class="nx">fs</span><span class="p">.</span><span class="nx">Parse</span><span class="p">(</span><span class="nx">args</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
|
||||
<span class="k">return</span> <span class="kc">nil</span><span class="p">,</span> <span class="nx">err</span>
|
||||
<span class="p">}</span>
|
||||
<span class="nx">_</span><span class="p">,</span> <span class="nx">err</span> <span class="p">=</span> <span class="nx">time</span><span class="p">.</span><span class="nx">ParseDuration</span><span class="p">(</span><span class="nx">drift</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
|
||||
<span class="k">return</span> <span class="kc">nil</span><span class="p">,</span> <span class="nx">fmt</span><span class="p">.</span><span class="nx">Errorf</span><span class="p">(</span><span class="s">"invalid drift duration. try help."</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="nx">r</span><span class="p">.</span><span class="nx">Parameters</span><span class="p">.</span><span class="nx">Drift</span> <span class="p">=</span> <span class="nx">drift</span>
|
||||
<span class="k">return</span> <span class="nx">r</span><span class="p">.</span><span class="nx">Parameters</span><span class="p">,</span> <span class="nx">r</span><span class="p">.</span><span class="nx">ValidateParameters</span><span class="p">()</span>
|
||||
<span class="p">}</span></code></pre>
|
||||
<p>It is highly recommend to call <cite>ValidateParameters</cite> to verify that the parameters supplied by the users are correct.</p>
|
||||
</section>
|
||||
</section>
|
||||
|
|
Загрузка…
Ссылка в новой задаче