start making Sammy into something kind of reusable

This commit is contained in:
idk
2020-09-13 16:41:21 -04:00
parent 3325b132b7
commit cfff13a45f

View File

@ -3,6 +3,8 @@ package sammy
import (
"github.com/eyedeekay/sam3"
"github.com/eyedeekay/sam3/i2pkeys"
"math/rand"
"os"
)
@ -16,33 +18,30 @@ func RandStringBytes() string {
}
func Sammy(opts map[string]string) (*sam3.StreamListener, error) {
sam := ""
keypath := ""
servertun := ""
if opts != nil {
if ok, _ := opts[`sam`]; !ok {
if _, ok := opts[`sam`]; !ok {
opts[`sam`] = "127.0.0.1:7656"
}
if ok, _ := opts[`keypath`]; !ok {
if _, ok := opts[`keypath`]; !ok {
opts[`keypath`] = "keys.i2pkeys"
}
if ok, _ := opts[`servertun`]; !ok {
opts[`servertun`] = "serv" + randStringBytes()
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()
opts[`servertun`] = "serv" + RandStringBytes()
}
if sam, err := sam3.NewSAM(opts[`sam`]); err != nil {
return nil, err
} else {
if file, err := os.Open(opt[`keypath`]); err == nil {
if file, err := os.Open(opts[`keypath`]); err == nil {
if keys, err := i2pkeys.LoadKeysIncompat(file); err != nil {
return nil, err
} else {
if stream, err := sam.NewStreamSession(opt[`servertun`], keys, sam3.Options_Fat); err != nil {
if stream, err := sam.NewStreamSession(opts[`servertun`], keys, sam3.Options_Fat); err != nil {
return nil, err
} else {
return stream.Listen()
@ -52,13 +51,13 @@ func Sammy(opts map[string]string) (*sam3.StreamListener, error) {
if keys, err := sam.NewKeys(); err != nil {
return nil, err
} else {
if file, err := os.Create(opt[`keypath`]); err != nil {
if file, err := os.Create(opts[`keypath`]); err != nil {
return nil, err
} else {
if err := i2pkeys.StoreKeysIncompat(keys, file); err != nil {
return nil, err
}
if stream, err := sam.NewStreamSession(opt[`servertun`], keys, sam3.Options_Fat); err != nil {
if stream, err := sam.NewStreamSession(opts[`servertun`], keys, sam3.Options_Fat); err != nil {
return nil, err
} else {
return stream.Listen()