Files
go-i2p.github.io/README.md

43 lines
2.9 KiB
Markdown

# Overview of I2P For Go
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 `go-i2p`, but for now it serves to track the state of various ways of using Go to interact with I2P.
## Stuff that works:
### `net.Conn` and `net.PacketConn` interface implementations
These act as drop-in replacements for `net.Conn` and `net.PacketConn` in your code and libraries.
When used correctly, they make it easy to adapt Go applications to I2P.
All `net.Conn` and `net.PacketConn` interface implementations in Go
- [`onramp` an easy-to-use, automatically-configured library for managing I2P connections, implements net.Conn and net.PacketConn, supports Primary sessions](https://github.com/eyedeekay/onramp) - `mature, implements SAMv3.3, Streaming and Datagrams`
- [`goSam` simple and highly configurable net.Conn implementation, implement a complete HTTP/S/CONNECT proxy in ~50 LOC](https://github.com/eyedeekay/goSam) - `mature, implements SAMv3.2, Streaming Only`
- [`sam3` hightly configurable net.Conn, net.PacketConn implementation, supports Primary sessions, exposes all the options and all the sharp edges](https://github.com/eyedeekay/sam3) - `mature, implements SAMv3.3, Streaming and Datagrams`
### `net.Addr` interface implementation
- [`i2pkeys`, formerly part of `sam3(above)`, now a standalone library used by `onramp`, `goSam`, and `sam3` for common ways of handling loading, unloading, and processing I2P keys](https://github.com/eyedeekay/i2pkeys)
### I2PControl-RPC Libraries
- [`go-i2pcontrol` an implementation of the I2PControl-RPC protocol in Go as a library](https://github.com/eyedeekay/go-i2pcontrol) - `mature but does not provide all possible consts(like ratestats)`
- [`i2p-control` CLI application built using/as a demo of `go-i2pcontrol`](https://github.com/eyedeekay/i2p-control) - `mature but may lack features`
### Proxies and Application-Layer Adapters
- [`sam-forwarder` an I2PTunnel-alike which accepts i2pd-style config files](https://github.com/eyedeekay/sam-forwarder) - `mature enough for a rewrite`
- [`go-i2p-bt` a Bittorrent library configured using `onramp` which tracks SAMv3 development and has similar features to I2PSnark](https://github.com/eyedeekay/go-i2p-bt) - `not mature`
### Software
- [`reseed-tools` a freestanding implementation of an I2P Reseed server](https://i2pgit.org/idk/reseed-tools/) - `mature and extensively used/tested`
- [`railroad` a blog mostly compatible with Ghost style themes with markdown-based editing](https://i2pggit.org/idk/railroad) - `not mature`
## Stuff in Progress:
### Router Implementations
- [`go-i2p` a pure-Go implementation of the I2P Router `WIP`](https://github.com/go-i2p/go-i2p) - `WIP does not work yet`