Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
7d820eeaaa | ||
![]() |
ac54a46ded | ||
![]() |
22a3e9f3a7 | ||
![]() |
b7ce5c1061 | ||
![]() |
7729762ce9 | ||
![]() |
13bf63f35a | ||
![]() |
91fc13b151 | ||
![]() |
7cf9e8b61e |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -22,3 +22,4 @@ _testmain.go
|
||||
*.exe
|
||||
itp-golang-github-eyedeekay-gosam.txt
|
||||
.pc
|
||||
deb/
|
||||
|
2
Makefile
2
Makefile
@@ -1,6 +1,6 @@
|
||||
|
||||
USER_GH=eyedeekay
|
||||
VERSION=0.32.23
|
||||
VERSION=0.32.25
|
||||
packagename=gosam
|
||||
|
||||
echo:
|
||||
|
@@ -39,6 +39,7 @@ type Client struct {
|
||||
|
||||
dontPublishLease bool
|
||||
encryptLease bool
|
||||
leaseSetEncType string
|
||||
|
||||
reduceIdle bool
|
||||
reduceIdleTime uint
|
||||
@@ -139,6 +140,7 @@ func NewClientFromOptions(opts ...func(*Client) error) (*Client, error) {
|
||||
c.id = 0
|
||||
c.lastaddr = "invalid"
|
||||
c.destination = ""
|
||||
c.leaseSetEncType = "4,0"
|
||||
for _, o := range opts {
|
||||
if err := o(&c); err != nil {
|
||||
return nil, err
|
||||
|
@@ -27,3 +27,12 @@ func TestClientHello(t *testing.T) {
|
||||
t.Log(client.Base32())
|
||||
teardown(t)
|
||||
}
|
||||
|
||||
func TestNewDestination(t *testing.T) {
|
||||
setup(t)
|
||||
t.Log(client.Base32())
|
||||
if _, err := client.NewDestination(SAMsigTypes[3]); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
teardown(t)
|
||||
}
|
||||
|
11
debian/changelog
vendored
11
debian/changelog
vendored
@@ -1,7 +1,12 @@
|
||||
golang-github-eyedeekay-gosam (0.32.23) bionic; urgency=medium
|
||||
golang-github-eyedeekay-gosam (0.32.24) UNRELEASED; urgency=medium
|
||||
|
||||
* Get rid of the debug directory, just move it into the source
|
||||
* Get rid of the old example, just use the one in the README
|
||||
* Improve the mutex thingy
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Tue, 25 Aug 2020 04:52:11 -0500
|
||||
|
||||
golang-github-eyedeekay-gosam (0.32.23) UNRELEASED; urgency=medium
|
||||
|
||||
* Protect Dial with a mutex to fix a lookup bug
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Tue, 25 Aug 2020 10:29:26 -0500
|
||||
|
||||
|
1
debian/files
vendored
1
debian/files
vendored
@@ -1 +0,0 @@
|
||||
golang-github-eyedeekay-gosam_0.3.2.1_source.buildinfo devel optional
|
8
dial.go
8
dial.go
@@ -30,7 +30,7 @@ func (c *Client) DialContext(ctx context.Context, network, addr string) (net.Con
|
||||
}
|
||||
}
|
||||
|
||||
func (c Client) dialCheck(addr string) (int32, bool) {
|
||||
func (c *Client) dialCheck(addr string) (int32, bool) {
|
||||
if c.lastaddr == "invalid" {
|
||||
fmt.Println("Preparing to dial new address.")
|
||||
return c.NewID(), true
|
||||
@@ -44,13 +44,13 @@ func (c Client) dialCheck(addr string) (int32, bool) {
|
||||
// Dial implements the net.Dial function and can be used for http.Transport
|
||||
func (c *Client) Dial(network, addr string) (net.Conn, error) {
|
||||
c.ml.Lock()
|
||||
defer c.ml.Unlock()
|
||||
portIdx := strings.Index(addr, ":")
|
||||
if portIdx >= 0 {
|
||||
addr = addr[:portIdx]
|
||||
}
|
||||
addr, err := c.Lookup(addr)
|
||||
if err != nil {
|
||||
c.ml.Unlock()
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -58,22 +58,18 @@ func (c *Client) Dial(network, addr string) (net.Conn, error) {
|
||||
if c.id, test = c.dialCheck(addr); test == true {
|
||||
c.destination, err = c.CreateStreamSession(c.id, c.destination)
|
||||
if err != nil {
|
||||
c.ml.Unlock()
|
||||
return nil, err
|
||||
}
|
||||
c.lastaddr = addr
|
||||
}
|
||||
c, err = c.NewClient()
|
||||
if err != nil {
|
||||
c.ml.Unlock()
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = c.StreamConnect(c.id, addr)
|
||||
if err != nil {
|
||||
c.ml.Unlock()
|
||||
return nil, err
|
||||
}
|
||||
c.ml.Unlock()
|
||||
return c.SamConn, nil
|
||||
}
|
||||
|
35
i2pkeys.go
Normal file
35
i2pkeys.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package goSam
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/eyedeekay/sam3/i2pkeys"
|
||||
)
|
||||
|
||||
// NewDestination generates a new I2P destination, creating the underlying
|
||||
// public/private keys in the process. The public key can be used to send messages
|
||||
// to the destination, while the private key can be used to reply to messages
|
||||
func (c *Client) NewDestination(sigType ...string) (i2pkeys.I2PKeys, error) {
|
||||
var (
|
||||
sigtmp string
|
||||
keys i2pkeys.I2PKeys
|
||||
)
|
||||
if len(sigType) > 0 {
|
||||
sigtmp = sigType[0]
|
||||
}
|
||||
r, err := c.sendCmd(
|
||||
"DEST GENERATE %s\n",
|
||||
sigtmp,
|
||||
)
|
||||
if err != nil {
|
||||
return keys, err
|
||||
}
|
||||
var pub, priv string
|
||||
if priv = r.Pairs["PRIV"]; priv == "" {
|
||||
return keys, errors.New("failed to generate private destination key")
|
||||
}
|
||||
if pub = r.Pairs["PUB"]; pub == "" {
|
||||
return keys, errors.New("failed to generate public destination key")
|
||||
}
|
||||
return i2pkeys.NewKeys(i2pkeys.I2PAddr(pub), priv), nil
|
||||
}
|
17
options.go
17
options.go
@@ -275,6 +275,14 @@ func SetEncrypt(b bool) func(*Client) error {
|
||||
}
|
||||
}
|
||||
|
||||
//SetLeaseSetEncType tells the router to use an encrypted leaseset
|
||||
func SetLeaseSetEncType(b string) func(*Client) error {
|
||||
return func(c *Client) error {
|
||||
c.leaseSetEncType = b
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
//SetReduceIdle sets the created tunnels to be reduced during extended idle time to avoid excessive resource usage
|
||||
func SetReduceIdle(b bool) func(*Client) error {
|
||||
return func(c *Client) error {
|
||||
@@ -426,6 +434,13 @@ func (c *Client) encryptlease() string {
|
||||
return " i2cp.encryptLeaseSet=false "
|
||||
}
|
||||
|
||||
func (c *Client) leasesetenctype() string {
|
||||
if c.encryptLease {
|
||||
return fmt.Sprintf(" i2cp.leaseSetEncType=%s ", c.leaseSetEncType)
|
||||
}
|
||||
return " i2cp.leaseSetEncType=4,0 "
|
||||
}
|
||||
|
||||
func (c *Client) dontpublishlease() string {
|
||||
if c.dontPublishLease {
|
||||
return " i2cp.dontPublishLeaseSet=true "
|
||||
@@ -478,6 +493,7 @@ func (c *Client) allOptions() string {
|
||||
c.outbackups() +
|
||||
c.dontpublishlease() +
|
||||
c.encryptlease() +
|
||||
c.leasesetenctype() +
|
||||
c.reduceonidle() +
|
||||
c.reduceidletime() +
|
||||
c.reduceidlecount() +
|
||||
@@ -498,6 +514,7 @@ func (c *Client) Print() string {
|
||||
c.outbackups() +
|
||||
c.dontpublishlease() +
|
||||
c.encryptlease() +
|
||||
c.leasesetenctype() +
|
||||
c.reduceonidle() +
|
||||
c.reduceidletime() +
|
||||
c.reduceidlecount() +
|
||||
|
Reference in New Issue
Block a user