5 Commits

Author SHA1 Message Date
eyedeekay
daeaa91183 update modules 2024-11-16 16:25:24 -05:00
eyedeekay
ed7e6f56ae update release process 2024-11-16 16:23:33 -05:00
eyedeekay
982a496406 update module 2024-11-16 15:51:42 -05:00
eyedeekay
d7abd8af30 don't log in GetJoinedWD for now because it is called prior to 2024-11-16 15:50:58 -05:00
eyedeekay
0d05b3c3f7 update examples 2024-11-14 10:43:17 -05:00
13 changed files with 66 additions and 52 deletions

View File

@@ -12,7 +12,7 @@ import (
"log"
"net/http"
"github.com/eyedeekay/onramp"
"github.com/go-i2p/onramp"
)
func main() {
@@ -44,7 +44,7 @@ import (
"log"
"net/http"
"github.com/eyedeekay/onramp"
"github.com/go-i2p/onramp"
)
func main() {
@@ -135,7 +135,7 @@ import (
"log"
"net/http"
"github.com/eyedeekay/onramp"
"github.com/go-i2p/onramp"
)
func main() {
@@ -167,7 +167,7 @@ import (
"log"
"net/http"
"github.com/eyedeekay/onramp"
"github.com/go-i2p/onramp"
)
func main() {

View File

@@ -1,6 +1,6 @@
USER_GH=eyedeekay
VERSION=0.33.9
USER_GH=go-i2p
VERSION=0.33.92
CREDIT='contributors to this release: @hkh4n, @eyedeekay'
packagename=onramp

View File

@@ -1,6 +1,8 @@
onramp
======
[![Go Report Card](https://goreportcard.com/badge/github.com/go-i2p/onramp)](https://goreportcard.com/report/github.com/go-i2p/onramp)
High-level, easy-to-use listeners and clients for I2P and onion URL's from Go.
Provides only the most widely-used functions in a basic way. It expects nothing
from the users, an otherwise empty instance of the structs will listen and dial
@@ -12,9 +14,9 @@ This means that hidden services will maintain their identities, and that clients
will always have the same return addresses. If you don't want this behavior,
make sure to delete the "keystore" when your app closes or when your application
needs to cycle keys by calling the `Garlic.DeleteKeys()` or `Onion.DeleteKeys()`
function. For more information, check out the [godoc](http://pkg.go.dev/github.com/eyedeekay/onramp).
function. For more information, check out the [godoc](http://pkg.go.dev/github.com/go-i2p/onramp).
- **[Source Code](https://github.com/eyedeekay/onramp)**
- **[Source Code](https://github.com/go-i2p/onramp)**
STATUS: This project is maintained. I will respond to issues, pull requests, and feature requests within a few days.
@@ -38,7 +40,7 @@ package main
import (
"log"
"github.com/eyedeekay/onramp"
"github.com/go-i2p/onramp"
)
func main() {
@@ -64,7 +66,7 @@ package main
import (
"log"
"github.com/eyedeekay/onramp"
"github.com/go-i2p/onramp"
)
func main() {

View File

@@ -4,12 +4,13 @@
package onramp
import (
"github.com/sirupsen/logrus"
"net"
"net/url"
"os"
"path/filepath"
"strings"
"github.com/sirupsen/logrus"
)
//go:generate go run -tags gen ./gen.go
@@ -18,23 +19,23 @@ import (
func GetJoinedWD(dir string) (string, error) {
wd, err := os.Getwd()
if err != nil {
log.WithError(err).Error("Failed to get working directory")
//log.WithError(err).Error("Failed to get working directory")
return "", err
}
jwd := filepath.Join(wd, dir)
ajwd, err := filepath.Abs(jwd)
if err != nil {
log.WithError(err).WithField("path", jwd).Error("Failed to get absolute path")
//log.WithError(err).WithField("path", jwd).Error("Failed to get absolute path")
return "", err
}
if _, err := os.Stat(ajwd); err != nil {
log.WithField("path", ajwd).Debug("Directory does not exist, creating")
//log.WithField("path", ajwd).Debug("Directory does not exist, creating")
if err := os.MkdirAll(ajwd, 0755); err != nil {
log.WithError(err).WithField("path", ajwd).Error("Failed to create directory")
//log.WithError(err).WithField("path", ajwd).Error("Failed to create directory")
return "", err
}
}
log.WithField("path", ajwd).Debug("Successfully got joined working directory")
//log.WithField("path", ajwd).Debug("Successfully got joined working directory")
return ajwd, nil
}

View File

@@ -7,12 +7,13 @@ import (
"context"
"crypto/tls"
"fmt"
"github.com/sirupsen/logrus"
"net"
"os"
"path/filepath"
"strings"
"github.com/sirupsen/logrus"
"github.com/go-i2p/i2pkeys"
"github.com/go-i2p/sam3"
)
@@ -75,7 +76,7 @@ func (g *Garlic) String() string {
default:
r = g.ServiceKeys.Address.DestHash().Hash()
}
return g.addrString(r) //r //strings.TrimLeft(strings.TrimRight(r, "\n"), "\n") //strings.TrimSpace(r)
return g.addrString(r) // r //strings.TrimLeft(strings.TrimRight(r, "\n"), "\n") //strings.TrimSpace(r)
}
func (g *Garlic) getName() string {
@@ -175,7 +176,7 @@ func (g *Garlic) NewListener(n, addr string) (net.Listener, error) {
log.Debug("Successfully created listener")
return listener, nil
//return g.Listen(n)
// return g.Listen(n)
}
// Listen returns a net.Listener for the Garlic structure's I2P keys.
@@ -194,7 +195,7 @@ func (g *Garlic) Listen(args ...string) (net.Listener, error) {
log.Debug("Successfully created listener")
return listener, nil
//return g.OldListen(args...)
// return g.OldListen(args...)
}
// OldListen returns a net.Listener for the Garlic structure's I2P keys.
@@ -204,7 +205,7 @@ func (g *Garlic) OldListen(args ...string) (net.Listener, error) {
if len(args) > 0 {
protocol := args[0]
log.WithField("protocol", protocol).Debug("Checking protocol type")
//if args[0] == "tcp" || args[0] == "tcp6" || args[0] == "st" || args[0] == "st6" {
// if args[0] == "tcp" || args[0] == "tcp6" || args[0] == "st" || args[0] == "st6" {
if protocol == "tcp" || protocol == "tcp6" || protocol == "st" || protocol == "st6" {
log.Debug("Using TCP stream listener")
return g.ListenStream()
@@ -284,7 +285,7 @@ func (g *Garlic) ListenTLS(args ...string) (net.Listener, error) {
protocol := args[0]
log.WithField("protocol", protocol).Debug("Creating TLS listener for protocol")
//if args[0] == "tcp" || args[0] == "tcp6" || args[0] == "st" || args[0] == "st6" {
// if args[0] == "tcp" || args[0] == "tcp6" || args[0] == "st" || args[0] == "st6" {
if protocol == "tcp" || protocol == "tcp6" || protocol == "st" || protocol == "st6" {
log.Debug("Creating TLS stream listener")
return tls.NewListener(
@@ -344,7 +345,7 @@ func (g *Garlic) Dial(net, addr string) (net.Conn, error) {
}
log.Debug("Successfully established connection")
return conn, nil
//return g.StreamSession.Dial(net, addr)
// return g.StreamSession.Dial(net, addr)
}
// DialContext returns a net.Conn for the Garlic structure's I2P keys.
@@ -375,7 +376,7 @@ func (g *Garlic) DialContext(ctx context.Context, net, addr string) (net.Conn, e
log.Debug("Successfully established connection")
return conn, nil
//return g.StreamSession.DialContext(ctx, net, addr)
// return g.StreamSession.DialContext(ctx, net, addr)
}
// Close closes the Garlic structure's sessions and listeners.
@@ -422,7 +423,7 @@ func (g *Garlic) Keys() (*i2pkeys.I2PKeys, error) {
}
func (g *Garlic) DeleteKeys() error {
//return DeleteGarlicKeys(g.getName())
// return DeleteGarlicKeys(g.getName())
log.WithField("name", g.getName()).Debug("Attempting to delete Garlic keys")
err := DeleteGarlicKeys(g.getName())
if err != nil {
@@ -561,7 +562,7 @@ func CloseGarlic(tunName string) {
g, ok := garlics[tunName]
if ok {
log.Debug("Found Garlic connection, closing")
//g.Close()
// g.Close()
err := g.Close()
if err != nil {
log.WithError(err).Error("Error closing Garlic connection")
@@ -621,5 +622,5 @@ func DialGarlic(network, addr string) (net.Conn, error) {
log.Debug("Successfully established Garlic connection")
return conn, nil
//return g.Dial(network, addr)
// return g.Dial(network, addr)
}

View File

@@ -2,10 +2,14 @@ package onramp
import "github.com/go-i2p/sam3"
var OPT_DEFAULTS = sam3.Options_Default
var OPT_WIDE = sam3.Options_Wide
var (
OPT_DEFAULTS = sam3.Options_Default
OPT_WIDE = sam3.Options_Wide
)
var OPT_HUGE = sam3.Options_Humongous
var OPT_LARGE = sam3.Options_Large
var OPT_MEDIUM = sam3.Options_Medium
var OPT_SMALL = sam3.Options_Small
var (
OPT_HUGE = sam3.Options_Humongous
OPT_LARGE = sam3.Options_Large
OPT_MEDIUM = sam3.Options_Medium
OPT_SMALL = sam3.Options_Small
)

4
go.mod
View File

@@ -11,7 +11,7 @@ require (
require (
github.com/stretchr/testify v1.8.4 // indirect
golang.org/x/crypto v0.11.0 // indirect
golang.org/x/net v0.12.0 // indirect
golang.org/x/crypto v0.29.0 // indirect
golang.org/x/net v0.31.0 // indirect
golang.org/x/sys v0.27.0 // indirect
)

6
go.sum
View File

@@ -3,9 +3,7 @@ github.com/cretz/bine v0.2.0/go.mod h1:WU4o9QR9wWp8AVKtTM1XD5vUHkEqnf2vVSo6dBqbe
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-i2p/i2pkeys v0.0.0-20241108200332-e4f5ccdff8c4 h1:LRjaRCzg1ieGKZjELlaIg06Fx04RHzQLsWMYp1H6PQ4=
github.com/go-i2p/i2pkeys v0.0.0-20241108200332-e4f5ccdff8c4/go.mod h1:m5TlHjPZrU5KbTd7Lr+I2rljyC6aJ88HdkeMQXV0U0E=
github.com/go-i2p/i2pkeys v0.33.9/go.mod h1:Apt0rKbwylG37GoTAmovuJvB4lu0yFM2sgfIUefbMK8=
github.com/go-i2p/i2pkeys v0.33.10-0.20241113193422-e10de5e60708 h1:Tiy9IBwi21maNpK74yCdHursJJMkyH7w87tX1nXGWzg=
github.com/go-i2p/i2pkeys v0.33.10-0.20241113193422-e10de5e60708/go.mod h1:m5TlHjPZrU5KbTd7Lr+I2rljyC6aJ88HdkeMQXV0U0E=
github.com/go-i2p/sam3 v0.33.9 h1:3a+gunx75DFc6jxloUZTAVJbdP6736VU1dy2i7I9fKA=
@@ -21,10 +19,14 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA=
golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ=
golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50=
golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo=
golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

3
log.go
View File

@@ -1,11 +1,12 @@
package onramp
import (
"github.com/sirupsen/logrus"
"io"
"os"
"strings"
"sync"
"github.com/sirupsen/logrus"
)
var (

View File

@@ -7,11 +7,12 @@ import (
"context"
"crypto/tls"
"fmt"
"github.com/sirupsen/logrus"
"net"
"os"
"path/filepath"
"github.com/sirupsen/logrus"
"github.com/cretz/bine/tor"
"github.com/cretz/bine/torutil/ed25519"
)
@@ -70,7 +71,7 @@ func (o *Onion) getTor() *tor.Tor {
torp, err = tor.Start(o.getContext(), o.getStartConf())
if err != nil {
log.WithError(err).Error("Failed to start Tor")
panic(err) //return nil instead?
panic(err) // return nil instead?
}
log.Debug("Tor instance started successfully")
}
@@ -78,9 +79,9 @@ func (o *Onion) getTor() *tor.Tor {
}
func (o *Onion) getDialer() *tor.Dialer {
//if o.Dialer == nil {
//var err error
//o.Dialer, err
// if o.Dialer == nil {
// var err error
// o.Dialer, err
log.Debug("Creating new Tor dialer")
dialer, err := o.getTor().Dialer(o.getContext(), o.getDialConf())
if err != nil {
@@ -123,7 +124,7 @@ func (o *Onion) Listen(args ...string) (net.Listener, error) {
log.Debug("Successfully created Onion listener")
return listener, nil
//return o.OldListen(args...)
// return o.OldListen(args...)
}
// OldListen returns a net.Listener which will listen on an onion
@@ -140,7 +141,7 @@ func (o *Onion) OldListen(args ...string) (net.Listener, error) {
log.Debug("Successfully created Tor listener")
return listener, nil
//return o.getTor().Listen(o.getContext(), o.getListenConf())
// return o.getTor().Listen(o.getContext(), o.getListenConf())
}
// ListenTLS returns a net.Listener which will apply TLS encryption
@@ -182,7 +183,7 @@ func (o *Onion) Dial(net, addr string) (net.Conn, error) {
log.Debug("Successfully established Tor connection")
return conn, nil
//return o.getDialer().DialContext(o.getContext(), net, addr)
// return o.getDialer().DialContext(o.getContext(), net, addr)
}
// Close closes the Onion Service and all associated resources.
@@ -197,7 +198,7 @@ func (o *Onion) Close() error {
log.Debug("Successfully closed Onion service")
return nil
//return o.getTor().Close()
// return o.getTor().Close()
}
// Keys returns the keys for the Onion
@@ -212,7 +213,7 @@ func (o *Onion) Keys() (ed25519.KeyPair, error) {
log.Debug("Successfully retrieved Onion keys")
return keys, nil
//return TorKeys(o.getName())
// return TorKeys(o.getName())
}
// DeleteKeys deletes the keys at the given key name in the key store.
@@ -343,7 +344,7 @@ func ListenOnion(network, keys string) (net.Listener, error) {
log.Debug("Successfully created Onion listener")
return listener, nil
//return g.Listen()
// return g.Listen()
}
// DialOnion returns a net.Conn for a onion structure's keys

View File

@@ -24,7 +24,7 @@ func TestBareOnion(t *testing.T) {
t.Error(err)
}
log.Println("listener:", listener.Addr().String())
//defer listener.Close()
// defer listener.Close()
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, %q", r.URL.Path)
})

View File

@@ -1,10 +1,11 @@
package onramp
import (
"github.com/sirupsen/logrus"
"io"
"net"
"strings"
"github.com/sirupsen/logrus"
)
type OnrampProxy struct {

3
tls.go
View File

@@ -10,7 +10,6 @@ import (
"encoding/asn1"
"encoding/pem"
"fmt"
"github.com/sirupsen/logrus"
"math/big"
"net"
"os"
@@ -18,6 +17,8 @@ import (
"strings"
"time"
"github.com/sirupsen/logrus"
"github.com/cretz/bine/torutil"
)