diff --git a/conn/conn.go b/conn/conn.go new file mode 100644 index 0000000..e0ec2f8 --- /dev/null +++ b/conn/conn.go @@ -0,0 +1,23 @@ +package conn + +import ( + //"os" + "github.com/eyedeekay/sam3" +) + +type Conn struct { + *sam3.SAMConn + path string +} + +func (c Conn) SaveKeys() { + +} + +func NewConn(conn *sam3.SAMConn, path string) (*Conn, error) { + return GenConn(conn, path), nil +} + +func GenConn(conn *sam3.SAMConn, path string) *Conn { + return &Conn{SAMConn: conn, path: path} +} diff --git a/main.go b/main.go index bc9cae2..47866c0 100644 --- a/main.go +++ b/main.go @@ -3,7 +3,8 @@ package main import ( "flag" //"log" - "github.com/eyedeekay/eeproxy/socks" + "./socks" + //"github.com/eyedeekay/eeproxy/socks" "os" "os/signal" "strings" @@ -52,9 +53,9 @@ var ( "Target host(Host of service to forward to i2p)") targetPort = flag.String("p", "8081", "Target port(Port of service to forward to i2p)") - reduceIdle = flag.Bool("r", false, + reduceIdle = flag.Bool("r", true, "Reduce tunnel quantity when idle(true or false)") - closeIdle = flag.Bool("x", false, + closeIdle = flag.Bool("x", true, "Close tunnel idle(true or false)") targetDir = flag.String("d", "./tunnels/", "Directory to save tunnel configuration file in.") @@ -136,7 +137,7 @@ func main() { config.ReduceIdle = config.GetReduceOnIdle(*reduceIdle, true) config.ReduceIdleTime = config.GetReduceIdleTime(*reduceIdleTime, 600000) config.ReduceIdleQuantity = config.GetReduceIdleQuantity(*reduceIdleQuantity, 2) - config.CloseIdle = config.GetCloseOnIdle(*closeIdle, false) + config.CloseIdle = config.GetCloseOnIdle(*closeIdle, true) config.CloseIdleTime = config.GetCloseIdleTime(*closeIdleTime, 600000) config.KeyFilePath = config.GetKeyFile(*encryptKeyFiles, "") config.ClientDest = config.GetClientDest(*targetDest, "", "") diff --git a/socks/manager.go b/socks/manager.go index 668eaf9..7af693b 100644 --- a/socks/manager.go +++ b/socks/manager.go @@ -8,6 +8,7 @@ import ( ) import ( + "../conn" "github.com/eyedeekay/eeproxy/resolve" "github.com/eyedeekay/go-socks5" "github.com/eyedeekay/sam3" @@ -17,7 +18,8 @@ type Manager struct { resolver.Resolver socks5.Config sam3.StreamSession - conns []*sam3.SAMConn + conns []*conn.Conn + datapath string } func (m Manager) Serve() error { @@ -32,16 +34,16 @@ func (m Manager) DialI2P(ctx context.Context, addr string) (*sam3.SAMConn, error for i, c := range m.conns { if i2paddr.Base32() == c.RemoteAddr().(*sam3.I2PAddr).Base32() { log.Println("Found destination for address:", i2paddr.Base32(), "at position", i) - return c, nil + return c.SAMConn, nil } } newconn, err := m.StreamSession.DialI2P(i2paddr) if err != nil { return nil, err } - m.conns = append(m.conns, newconn) + m.conns = append(m.conns, conn.GenConn(newconn, m.datapath)) log.Println("Generated destination for address:", i2paddr.Base32(), "at position", len(m.conns)-1) - return m.conns[len(m.conns)-1], nil + return m.conns[len(m.conns)-1].SAMConn, nil } func (m Manager) Dial(ctx context.Context, network, addr string) (net.Conn, error) {