get ready for saving the keys
This commit is contained in:
parent
564bf08803
commit
fa15a55bbd
5 changed files with 72 additions and 21 deletions
|
@ -19,5 +19,7 @@ func NewConn(conn *sam3.SAMConn, path string) (*Conn, error) {
|
|||
}
|
||||
|
||||
func GenConn(conn *sam3.SAMConn, path string) *Conn {
|
||||
return &Conn{SAMConn: conn, path: path}
|
||||
var c = Conn{SAMConn: conn, path: path}
|
||||
c.SaveKeys()
|
||||
return &c
|
||||
}
|
||||
|
|
16
main.go
16
main.go
|
@ -2,9 +2,6 @@ package main
|
|||
|
||||
import (
|
||||
"flag"
|
||||
//"log"
|
||||
"./socks"
|
||||
//"github.com/eyedeekay/eeproxy/socks"
|
||||
"os"
|
||||
"os/signal"
|
||||
"strings"
|
||||
|
@ -12,7 +9,8 @@ import (
|
|||
|
||||
import (
|
||||
"github.com/eyedeekay/sam-forwarder/config"
|
||||
"github.com/eyedeekay/samcatd-web"
|
||||
//"github.com/eyedeekay/samcatd-web"
|
||||
"github.com/eyedeekay/eeproxy/socks"
|
||||
)
|
||||
|
||||
type flagOpts []string
|
||||
|
@ -95,15 +93,11 @@ var (
|
|||
)
|
||||
|
||||
var (
|
||||
webinterface *samcatweb.SAMWebConfig
|
||||
webinterfaceerr error
|
||||
err error
|
||||
accessList flagOpts
|
||||
config *i2ptunconf.Conf
|
||||
err error
|
||||
config *i2ptunconf.Conf
|
||||
)
|
||||
|
||||
func main() {
|
||||
flag.Var(&accessList, "accesslist", "Specify an access list member(can be used multiple times)")
|
||||
flag.Parse()
|
||||
|
||||
if *readKeys != "" {
|
||||
|
@ -144,7 +138,7 @@ func main() {
|
|||
|
||||
c := make(chan os.Signal, 1)
|
||||
signal.Notify(c, os.Interrupt)
|
||||
if tunsocks, tunerr := tunmanager.NewManager(); tunerr == nil {
|
||||
if tunsocks, tunerr := tunmanager.NewManager(config.SamHost, config.SamPort, config.Print(), config.SaveDirectory); tunerr == nil {
|
||||
go func() {
|
||||
for sig := range c {
|
||||
if sig == os.Interrupt {
|
||||
|
|
|
@ -21,7 +21,7 @@ func (r Resolver) Resolve(ctx context.Context, name string) (context.Context, ne
|
|||
}
|
||||
|
||||
func (r Resolver) ResolveI2P(ctx context.Context, name string) (context.Context, *sam3.I2PAddr, error) {
|
||||
if r.ValidateI2PAddr(name) {
|
||||
if !r.ValidateI2PAddr(name) {
|
||||
return ctx, nil, fmt.Errorf("Error, not an allowed suffix")
|
||||
}
|
||||
raddr, err := r.SAMResolver.Resolve(name)
|
||||
|
@ -32,7 +32,7 @@ func (r Resolver) ResolveI2P(ctx context.Context, name string) (context.Context,
|
|||
}
|
||||
|
||||
func (r Resolver) ValidateI2PAddr(name string) bool {
|
||||
noi2p := true
|
||||
noi2p := false
|
||||
for _, suffix := range r.allowedSuffixes {
|
||||
if strings.HasSuffix(name, suffix) {
|
||||
if suffix == ".b32.i2p" {
|
||||
|
@ -41,7 +41,7 @@ func (r Resolver) ValidateI2PAddr(name string) bool {
|
|||
break
|
||||
}
|
||||
}
|
||||
noi2p = false
|
||||
noi2p = true
|
||||
}
|
||||
}
|
||||
return noi2p
|
||||
|
|
|
@ -18,8 +18,11 @@ type Manager struct {
|
|||
resolver.Resolver
|
||||
socks5.Config
|
||||
sam3.StreamSession
|
||||
conns []*conn.Conn
|
||||
datapath string
|
||||
conns []*conn.Conn
|
||||
datadir string
|
||||
samhost string
|
||||
samport string
|
||||
samopts string
|
||||
}
|
||||
|
||||
func (m Manager) Serve() error {
|
||||
|
@ -41,7 +44,7 @@ func (m Manager) DialI2P(ctx context.Context, addr string) (*sam3.SAMConn, error
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
m.conns = append(m.conns, conn.GenConn(newconn, m.datapath))
|
||||
m.conns = append(m.conns, conn.GenConn(newconn, m.datadir))
|
||||
log.Println("Generated destination for address:", i2paddr.Base32(), "at position", len(m.conns)-1)
|
||||
return m.conns[len(m.conns)-1].SAMConn, nil
|
||||
}
|
||||
|
@ -50,11 +53,16 @@ func (m Manager) Dial(ctx context.Context, network, addr string) (net.Conn, erro
|
|||
return m.DialI2P(ctx, addr)
|
||||
}
|
||||
|
||||
func NewManager() (*Manager, error) {
|
||||
return NewManagerFromOptions()
|
||||
func NewManager(samhost, samport, samopts, datadir string) (*Manager, error) {
|
||||
return NewManagerFromOptions(
|
||||
SetHost(samhost),
|
||||
SetPort(samport),
|
||||
SetSAMOpts(samopts),
|
||||
SetDataDir(datadir),
|
||||
)
|
||||
}
|
||||
|
||||
func NewManagerFromOptions() (*Manager, error) {
|
||||
func NewManagerFromOptions(opts ...func(*Manager) error) (*Manager, error) {
|
||||
var m Manager
|
||||
if r, err := resolver.NewResolver(); err == nil {
|
||||
m.Config = socks5.Config{
|
||||
|
|
|
@ -1 +1,48 @@
|
|||
package tunmanager
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
//Option is a Manager option
|
||||
type Option func(*Manager) error
|
||||
|
||||
//SetHost sets the host of the client's SAM bridge
|
||||
func SetHost(s string) func(*Manager) error {
|
||||
return func(c *Manager) error {
|
||||
c.samhost = s
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
//SetDataDir sets the directory to save per-site keys
|
||||
func SetDataDir(s string) func(*Manager) error {
|
||||
return func(c *Manager) error {
|
||||
c.datadir = s
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
//SetPort sets the port of the client's SAM bridge
|
||||
func SetPort(v string) func(*Manager) error {
|
||||
return func(c *Manager) error {
|
||||
port, err := strconv.Atoi(v)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Invalid port; non-number.")
|
||||
}
|
||||
if port < 65536 && port > -1 {
|
||||
c.samport = v
|
||||
return nil
|
||||
}
|
||||
return fmt.Errorf("Invalid port.")
|
||||
}
|
||||
}
|
||||
|
||||
//SetSAMOpts sets the SAM options
|
||||
func SetSAMOpts(s string) func(*Manager) error {
|
||||
return func(c *Manager) error {
|
||||
c.samopts = s
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue