Files
go-i2p.github.io/index.html

341 lines
9.1 KiB
HTML

<html>
<head>
<title>
Overview of I2P ...
</title>
<meta name="author" content="go-i2p" />
<meta name="description" content="go-i2p.github.io" />
<meta name="keywords" content="main" />
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="stylesheet" type="text/css" href="showhider.css" />
<link rel="stylesheet" type="text/css" href="darklight.css" />
</head>
<body>
<input type="checkbox" id="checkboxDarkLight">
<div class="container">
<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="index.html">
index.html
</a>
</li>
</ul>
<br>
<a href="#hidenav">
Hide Navigation
</a>
</div>
</div>
</div>
<a id="returnhome" href="/">
/
</a>
<h1>
Overview of I2P For Go
</h1>
<p>
A wide variety of tools exist which make it easy to use I2P as a network layer in Go applications.
These tools integrate at various levels and provide different functionality, but virtually anything is possible using I2P and Go.
Eventually, this page will serve as a website for
<code>
go-i2p
</code>
, but for now it serves to track the state of various ways of using Go to interact with I2P.
</p>
<h2>
Stuff that works:
</h2>
<h3>
<code>
net.Conn
</code>
and
<code>
net.PacketConn
</code>
interface implementations
</h3>
<p>
These act as drop-in replacements for
<code>
net.Conn
</code>
and
<code>
net.PacketConn
</code>
in your code and libraries.
When used correctly, they make it easy to adapt Go applications to I2P.
All
<code>
net.Conn
</code>
and
<code>
net.PacketConn
</code>
interface implementations in Go
</p>
<ul>
<li>
<a href="https://github.com/eyedeekay/onramp">
<code>
onramp
</code>
an easy-to-use, automatically-configured library for managing I2P connections, implements net.Conn and net.PacketConn, supports Primary sessions
</a>
-
<code>
mature, implements SAMv3.3, Streaming and Datagrams
</code>
</li>
<li>
<a href="https://github.com/eyedeekay/goSam">
<code>
goSam
</code>
simple and highly configurable net.Conn implementation, implement a complete HTTP/S/CONNECT proxy in ~50 LOC
</a>
-
<code>
mature, implements SAMv3.2, Streaming Only
</code>
</li>
<li>
<a href="https://github.com/eyedeekay/sam3">
<code>
sam3
</code>
hightly configurable net.Conn, net.PacketConn implementation, supports Primary sessions, exposes all the options and all the sharp edges
</a>
-
<code>
mature, implements SAMv3.3, Streaming and Datagrams
</code>
</li>
</ul>
<h3>
<code>
net.Addr
</code>
interface implementation
</h3>
<ul>
<li>
<a href="https://github.com/eyedeekay/i2pkeys">
<code>
i2pkeys
</code>
, formerly part of
<code>
sam3(above)
</code>
, now a standalone library used by
<code>
onramp
</code>
,
<code>
goSam
</code>
, and
<code>
sam3
</code>
for common ways of handling loading, unloading, and processing I2P keys
</a>
</li>
</ul>
<h3>
I2PControl-RPC Libraries
</h3>
<ul>
<li>
<a href="https://github.com/eyedeekay/go-i2pcontrol">
<code>
go-i2pcontrol
</code>
an implementation of the I2PControl-RPC protocol in Go as a library
</a>
-
<code>
mature but does not provide all possible consts(like ratestats)
</code>
</li>
<li>
<a href="https://github.com/eyedeekay/i2p-control">
<code>
i2p-control
</code>
CLI application built using/as a demo of
<code>
go-i2pcontrol
</code>
</a>
-
<code>
mature but may lack features
</code>
</li>
</ul>
<h3>
Proxies and Application-Layer Adapters
</h3>
<ul>
<li>
<a href="https://github.com/eyedeekay/sam-forwarder">
<code>
sam-forwarder
</code>
an I2PTunnel-alike which accepts i2pd-style config files
</a>
-
<code>
mature enough for a rewrite
</code>
</li>
<li>
<a href="https://github.com/eyedeekay/go-i2p-bt">
<code>
go-i2p-bt
</code>
a Bittorrent library configured using
<code>
onramp
</code>
which tracks SAMv3 development and has similar features to I2PSnark
</a>
-
<code>
not mature
</code>
</li>
</ul>
<h3>
Software
</h3>
<ul>
<li>
<a href="https://i2pgit.org/idk/reseed-tools/">
<code>
reseed-tools
</code>
a freestanding implementation of an I2P Reseed server
</a>
-
<code>
mature and extensively used/tested
</code>
</li>
<li>
<a href="https://i2pggit.org/idk/railroad">
<code>
railroad
</code>
a blog mostly compatible with Ghost style themes with markdown-based editing
</a>
-
<code>
not mature
</code>
</li>
</ul>
<h2>
Stuff in Progress:
</h2>
<h3>
Router Implementations
</h3>
<ul>
<li>
<a href="https://github.com/go-i2p/go-i2p">
<code>
go-i2p
</code>
a pure-Go implementation of the I2P Router
<code>
WIP
</code>
</a>
-
<code>
WIP does not work yet
</code>
</li>
</ul>
<div id="sourcecode">
<span id="sourcehead">
<strong>
Get the source code:
</strong>
</span>
<ul>
<li>
<a href="https://github.com/go-i2p/go-i2p.github.io">
Source Repository: (https://github.com/go-i2p/go-i2p.github.io)
</a>
</li>
</ul>
</div>
<div>
<a href="#show">
Show license
</a>
<div id="show">
<div id="hide">
<pre><code>MIT License
Copyright (c) 2024 go-i2p
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>
<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 class="i2plogo" src="i2plogo.png"></img>
I2P
</a>
</div>
</body>
</html>