From 395aa73b176b27118ce625a586c949eab855a3fc Mon Sep 17 00:00:00 2001 From: idk Date: Wed, 27 Nov 2019 20:13:15 -0500 Subject: [PATCH] Switch to using a tagged go-libp2p release --- Makefile | 19 +++++++++++--- cmd/reseed.go | 69 +++++++++++++++++++++++++++++++++++++++------------ go.mod | 1 + go.sum | 9 +++++++ 4 files changed, 78 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index 628033e..d70af7f 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,8 @@ USER_GH=eyedeekay GOOS?=$(shell uname -s | tr A-Z a-z) GOARCH?="amd64" +#ARG=-v -tags netgo -ldflags '-w -extldflags "-static"' + echo: @echo "type make version to do release $(APP) $(VERSION) $(GOOS) $(GOARCH) " @@ -18,9 +20,8 @@ edit: upload: binary tar gothub upload -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(APP) -t v$(VERSION) -f ../i2p-tools.tar.xz -n "i2p-tools.tar.xz" -build: - go build -v -tags netgo \ - -ldflags '-w -extldflags "-static"' -o i2p-tools-$(GOOS)-$(GOARCH) +build: gofmt + go build $(ARG) -o i2p-tools-$(GOOS)-$(GOARCH) clean: rm i2p-tools-* *.key *.i2pKeys *.crt *.crl *.pem tmp -rf @@ -62,4 +63,14 @@ unfork: make gofmt build-unfork gofmt: - gofmt -w main.go cmd/*.go reseed/*.go su3/*.go \ No newline at end of file + gofmt -w main.go cmd/*.go reseed/*.go su3/*.go + +try: + mkdir -p tmp && \ + cd tmp && \ + ../i2p-tools-$(GOOS)-$(GOARCH) reseed --signer=you@mail.i2p --netdb=/home/idk/.i2p/netDb --tlsHost=your-domain.tld --onion --p2p --i2p --littleboss=start + +stop: + mkdir -p tmp && \ + cd tmp && \ + ../i2p-tools-$(GOOS)-$(GOARCH) reseed --signer=you@mail.i2p --netdb=/home/idk/.i2p/netDb --tlsHost=your-domain.tld --onion --p2p --i2p --littleboss=stop \ No newline at end of file diff --git a/cmd/reseed.go b/cmd/reseed.go index 2de0204..a5e9b60 100644 --- a/cmd/reseed.go +++ b/cmd/reseed.go @@ -2,6 +2,7 @@ package cmd import ( "context" + //"flag" "fmt" "io/ioutil" "log" @@ -11,13 +12,13 @@ import ( "strconv" "time" - "crawshaw.io/littleboss" + //"crawshaw.io/littleboss" "github.com/MDrollette/i2p-tools/reseed" - "github.com/RTradeLtd/go-garlic-tcp-transport/common" "github.com/codegangsta/cli" "github.com/cretz/bine/tor" "github.com/cretz/bine/torutil" "github.com/cretz/bine/torutil/ed25519" + "github.com/eyedeekay/sam3" "github.com/eyedeekay/sam3/i2pkeys" "github.com/libp2p/go-libp2p" "github.com/libp2p/go-libp2p-core/host" @@ -124,25 +125,65 @@ func NewReseedCommand() cli.Command { Usage: "Use this SAM address to set up I2P connections for in-network reseed", }, cli.StringFlag{ - Name: "restart", + Name: "littleboss", Value: "start", - Usage: "Start in self-supervising mode", + Usage: "Self-Supervise this application", }, }, } } -func reseedMain(c *cli.Context) { - lb := littleboss.New("reseed") - restart := c.String("restart") - lb.Command("restart", &restart) - lb.Run(func(ctx context.Context) { - reseedAction(c) - }) +func CreateEepServiceKey(c *cli.Context) (i2pkeys.I2PKeys, error) { + sam, err := sam3.NewSAM(c.String("samaddr")) + if err != nil { + return i2pkeys.I2PKeys{}, err + } + defer sam.Close() + k, err := sam.NewKeys() + if err != nil { + return i2pkeys.I2PKeys{}, err + } + return k, err +} + +func LoadKeys(keysPath string, c *cli.Context) (i2pkeys.I2PKeys, error) { + if _, err := os.Stat(keysPath); os.IsNotExist(err) { + keys, err := CreateEepServiceKey(c) + if err != nil { + return i2pkeys.I2PKeys{}, err + } + file, err := os.Create(keysPath) + defer file.Close() + if err != nil { + return i2pkeys.I2PKeys{}, err + } + err = i2pkeys.StoreKeysIncompat(keys, file) + if err != nil { + return i2pkeys.I2PKeys{}, err + } + return keys, nil + } else if err == nil { + file, err := os.Open(keysPath) + defer file.Close() + if err != nil { + return i2pkeys.I2PKeys{}, err + } + keys, err := i2pkeys.LoadKeysIncompat(file) + if err != nil { + return i2pkeys.I2PKeys{}, err + } + return keys, nil + } else { + return i2pkeys.I2PKeys{}, err + } } func reseedAction(c *cli.Context) { // validate flags + if c.String("littleboss") != "start" { + log.Println("--littleboss", c.String("littleboss")) + return + } netdbDir := c.String("netdb") if netdbDir == "" { fmt.Println("--netdb is required") @@ -165,19 +206,17 @@ func reseedAction(c *cli.Context) { if c.Bool("i2p") { var err error - i2pkey, err = i2phelpers.LoadKeys("i2pkeys") + i2pkey, err = LoadKeys("reseed.i2pkeys", c) if err != nil { log.Fatalln(err) } i2pTlsHost = i2pkey.Addr().Base32() if i2pTlsHost != "" { - i2pTlsKey = c.String("tlsKey") // if no key is specified, default to the host.pem in the current dir if i2pTlsKey == "" { i2pTlsKey = i2pTlsHost + ".pem" } - i2pTlsCert = c.String("tlsCert") // if no certificate is specified, default to the host.crt in the current dir if i2pTlsCert == "" { i2pTlsCert = i2pTlsHost + ".crt" @@ -212,13 +251,11 @@ func reseedAction(c *cli.Context) { log.Fatalln(err.Error()) } if onionTlsHost != "" { - onionTlsKey = c.String("tlsKey") // if no key is specified, default to the host.pem in the current dir if onionTlsKey == "" { onionTlsKey = onionTlsHost + ".pem" } - onionTlsCert = c.String("tlsCert") // if no certificate is specified, default to the host.crt in the current dir if onionTlsCert == "" { onionTlsCert = onionTlsHost + ".crt" diff --git a/go.mod b/go.mod index 03bd4f3..7e860f0 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require ( github.com/gorilla/handlers v1.4.2 github.com/hashicorp/golang-lru v0.5.3 // indirect github.com/justinas/alice v0.0.0-20171023064455-03f45bd4b7da + github.com/libp2p/go-libp2p v0.4.2 github.com/stretchr/testify v1.4.0 // indirect github.com/throttled/throttled v2.2.4+incompatible golang.org/x/crypto v0.0.0-20191029031824-8986dd9e96cf // indirect diff --git a/go.sum b/go.sum index 946f10a..4b22819 100644 --- a/go.sum +++ b/go.sum @@ -139,6 +139,8 @@ github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6 github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/koron/go-ssdp v0.0.0-20180514024734-4a0ed625a78b h1:wxtKgYHEncAU00muMD06dzLiahtGM1eouRNOzVV7tdQ= github.com/koron/go-ssdp v0.0.0-20180514024734-4a0ed625a78b/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= +github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d h1:68u9r4wEvL3gYg2jvAOgROwZ3H+Y3hIDk4tbbmIjcYQ= +github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= @@ -162,6 +164,8 @@ github.com/libp2p/go-libp2p v0.2.0/go.mod h1:5nXHmf4Hs+NmkaMsmWcFJgUHTbYNpCfxr20 github.com/libp2p/go-libp2p v0.4.0/go.mod h1:9EsEIf9p2UDuwtPd0DwJsAl0qXVxgAnuDGRvHbfATfI= github.com/libp2p/go-libp2p v0.4.1 h1:QuJnMLC/O9OaASl5lkhMOllY2Gq2er7XRSN3WIxoxt8= github.com/libp2p/go-libp2p v0.4.1/go.mod h1:VMXJkVzSMNd6Ia8eSQGO0EQ1mqIsLuulJbkJYnfLvYQ= +github.com/libp2p/go-libp2p v0.4.2 h1:p0cthB0jDNHO4gH2HzS8/nAMMXbfUlFHs0jwZ4U+F2g= +github.com/libp2p/go-libp2p v0.4.2/go.mod h1:MNmgUxUw5pMsdOzMlT0EE7oKjRasl+WyVwM0IBlpKgQ= github.com/libp2p/go-libp2p-autonat v0.1.0 h1:aCWAu43Ri4nU0ZPO7NyLzUvvfqd0nE3dX0R/ZGYVgOU= github.com/libp2p/go-libp2p-autonat v0.1.0/go.mod h1:1tLf2yXxiE/oKGtDwPYWTSYG3PtvYlJmg7NeVtPRqH8= github.com/libp2p/go-libp2p-autonat v0.1.1 h1:WLBZcIRsjZlWdAZj9CiBSvU2wQXoUOiS1Zk1tM7DTJI= @@ -182,6 +186,7 @@ github.com/libp2p/go-libp2p-core v0.0.9/go.mod h1:0d9xmaYAVY5qmbp/fcgxHT3ZJsLjYe github.com/libp2p/go-libp2p-core v0.2.0/go.mod h1:X0eyB0Gy93v0DZtSYbEM7RnMChm9Uv3j7yRXjO77xSI= github.com/libp2p/go-libp2p-core v0.2.2/go.mod h1:8fcwTbsG2B+lTgRJ1ICZtiM5GWCWZVoVrLaDRvIRng0= github.com/libp2p/go-libp2p-core v0.2.3/go.mod h1:GqhyQqyIAPsxFYXHMjfXgMv03lxsvM0mFzuYA9Ib42A= +github.com/libp2p/go-libp2p-core v0.2.4 h1:Et6ykkTwI6PU44tr8qUF9k43vP0aduMNniShAbUJJw8= github.com/libp2p/go-libp2p-core v0.2.4/go.mod h1:STh4fdfa5vDYr0/SzYYeqnt+E6KfEV5VxfIrm0bcI0g= github.com/libp2p/go-libp2p-core v0.2.5 h1:iP1PIiIrlRrGbE1fYq2918yBc5NlCH3pFuIPSWU9hds= github.com/libp2p/go-libp2p-core v0.2.5/go.mod h1:6+5zJmKhsf7yHn1RbmYDu08qDUpIUxGdqHuEZckmZOA= @@ -203,6 +208,8 @@ github.com/libp2p/go-libp2p-mplex v0.2.1 h1:E1xaJBQnbSiTHGI1gaBKmKhu1TUKkErKJnE8 github.com/libp2p/go-libp2p-mplex v0.2.1/go.mod h1:SC99Rxs8Vuzrf/6WhmH41kNn13TiYdAWNYHrwImKLnE= github.com/libp2p/go-libp2p-nat v0.0.4 h1:+KXK324yaY701On8a0aGjTnw8467kW3ExKcqW2wwmyw= github.com/libp2p/go-libp2p-nat v0.0.4/go.mod h1:N9Js/zVtAXqaeT99cXgTV9e75KpnWCvVOiGzlcHmBbY= +github.com/libp2p/go-libp2p-nat v0.0.5 h1:/mH8pXFVKleflDL1YwqMg27W9GD8kjEx7NY0P6eGc98= +github.com/libp2p/go-libp2p-nat v0.0.5/go.mod h1:1qubaE5bTZMJE+E/uu2URroMbzdubFz1ChgiN79yKPE= github.com/libp2p/go-libp2p-netutil v0.1.0/go.mod h1:3Qv/aDqtMLTUyQeundkKsA+YCThNdbQD54k3TqjpbFU= github.com/libp2p/go-libp2p-peer v0.2.0/go.mod h1:RCffaCvUyW2CJmG2gAWVqwePwW7JMgxjsHm7+J5kjWY= github.com/libp2p/go-libp2p-peerstore v0.1.0/go.mod h1:2CeHkQsr8svp4fZ+Oi9ykN1HBb6u0MOvdJ7YIsmcwtY= @@ -242,6 +249,8 @@ github.com/libp2p/go-msgio v0.0.4 h1:agEFehY3zWJFUHK6SEMR7UYmk2z6kC3oeCM7ybLhguA github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= github.com/libp2p/go-nat v0.0.3 h1:l6fKV+p0Xa354EqQOQP+d8CivdLM4kl5GxC1hSc/UeI= github.com/libp2p/go-nat v0.0.3/go.mod h1:88nUEt0k0JD45Bk93NIwDqjlhiOwOoV36GchpcVc1yI= +github.com/libp2p/go-nat v0.0.4 h1:KbizNnq8YIf7+Hn7+VFL/xE0eDrkPru2zIO9NMwL8UQ= +github.com/libp2p/go-nat v0.0.4/go.mod h1:Nmw50VAvKuk38jUBcmNh6p9lUJLoODbJRvYAa/+KSDo= github.com/libp2p/go-openssl v0.0.2/go.mod h1:v8Zw2ijCSWBQi8Pq5GAixw6DbFfa9u6VIYDXnvOXkc0= github.com/libp2p/go-openssl v0.0.3/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= github.com/libp2p/go-reuseport v0.0.1 h1:7PhkfH73VXfPJYKQ6JwS5I/eVcoyYi9IMNGc6FWpFLw=