mirror of
https://github.com/go-i2p/onramp.git
synced 2025-06-16 05:44:49 -04:00
324 lines
17 KiB
HTML
324 lines
17 KiB
HTML
<html>
|
|
<head>
|
|
<title>
|
|
onramp
|
|
</title>
|
|
<meta name="author" content="eyedeekay" />
|
|
<meta name="description" content="onramp.git" />
|
|
<meta name="keywords" content="main" />
|
|
<link rel="stylesheet" type="text/css" href="style.css" />
|
|
<link rel="stylesheet" type="text/css" href="showhider.css" />
|
|
</head>
|
|
<body>
|
|
<div id="navbar">
|
|
<a href="#shownav">
|
|
Show navigation
|
|
</a>
|
|
<div id="shownav">
|
|
<div id="hidenav">
|
|
<ul>
|
|
<li>
|
|
<a href="..">
|
|
Up one level ^
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="index.html">
|
|
index
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="DESC.html">
|
|
DESC
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="DOCS.html">
|
|
DOCS
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="EXAMPLE.html">
|
|
EXAMPLE
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
<br>
|
|
<a href="#hidenav">
|
|
Hide Navigation
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<h1>
|
|
<a href="#example-usage" rel="nofollow">
|
|
<span></span>
|
|
</a>
|
|
Example Usage
|
|
</h1>
|
|
<h3>
|
|
<a href="#usage-as-instance-of-a-struct-listener" rel="nofollow">
|
|
<span></span>
|
|
</a>
|
|
Usage as instance of a struct, Listener
|
|
</h3>
|
|
<div>
|
|
<pre>
|
|
<span>package</span> <span>main</span>
|
|
|
|
<span>import</span> <span>(</span>
|
|
<span>"fmt"</span>
|
|
<span>"log"</span>
|
|
<span>"net/http"</span>
|
|
|
|
<span>"github.com/eyedeekay/onramp"</span>
|
|
<span>)</span>
|
|
|
|
<span>func</span> <span>main</span><span>(</span><span>)</span> <span>{</span>
|
|
<span>garlic</span> <span>:=</span> <span>&</span><span>onramp</span><span>.</span><span>Garlic</span><span>{</span><span>}</span>
|
|
<span>defer</span> <span>garlic</span><span>.</span><span>Close</span><span>(</span><span>)</span>
|
|
<span>listener</span><span>,</span> <span>err</span> <span>:=</span> <span>garlic</span><span>.</span><span>Listen</span><span>(</span><span>)</span>
|
|
<span>if</span> <span>err</span> <span>!=</span> <span>nil</span> <span>{</span>
|
|
<span>log</span><span>.</span><span>Fatal</span><span>(</span><span>err</span><span>)</span>
|
|
<span>}</span>
|
|
<span>defer</span> <span>listener</span><span>.</span><span>Close</span><span>(</span><span>)</span>
|
|
<span>http</span><span>.</span><span>HandleFunc</span><span>(</span><span>"/"</span><span>,</span> <span>func</span><span>(</span><span>w</span> <span>http</span><span>.</span><span>ResponseWriter</span><span>,</span> <span>r</span> <span>*</span><span>http</span><span>.</span><span>Request</span><span>)</span> <span>{</span>
|
|
<span>fmt</span><span>.</span><span>Fprintf</span><span>(</span><span>w</span><span>,</span> <span>"Hello, %q"</span><span>,</span> <span>r</span><span>.</span><span>URL</span><span>.</span><span>Path</span><span>)</span>
|
|
<span>}</span><span>)</span>
|
|
<span>if</span> <span>err</span> <span>:=</span> <span>http</span><span>.</span><span>Serve</span><span>(</span><span>listener</span><span>,</span> <span>nil</span><span>)</span><span>;</span> <span>err</span> <span>!=</span> <span>nil</span> <span>{</span>
|
|
<span>log</span><span>.</span><span>Fatal</span><span>(</span><span>err</span><span>)</span>
|
|
<span>}</span>
|
|
<span>}</span>
|
|
</pre>
|
|
</div>
|
|
<h3>
|
|
<a href="#usage-as-instance-of-a-struct-dialer" rel="nofollow">
|
|
<span></span>
|
|
</a>
|
|
Usage as instance of a struct, Dialer
|
|
</h3>
|
|
<div>
|
|
<pre>
|
|
<span>package</span> <span>main</span>
|
|
|
|
<span>import</span> <span>(</span>
|
|
<span>"fmt"</span>
|
|
<span>"io/ioutil"</span>
|
|
<span>"log"</span>
|
|
<span>"net/http"</span>
|
|
|
|
<span>"github.com/eyedeekay/onramp"</span>
|
|
<span>)</span>
|
|
|
|
<span>func</span> <span>main</span><span>(</span><span>)</span> <span>{</span>
|
|
<span>garlic</span> <span>:=</span> <span>&</span><span>onramp</span><span>.</span><span>Garlic</span><span>{</span><span>}</span>
|
|
<span>defer</span> <span>garlic</span><span>.</span><span>Close</span><span>(</span><span>)</span>
|
|
<span>transport</span> <span>:=</span> <span>http</span><span>.</span><span>Transport</span><span>{</span>
|
|
<span>Dial</span><span>:</span> <span>garlic</span><span>.</span><span>Dial</span><span>,</span>
|
|
<span>}</span>
|
|
<span>client</span> <span>:=</span> <span>&</span><span>http</span><span>.</span><span>Client</span><span>{</span>
|
|
<span>Transport</span><span>:</span> <span>&</span><span>transport</span><span>,</span>
|
|
<span>}</span>
|
|
<span>resp</span><span>,</span> <span>err</span> <span>:=</span> <span>client</span><span>.</span><span>Get</span><span>(</span><span>"http://"</span> <span>+</span> <span>listener</span><span>.</span><span>Addr</span><span>(</span><span>)</span><span>.</span><span>String</span><span>(</span><span>)</span> <span>+</span> <span>"/"</span><span>)</span>
|
|
<span>if</span> <span>err</span> <span>!=</span> <span>nil</span> <span>{</span>
|
|
<span>log</span><span>.</span><span>Fatal</span><span>(</span><span>err</span><span>)</span>
|
|
<span>}</span>
|
|
<span>defer</span> <span>resp</span><span>.</span><span>Body</span><span>.</span><span>Close</span><span>(</span><span>)</span>
|
|
<span>fmt</span><span>.</span><span>Println</span><span>(</span><span>resp</span><span>.</span><span>Status</span><span>)</span>
|
|
<span>body</span><span>,</span> <span>err</span> <span>:=</span> <span>ioutil</span><span>.</span><span>ReadAll</span><span>(</span><span>resp</span><span>.</span><span>Body</span><span>)</span>
|
|
<span>if</span> <span>err</span> <span>!=</span> <span>nil</span> <span>{</span>
|
|
<span>log</span><span>.</span><span>Fatal</span><span>(</span><span>err</span><span>)</span>
|
|
<span>}</span>
|
|
<span>fmt</span><span>.</span><span>Println</span><span>(</span><span>string</span><span>(</span><span>body</span><span>)</span><span>)</span>
|
|
<span>}</span>
|
|
|
|
</pre>
|
|
</div>
|
|
<h3>
|
|
<a href="#usage-as-instance-of-a-struct-listener-and-dialer-on-same-address" rel="nofollow">
|
|
<span></span>
|
|
</a>
|
|
Usage as instance of a struct, Listener and Dialer on same address
|
|
</h3>
|
|
<div>
|
|
<pre>
|
|
<span>package</span> <span>main</span>
|
|
|
|
<span>import</span> <span>(</span>
|
|
<span>"fmt"</span>
|
|
<span>"io/ioutil"</span>
|
|
<span>"log"</span>
|
|
<span>"net"</span>
|
|
<span>"net/http"</span>
|
|
<span>)</span>
|
|
|
|
<span>func</span> <span>main</span><span>(</span><span>)</span> <span>{</span>
|
|
<span>garlic</span> <span>:=</span> <span>&</span><span>Garlic</span><span>{</span><span>}</span>
|
|
<span>defer</span> <span>garlic</span><span>.</span><span>Close</span><span>(</span><span>)</span>
|
|
<span>listener</span><span>,</span> <span>err</span> <span>:=</span> <span>garlic</span><span>.</span><span>Listen</span><span>(</span><span>)</span>
|
|
<span>if</span> <span>err</span> <span>!=</span> <span>nil</span> <span>{</span>
|
|
<span>log</span><span>.</span><span>Fatal</span><span>(</span><span>err</span><span>)</span>
|
|
<span>}</span>
|
|
<span>log</span><span>.</span><span>Println</span><span>(</span><span>"listener:"</span><span>,</span> <span>listener</span><span>.</span><span>Addr</span><span>(</span><span>)</span><span>.</span><span>String</span><span>(</span><span>)</span><span>)</span>
|
|
<span>defer</span> <span>listener</span><span>.</span><span>Close</span><span>(</span><span>)</span>
|
|
<span>http</span><span>.</span><span>HandleFunc</span><span>(</span><span>"/"</span><span>,</span> <span>func</span><span>(</span><span>w</span> <span>http</span><span>.</span><span>ResponseWriter</span><span>,</span> <span>r</span> <span>*</span><span>http</span><span>.</span><span>Request</span><span>)</span> <span>{</span>
|
|
<span>fmt</span><span>.</span><span>Fprintf</span><span>(</span><span>w</span><span>,</span> <span>"Hello, %q"</span><span>,</span> <span>r</span><span>.</span><span>URL</span><span>.</span><span>Path</span><span>)</span>
|
|
<span>}</span><span>)</span>
|
|
<span>go</span> <span>Serve</span><span>(</span><span>listener</span><span>)</span>
|
|
<span>transport</span> <span>:=</span> <span>http</span><span>.</span><span>Transport</span><span>{</span>
|
|
<span>Dial</span><span>:</span> <span>garlic</span><span>.</span><span>Dial</span><span>,</span>
|
|
<span>}</span>
|
|
<span>client</span> <span>:=</span> <span>&</span><span>http</span><span>.</span><span>Client</span><span>{</span>
|
|
<span>Transport</span><span>:</span> <span>&</span><span>transport</span><span>,</span>
|
|
<span>}</span>
|
|
<span>resp</span><span>,</span> <span>err</span> <span>:=</span> <span>client</span><span>.</span><span>Get</span><span>(</span><span>"http://"</span> <span>+</span> <span>listener</span><span>.</span><span>Addr</span><span>(</span><span>)</span><span>.</span><span>String</span><span>(</span><span>)</span> <span>+</span> <span>"/"</span><span>)</span>
|
|
<span>if</span> <span>err</span> <span>!=</span> <span>nil</span> <span>{</span>
|
|
<span>log</span><span>.</span><span>Fatal</span><span>(</span><span>err</span><span>)</span>
|
|
<span>}</span>
|
|
<span>defer</span> <span>resp</span><span>.</span><span>Body</span><span>.</span><span>Close</span><span>(</span><span>)</span>
|
|
<span>fmt</span><span>.</span><span>Println</span><span>(</span><span>resp</span><span>.</span><span>Status</span><span>)</span>
|
|
<span>body</span><span>,</span> <span>err</span> <span>:=</span> <span>ioutil</span><span>.</span><span>ReadAll</span><span>(</span><span>resp</span><span>.</span><span>Body</span><span>)</span>
|
|
<span>if</span> <span>err</span> <span>!=</span> <span>nil</span> <span>{</span>
|
|
<span>log</span><span>.</span><span>Fatal</span><span>(</span><span>err</span><span>)</span>
|
|
<span>}</span>
|
|
<span>fmt</span><span>.</span><span>Println</span><span>(</span><span>string</span><span>(</span><span>body</span><span>)</span><span>)</span>
|
|
<span>}</span>
|
|
|
|
<span>func</span> <span>Serve</span><span>(</span><span>listener</span> <span>net</span><span>.</span><span>Listener</span><span>)</span> <span>{</span>
|
|
<span>if</span> <span>err</span> <span>:=</span> <span>http</span><span>.</span><span>Serve</span><span>(</span><span>listener</span><span>,</span> <span>nil</span><span>)</span><span>;</span> <span>err</span> <span>!=</span> <span>nil</span> <span>{</span>
|
|
<span>log</span><span>.</span><span>Fatal</span><span>(</span><span>err</span><span>)</span>
|
|
<span>}</span>
|
|
<span>}</span>
|
|
</pre>
|
|
</div>
|
|
<h3>
|
|
<a href="#usage-as-automatically-managed-listeners" rel="nofollow">
|
|
<span></span>
|
|
</a>
|
|
Usage as automatically-managed Listeners
|
|
</h3>
|
|
<div>
|
|
<pre>
|
|
<span>package</span> <span>main</span>
|
|
|
|
<span>import</span> <span>(</span>
|
|
<span>"fmt"</span>
|
|
<span>"log"</span>
|
|
<span>"net/http"</span>
|
|
|
|
<span>"github.com/eyedeekay/onramp"</span>
|
|
<span>)</span>
|
|
|
|
<span>func</span> <span>main</span><span>(</span><span>)</span> <span>{</span>
|
|
<span>defer</span> <span>onramp</span><span>.</span><span>CloseAll</span><span>(</span><span>)</span>
|
|
<span>listener</span><span>,</span> <span>err</span> <span>:=</span> <span>onramp</span><span>.</span><span>Listen</span><span>(</span><span>"tcp"</span><span>,</span> <span>"service.i2p"</span><span>)</span>
|
|
<span>if</span> <span>err</span> <span>!=</span> <span>nil</span> <span>{</span>
|
|
<span>log</span><span>.</span><span>Fatal</span><span>(</span><span>err</span><span>)</span>
|
|
<span>}</span>
|
|
<span>defer</span> <span>listener</span><span>.</span><span>Close</span><span>(</span><span>)</span>
|
|
<span>http</span><span>.</span><span>HandleFunc</span><span>(</span><span>"/"</span><span>,</span> <span>func</span><span>(</span><span>w</span> <span>http</span><span>.</span><span>ResponseWriter</span><span>,</span> <span>r</span> <span>*</span><span>http</span><span>.</span><span>Request</span><span>)</span> <span>{</span>
|
|
<span>fmt</span><span>.</span><span>Fprintf</span><span>(</span><span>w</span><span>,</span> <span>"Hello, %q"</span><span>,</span> <span>r</span><span>.</span><span>URL</span><span>.</span><span>Path</span><span>)</span>
|
|
<span>}</span><span>)</span>
|
|
<span>if</span> <span>err</span> <span>:=</span> <span>http</span><span>.</span><span>Serve</span><span>(</span><span>listener</span><span>,</span> <span>nil</span><span>)</span><span>;</span> <span>err</span> <span>!=</span> <span>nil</span> <span>{</span>
|
|
<span>log</span><span>.</span><span>Fatal</span><span>(</span><span>err</span><span>)</span>
|
|
<span>}</span>
|
|
<span>}</span>
|
|
|
|
</pre>
|
|
</div>
|
|
<h3>
|
|
<a href="#usage-as-automatically-managed-dialers" rel="nofollow">
|
|
<span></span>
|
|
</a>
|
|
Usage as automatically-managed Dialers
|
|
</h3>
|
|
<div>
|
|
<pre>
|
|
<span>package</span> <span>main</span>
|
|
|
|
<span>import</span> <span>(</span>
|
|
<span>"fmt"</span>
|
|
<span>"io/ioutil"</span>
|
|
<span>"log"</span>
|
|
<span>"net/http"</span>
|
|
|
|
<span>"github.com/eyedeekay/onramp"</span>
|
|
<span>)</span>
|
|
|
|
<span>func</span> <span>main</span><span>(</span><span>)</span> <span>{</span>
|
|
<span>defer</span> <span>onramp</span><span>.</span><span>CloseAll</span><span>(</span><span>)</span>
|
|
<span>transport</span> <span>:=</span> <span>http</span><span>.</span><span>Transport</span><span>{</span>
|
|
<span>Dial</span><span>:</span> <span>onramp</span><span>.</span><span>Dial</span><span>,</span>
|
|
<span>}</span>
|
|
<span>client</span> <span>:=</span> <span>&</span><span>http</span><span>.</span><span>Client</span><span>{</span>
|
|
<span>Transport</span><span>:</span> <span>&</span><span>transport</span><span>,</span>
|
|
<span>}</span>
|
|
<span>resp</span><span>,</span> <span>err</span> <span>:=</span> <span>client</span><span>.</span><span>Get</span><span>(</span><span>"http://"</span> <span>+</span> <span>listener</span><span>.</span><span>Addr</span><span>(</span><span>)</span><span>.</span><span>String</span><span>(</span><span>)</span> <span>+</span> <span>"/"</span><span>)</span>
|
|
<span>if</span> <span>err</span> <span>!=</span> <span>nil</span> <span>{</span>
|
|
<span>log</span><span>.</span><span>Fatal</span><span>(</span><span>err</span><span>)</span>
|
|
<span>}</span>
|
|
<span>defer</span> <span>resp</span><span>.</span><span>Body</span><span>.</span><span>Close</span><span>(</span><span>)</span>
|
|
<span>fmt</span><span>.</span><span>Println</span><span>(</span><span>resp</span><span>.</span><span>Status</span><span>)</span>
|
|
<span>body</span><span>,</span> <span>err</span> <span>:=</span> <span>ioutil</span><span>.</span><span>ReadAll</span><span>(</span><span>resp</span><span>.</span><span>Body</span><span>)</span>
|
|
<span>if</span> <span>err</span> <span>!=</span> <span>nil</span> <span>{</span>
|
|
<span>log</span><span>.</span><span>Fatal</span><span>(</span><span>err</span><span>)</span>
|
|
<span>}</span>
|
|
<span>fmt</span><span>.</span><span>Println</span><span>(</span><span>string</span><span>(</span><span>body</span><span>)</span><span>)</span>
|
|
<span>}</span>
|
|
|
|
</pre>
|
|
</div>
|
|
<div id="sourcecode">
|
|
<ul>
|
|
<li>
|
|
<a href="https://github.com/eyedeekay/onramp.git">
|
|
Source Code: (https://github.com/eyedeekay/onramp.git)
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div>
|
|
<a href="#show">
|
|
Show license
|
|
</a>
|
|
<div id="show">
|
|
<div id="hide">
|
|
<pre><code>MIT License
|
|
|
|
Copyright (c) 2022 idk
|
|
|
|
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.
|
|
</code></pre>
|
|
<a href="#hide">
|
|
Hide license
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<iframe src="https://snowflake.torproject.org/embed.html" width="320" height="240" frameborder="0" scrolling="no"></iframe>
|
|
</div>
|
|
<div>
|
|
<a href="https://geti2p.net/">
|
|
<img src="i2plogo.png"></img>
|
|
I2P
|
|
</a>
|
|
</div>
|
|
</body>
|
|
</html> |