Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
cd2a4f072e | ||
![]() |
818b5249bc | ||
![]() |
83f9866de4 | ||
![]() |
b4293f755e | ||
![]() |
2bde2687b3 |
5
Makefile
5
Makefile
@@ -1,13 +1,14 @@
|
|||||||
|
|
||||||
USER_GH=eyedeekay
|
USER_GH=eyedeekay
|
||||||
VERSION=0.33.7
|
VERSION=0.33.8
|
||||||
|
CREDIT='contributors to this release: @hkh4n, @eyedeekay'
|
||||||
packagename=sam3
|
packagename=sam3
|
||||||
|
|
||||||
echo:
|
echo:
|
||||||
@echo "type make version to do release $(VERSION)"
|
@echo "type make version to do release $(VERSION)"
|
||||||
|
|
||||||
version:
|
version:
|
||||||
github-release release -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(packagename) -t v$(VERSION) -d "version $(VERSION)"
|
github-release release -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(packagename) -t v$(VERSION) -d "version $(VERSION) $(CREDIT)"
|
||||||
|
|
||||||
del:
|
del:
|
||||||
github-release delete -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(packagename) -t v$(VERSION)
|
github-release delete -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(packagename) -t v$(VERSION)
|
||||||
|
2
go.mod
2
go.mod
@@ -2,4 +2,4 @@ module github.com/eyedeekay/sam3
|
|||||||
|
|
||||||
go 1.12
|
go 1.12
|
||||||
|
|
||||||
require github.com/eyedeekay/i2pkeys v0.33.7
|
require github.com/eyedeekay/i2pkeys v0.33.8
|
||||||
|
2
go.sum
2
go.sum
@@ -1,2 +1,4 @@
|
|||||||
github.com/eyedeekay/i2pkeys v0.33.7 h1:cxqHSkl6b2lHyPJUtIQZBiipYf7NQVYqM1d3ub0MI4k=
|
github.com/eyedeekay/i2pkeys v0.33.7 h1:cxqHSkl6b2lHyPJUtIQZBiipYf7NQVYqM1d3ub0MI4k=
|
||||||
github.com/eyedeekay/i2pkeys v0.33.7/go.mod h1:W9KCm9lqZ+Ozwl3dwcgnpPXAML97+I8Jiht7o5A8YBM=
|
github.com/eyedeekay/i2pkeys v0.33.7/go.mod h1:W9KCm9lqZ+Ozwl3dwcgnpPXAML97+I8Jiht7o5A8YBM=
|
||||||
|
github.com/eyedeekay/i2pkeys v0.33.8 h1:f3llyruchFqs1QwCacBYbShArKPpMSSOqo/DVZXcfVs=
|
||||||
|
github.com/eyedeekay/i2pkeys v0.33.8/go.mod h1:W9KCm9lqZ+Ozwl3dwcgnpPXAML97+I8Jiht7o5A8YBM=
|
||||||
|
18
sam3.go
18
sam3.go
@@ -5,6 +5,7 @@ import (
|
|||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"net"
|
"net"
|
||||||
@@ -60,17 +61,17 @@ func NewSAM(address string) (*SAM, error) {
|
|||||||
// TODO: clean this up
|
// TODO: clean this up
|
||||||
conn, err := net.Dial("tcp", address)
|
conn, err := net.Dial("tcp", address)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("error dialing to address '%s': %w", address, err)
|
||||||
}
|
}
|
||||||
if _, err := conn.Write(s.Config.HelloBytes()); err != nil {
|
if _, err := conn.Write(s.Config.HelloBytes()); err != nil {
|
||||||
conn.Close()
|
conn.Close()
|
||||||
return nil, err
|
return nil, fmt.Errorf("error writing to address '%s': %w", address, err)
|
||||||
}
|
}
|
||||||
buf := make([]byte, 256)
|
buf := make([]byte, 256)
|
||||||
n, err := conn.Read(buf)
|
n, err := conn.Read(buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
conn.Close()
|
conn.Close()
|
||||||
return nil, err
|
return nil, fmt.Errorf("error reading onto buffer: %w", err)
|
||||||
}
|
}
|
||||||
if strings.Contains(string(buf[:n]), "HELLO REPLY RESULT=OK") {
|
if strings.Contains(string(buf[:n]), "HELLO REPLY RESULT=OK") {
|
||||||
s.Config.I2PConfig.SetSAMAddress(address)
|
s.Config.I2PConfig.SetSAMAddress(address)
|
||||||
@@ -78,10 +79,9 @@ func NewSAM(address string) (*SAM, error) {
|
|||||||
//s.Config.I2PConfig.DestinationKeys = nil
|
//s.Config.I2PConfig.DestinationKeys = nil
|
||||||
s.resolver, err = NewSAMResolver(&s)
|
s.resolver, err = NewSAMResolver(&s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("error creating resolver: %w", err)
|
||||||
}
|
}
|
||||||
return &s, nil
|
return &s, nil
|
||||||
//return &SAM{address, conn, nil, nil}, nil
|
|
||||||
} else if string(buf[:n]) == "HELLO REPLY RESULT=NOVERSION\n" {
|
} else if string(buf[:n]) == "HELLO REPLY RESULT=NOVERSION\n" {
|
||||||
conn.Close()
|
conn.Close()
|
||||||
return nil, errors.New("That SAM bridge does not support SAMv3.")
|
return nil, errors.New("That SAM bridge does not support SAMv3.")
|
||||||
@@ -155,12 +155,12 @@ func (sam *SAM) NewKeys(sigType ...string) (i2pkeys.I2PKeys, error) {
|
|||||||
sigtmp = sigType[0]
|
sigtmp = sigType[0]
|
||||||
}
|
}
|
||||||
if _, err := sam.conn.Write([]byte("DEST GENERATE " + sigtmp + "\n")); err != nil {
|
if _, err := sam.conn.Write([]byte("DEST GENERATE " + sigtmp + "\n")); err != nil {
|
||||||
return i2pkeys.I2PKeys{}, err
|
return i2pkeys.I2PKeys{}, fmt.Errorf("error with writing in SAM: %w", err)
|
||||||
}
|
}
|
||||||
buf := make([]byte, 8192)
|
buf := make([]byte, 8192)
|
||||||
n, err := sam.conn.Read(buf)
|
n, err := sam.conn.Read(buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return i2pkeys.I2PKeys{}, err
|
return i2pkeys.I2PKeys{}, fmt.Errorf("error with reading in SAM: %w", err)
|
||||||
}
|
}
|
||||||
s := bufio.NewScanner(bytes.NewReader(buf[:n]))
|
s := bufio.NewScanner(bytes.NewReader(buf[:n]))
|
||||||
s.Split(bufio.ScanWords)
|
s.Split(bufio.ScanWords)
|
||||||
@@ -229,7 +229,7 @@ func (sam *SAM) newGenericSessionWithSignatureAndPorts(style, id, from, to strin
|
|||||||
n, err := conn.Write(scmsg[m:])
|
n, err := conn.Write(scmsg[m:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
conn.Close()
|
conn.Close()
|
||||||
return nil, err
|
return nil, fmt.Errorf("writing to connection failed: %w", err)
|
||||||
}
|
}
|
||||||
m += n
|
m += n
|
||||||
}
|
}
|
||||||
@@ -237,7 +237,7 @@ func (sam *SAM) newGenericSessionWithSignatureAndPorts(style, id, from, to strin
|
|||||||
n, err := conn.Read(buf)
|
n, err := conn.Read(buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
conn.Close()
|
conn.Close()
|
||||||
return nil, err
|
return nil, fmt.Errorf("reading from connection failed: %w", err)
|
||||||
}
|
}
|
||||||
text := string(buf[:n])
|
text := string(buf[:n])
|
||||||
if strings.HasPrefix(text, session_OK) {
|
if strings.HasPrefix(text, session_OK) {
|
||||||
|
Reference in New Issue
Block a user