This is an automated email from the ASF dual-hosted git repository. cmorris pushed a commit to branch tendermint in repository https://gitbox.apache.org/repos/asf/incubator-milagro-dta.git
commit 7e811ee9389319b58ac94b02a3bd1242e858c5d7 Author: Christopher Morris <[email protected]> AuthorDate: Wed Oct 9 11:09:54 2019 +0100 Update fishhook --- go.sum | 9 ++ p | 4 +- pkg/endpoints/endpoints.go | 2 +- pkg/tendermint/cmd/fishhook.go | 111 ------------------- pkg/tendermint/fishhook/build | 2 + pkg/tendermint/{cmd => fishhook}/fishhook | Bin 24169060 -> 29288396 bytes pkg/tendermint/fishhook/main.go | 173 ++++++++++++++++++++++++++++++ pkg/tendermint/fishhook/run | 2 + 8 files changed, 189 insertions(+), 114 deletions(-) diff --git a/go.sum b/go.sum index 46b42dc..58723e7 100644 --- a/go.sum +++ b/go.sum @@ -61,6 +61,7 @@ github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3yg github.com/go-playground/universal-translator v0.16.0 h1:X++omBR/4cE2MNg91AoC3rmGrCjJ8eAeUP/K/EKx4DM= github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-test/deep v1.0.2 h1:onZX1rnHT3Wv6cqNgYyFOOlgVKJrksuCMCRvJStbMYw= github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-yaml/yaml v2.1.0+incompatible h1:RYi2hDdss1u4YE7GwixGzWwVo47T8UQwnTLB6vQiq+o= github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0= @@ -122,10 +123,14 @@ github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 h1:lYpkrQH5ajf0OXOcUbGjvZxxijuBwbbmlSxLiuofa+g= github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5 h1:l16XLUUJ34wIz+RIvLhSwGvLvKyy+W598b135bJN6mg= github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mr-tron/base58 v1.1.2 h1:ZEw4I2EgPKDJ2iEw0cNmLB3ROrEmkOtXIkaG7wZg+78= github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/multiformats/go-multihash v0.0.5 h1:1wxmCvTXAifAepIMyF39vZinRw5sbqjPs/UIi93+uik= github.com/multiformats/go-multihash v0.0.5/go.mod h1:lt/HCbqlQwlPBz7lv0sQCdtfcMtlJvakRUn/0Ual8po= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-proto-validators v0.1.0 h1:2Org0/cGKUUUDzoLSRSsGJDqyLWrb5lG57o5+QdRr8M= @@ -138,6 +143,7 @@ github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/9 github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 h1:J9b7z+QKAmPf4YLrFg6oQUotqHQeUNWwkvo7jZp1GLU= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= @@ -170,6 +176,7 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= @@ -181,6 +188,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stumble/gorocksdb v0.0.3/go.mod h1:v6IHdFBXk5DJ1K4FZ0xi+eY737quiiBxYtSWXadLybY= github.com/syndtr/goleveldb v1.0.1-0.20190318030020-c3a204f8e965 h1:1oFLiOyVl+W7bnBzGhf7BbIv9loSFQcieWWYIjLqcAw= @@ -269,6 +277,7 @@ gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/p b/p index 4d94421..320be46 100755 --- a/p +++ b/p @@ -1,6 +1,6 @@ #!/bin/bash -export ref=$(curl -s -X POST "127.0.0.1:5556/v1/order1" -H "accept: */*" -H "Content-Type: application/json" -d "{\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}") +export ref=$(curl -s -X POST "127.0.0.1:5556/v1/order" -H "accept: */*" -H "Content-Type: application/json" -d "{\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}") sleep 4 -curl -X POST "127.0.0.1:5556/v1/order/secret1" -H "accept: */*" -H "Content-Type: application/json" -d "{\"orderReference\":$ref,\"beneficiaryIDDocumentCID\":\"$1\"}" +curl -X POST "127.0.0.1:5556/v1/order/secret" -H "accept: */*" -H "Content-Type: application/json" -d "{\"orderReference\":$ref,\"beneficiaryIDDocumentCID\":\"$1\"}" diff --git a/pkg/endpoints/endpoints.go b/pkg/endpoints/endpoints.go index e046d83..1465c56 100644 --- a/pkg/endpoints/endpoints.go +++ b/pkg/endpoints/endpoints.go @@ -238,7 +238,7 @@ func MakeStatusEndpoint(m service.Service, log *logger.Logger, nodeType string) func validateRequest(req interface{}) error { validate := validator.New() - validate.RegisterAlias("hashID", "min=40,max=64") + validate.RegisterAlias("hashID", "min=0,max=64") if err := validate.Struct(req); err != nil { return errors.Wrap(transport.ErrInvalidRequest, err.Error()) } diff --git a/pkg/tendermint/cmd/fishhook.go b/pkg/tendermint/cmd/fishhook.go deleted file mode 100644 index b3344a1..0000000 --- a/pkg/tendermint/cmd/fishhook.go +++ /dev/null @@ -1,111 +0,0 @@ -package main - -import ( - "encoding/base64" - "encoding/hex" - "encoding/json" - "fmt" - "io/ioutil" - "log" - "net/http" - "os" - "time" - - "github.com/TylerBrock/colorjson" - "github.com/apache/incubator-milagro-dta/pkg/tendermint" - "github.com/urfave/cli" -) - -func main() { - app := cli.NewApp() - app.Name = "tmget" - app.Version = "0.1.0" - app.Compiled = time.Now() - app.Authors = []cli.Author{ - cli.Author{ - Name: "Chris Morris", - Email: "[email protected]", - }, - } - app.Copyright = "(c) 2019 Chris Morris" - app.UsageText = `tmget tag search [url] -eg. tmget tag.recipient=Nzw3127EaxPiiZahOH592sGhPnCPaYkzOSqEk 127.0.0.1:5556 - tmget tx Nzw3127EaxPiiZahOH592sGhPnCPaYkzOSqEk` - - app.Usage = `retrieve and parse a transaction in the Qredo DT-A Format from a Tendermint Blockchain -Note tags are case sensistive -Qredo DT-A uses: - tag.recipient - tag.senderid - tag.reference - tx - -` - - app.ArgsUsage = "tx" - - app.Action = func(c *cli.Context) error { - tag := c.Args().Get(0) - lookup := "'" + c.Args().Get(1) + "'" - - url := c.Args().Get(2) - //curl "localhost:26657/tx_search?query=\"tag.name='matts'\"&prove=true" - if url == "" { - url = "localhost:26657" - } - // if len(c.Args()) == 0 { - // print(app.UsageText) - // return nil - // } - - fullUrl := "http://" + url + "/tx_search?query=\"" + tag + "=" + lookup + "\"" - print(fullUrl) - - resp, err := http.Get(fullUrl) - if err != nil { - // handle error - } - defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) - - txResponse, err := tendermint.UnmarshalFetchTxResponse([]byte(body)) - - txs := txResponse.TResult.Txs - for r1, v := range txs { - for r2, v1 := range v.TxResult.Events { - for r3, v2 := range v1.Attributes { - newkey, _ := base64.StdEncoding.DecodeString(v2.Key) - txResponse.TResult.Txs[r1].TxResult.Events[r2].Attributes[r3].Key = string(newkey) - newval, _ := base64.StdEncoding.DecodeString(v2.Value) - txResponse.TResult.Txs[r1].TxResult.Events[r2].Attributes[r3].Value = string(newval) - - if string(newkey) == "key" { - txResponse.TResult.Txs[r1].TxResult.Events[r2].Attributes[r3].Value = hex.EncodeToString(newval) - } - } - } - } - - x, err := txResponse.Marshal() - - var obj map[string]interface{} - json.Unmarshal(x, &obj) - - //print(string(x)) - - // Make a custom formatter with indent set - f := colorjson.NewFormatter() - f.Indent = 4 - - // Marshall the Colorized JSON - s, _ := f.Marshal(obj) - fmt.Println(string(s)) - - return nil - } - - err := app.Run(os.Args) - if err != nil { - log.Fatal(err) - } -} diff --git a/pkg/tendermint/fishhook/build b/pkg/tendermint/fishhook/build new file mode 100755 index 0000000..f590499 --- /dev/null +++ b/pkg/tendermint/fishhook/build @@ -0,0 +1,2 @@ +go build -o fishhook main.go + diff --git a/pkg/tendermint/cmd/fishhook b/pkg/tendermint/fishhook/fishhook similarity index 67% rename from pkg/tendermint/cmd/fishhook rename to pkg/tendermint/fishhook/fishhook index 854a652..be3a244 100755 Binary files a/pkg/tendermint/cmd/fishhook and b/pkg/tendermint/fishhook/fishhook differ diff --git a/pkg/tendermint/fishhook/main.go b/pkg/tendermint/fishhook/main.go new file mode 100644 index 0000000..3f4dd4c --- /dev/null +++ b/pkg/tendermint/fishhook/main.go @@ -0,0 +1,173 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "log" + "os" + "path/filepath" + "strconv" + "time" + + "github.com/apache/incubator-milagro-dta/libs/documents" + "github.com/apache/incubator-milagro-dta/libs/keystore" + "github.com/apache/incubator-milagro-dta/pkg/api" + "github.com/apache/incubator-milagro-dta/pkg/config" + "github.com/apache/incubator-milagro-dta/pkg/identity" + "github.com/hokaccha/go-prettyjson" + tmclient "github.com/tendermint/tendermint/rpc/client" + tmtypes "github.com/tendermint/tendermint/types" + "github.com/urfave/cli" +) + +const ( + envMilagroHome = "MILAGRO_HOME" + keysFile = "keys" + + cmdInit = "init" + cmdDaemon = "daemon" +) + +func main() { + app := cli.NewApp() + app.Name = "tmget" + app.Version = "0.1.0" + app.Compiled = time.Now() + app.Authors = []cli.Author{ + cli.Author{ + Name: "Chris Morris", + Email: "[email protected]", + }, + } + app.Copyright = "(c) 2019 Chris Morris" + app.UsageText = `fishhook configdir nodeurl query skip +eg. fishhook /Users/john/.milagro 10.10,10,10:26657 "tag.recipient='Au1WipqVeTx9i2PV4UcCxmY6iQvA9RZXy88xJLRzafwc'" 3 + +configdir - the local directory where the DT-A configuration (eg. config.yaml, keys) are stored +nodeurl - the host:port of a member Node of the Tendermint Network +query - A query to filter the results by (enclosed query in double quotes and values in single quotes) +skip - number of matches to skip before showing match and terminating +` + app.Usage = `retrieve and parse a transaction in the Qredo DT-A Format from a Tendermint Blockchain +Note tags are case sensistive +` + + app.Action = func(c *cli.Context) error { + folder := c.Args().Get(0) + host := c.Args().Get(1) + query := c.Args().Get(2) + skip, err := strconv.Atoi(c.Args().Get(3)) + + if err != nil { + print("Invalid skip value\n") + os.Exit(1) + } + + if len(c.Args()) != 4 { + print(app.UsageText) + os.Exit(1) + return nil + } + + cfg, err := parseConfig(folder) + if err != nil { + print("Failed to open config") + os.Exit(1) + } + + keyStore, err := keystore.NewFileStore(filepath.Join(folder, keysFile)) + if err != nil { + print("Fail to open keystore") + os.Exit(1) + } + + keyseed, err := keyStore.Get("seed") + if err != nil { + print("Fail to retrieve keyseed") + os.Exit(1) + } + + _, sikeSK, err := identity.GenerateSIKEKeys(keyseed) + if err != nil { + print("Fail to retrieve sikeSK") + os.Exit(1) + } + blsPk, _, err := identity.GenerateBLSKeys(keyseed) + if err != nil { + print("Fail to retrieve blsSK") + os.Exit(1) + } + + //connect to Node + tmClient := tmclient.NewHTTP(fmt.Sprintf("tcp://%s", host), "/websocket") + if err := tmClient.Start(); err != nil { + print("Failed to open websocket") + os.Exit(1) + } + + out, err := tmClient.Subscribe(context.Background(), "", query, 1000) + if err != nil { + print("Failed to subscribe to node") + os.Exit(1) + } + + matchCount := 0 + for { + select { + case result := <-out: + matchCount++ + if matchCount != skip { + continue + } + + print("result") + tx := result.Data.(tmtypes.EventDataTx).Tx + nodeID := cfg.Node.NodeID + payload := &api.BlockChainTX{} + err := json.Unmarshal(tx, payload) + if err != nil { + print("Invalid Transaction received") + os.Exit(1) + } + + //dump + order := &documents.OrderDoc{} + err = documents.DecodeOrderDocument(payload.Payload, "", order, sikeSK, nodeID, blsPk) + + pp, _ := prettyjson.Marshal(order) + fmt.Println(string(pp)) + os.Exit(0) + } + } + } + + err := app.Run(os.Args) + if err != nil { + log.Fatal(err) + } +} + +func getEnv(name, defaultValue string) string { + v, ok := os.LookupEnv(name) + if !ok { + return defaultValue + } + + return v +} + +func parseConfig(folder string) (*config.Config, error) { + cfg, err := config.ParseConfig(folder) + if err != nil { + return nil, err + } + return cfg, nil +} + +//Use - helper to remove warnings +func Use(vals ...interface{}) { + for _, val := range vals { + _ = val + } +} diff --git a/pkg/tendermint/fishhook/run b/pkg/tendermint/fishhook/run new file mode 100755 index 0000000..1e44661 --- /dev/null +++ b/pkg/tendermint/fishhook/run @@ -0,0 +1,2 @@ +./fishhook /Users/chris/.milagro 34.246.173.153:26657 "tag.recipient='Au1WipqVeTx9i2PV4UcCxmY6iQvA9RZXy88xJLRzafwc'" 1 +
