From 3325b132b7247de19b2579470e4c79aa3037a206 Mon Sep 17 00:00:00 2001 From: idk Date: Sun, 13 Sep 2020 16:37:09 -0400 Subject: [PATCH] start making Sammy into something kind of reusable --- main.go | 2 +- sammy/sammy.go | 40 ++++++++++++++++++++++++++++++++++------ samsocks | Bin 7732568 -> 7732568 bytes 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/main.go b/main.go index 812f74e..d772a63 100644 --- a/main.go +++ b/main.go @@ -17,7 +17,7 @@ func main() { // create a transport that uses SAM to dial TCP Connections conf := &socks5.Config{ - Dial: sam.DialContext, + Dial: sam.DialContext, Resolver: sam, } server, err := socks5.New(conf) diff --git a/sammy/sammy.go b/sammy/sammy.go index 13cee3f..f09fd31 100644 --- a/sammy/sammy.go +++ b/sammy/sammy.go @@ -6,15 +6,43 @@ import ( "os" ) -func Sammy() (*sam3.StreamListener, error) { - if sam, err := sam3.NewSAM("127.0.0.1:7656"); err != nil { +func RandStringBytes() string { + letterBytes := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + b := make([]byte, 4) + for i := range b { + b[i] = letterBytes[rand.Intn(len(letterBytes))] + } + return string(b) +} + +func Sammy(opts map[string]string) (*sam3.StreamListener, error) { + sam := "" + keypath := "" + servertun := "" + if opts != nil { + if ok, _ := opts[`sam`]; !ok { + opts[`sam`] = "127.0.0.1:7656" + } + if ok, _ := opts[`keypath`]; !ok { + opts[`keypath`] = "keys.i2pkeys" + } + if ok, _ := opts[`servertun`]; !ok { + opts[`servertun`] = "serv" + randStringBytes() + } + } else { + opts := make(map[string]string) + opts[`sam`] = "127.0.0.1:7656" + opts[`keypath`] = "keys.i2pkeys" + opts[`servertun`] = "serv" + randStringBytes() + } + if sam, err := sam3.NewSAM(opts[`sam`]); err != nil { return nil, err } else { - if file, err := os.Open("../keys.i2pkeys"); err == nil { + if file, err := os.Open(opt[`keypath`]); err == nil { if keys, err := i2pkeys.LoadKeysIncompat(file); err != nil { return nil, err } else { - if stream, err := sam.NewStreamSession("serverTun", keys, sam3.Options_Fat); err != nil { + if stream, err := sam.NewStreamSession(opt[`servertun`], keys, sam3.Options_Fat); err != nil { return nil, err } else { return stream.Listen() @@ -24,13 +52,13 @@ func Sammy() (*sam3.StreamListener, error) { if keys, err := sam.NewKeys(); err != nil { return nil, err } else { - if file, err := os.Create("../keys.i2pkeys"); err != nil { + if file, err := os.Create(opt[`keypath`]); err != nil { return nil, err } else { if err := i2pkeys.StoreKeysIncompat(keys, file); err != nil { return nil, err } - if stream, err := sam.NewStreamSession("serverTun", keys, sam3.Options_Fat); err != nil { + if stream, err := sam.NewStreamSession(opt[`servertun`], keys, sam3.Options_Fat); err != nil { return nil, err } else { return stream.Listen() diff --git a/samsocks b/samsocks index 88de5a4979433f7dc9749820452659b2eddf9dbc..7dc2aa65808943ad23347ee7b5d4b58961bb2626 100755 GIT binary patch delta 526 zcmWm5$vOf70KoB&?AzG)eb3g2ls$}nj8bW2Nu^{OZSs+;gR3|23U0o661{{MaPoKf z9e;)2Z&LxE?}AzN2BlmoswUYT=hxif~)lkHz#9j^I%@B%E z3=>LFiZYa=0+pyjHEK|cI{e>yG@ubpXhsWK(S~+(pc7r_Mh|+?hkguT5JMQo2u3l6 zahNfINlalHGq6C!EUcKrJZxBi9S$sF3Cmc)D%P+LCpNH&ElAkL4tBAJeH`ErGLE3& z7%sSR0uQ|K;S_$TI70yExWFZ@5X3b?2qS_UL=nR+;<$r`1a#aZi4@YvAd3g&z6{~< GvZo$rTu0%KC2CRG* z@AA$6e%tc+d{^wQ7f(cJ(wEh8Dc#H@gwz7gm?8Zkw<=U2)5*B0dyR1L)l%Lpr2vJn zp$Nq&K`F{mjtW$w3e~8=|E)zG>d}BkG@%(SXhj>^(Sc5Mp&LEuMIZVxfI$pl7$X>k z9b*{B1RR)z6H{BpiEEfh;Rb2kB7-dMaE}M%@Q9}`OL_kI F`2#KA%ZLB~