From 2d79b550f9e9109d60bc782f06f6697231895e1a Mon Sep 17 00:00:00 2001 From: janani anbarasan Date: Wed, 22 Jun 2022 17:20:03 -0500 Subject: [PATCH 01/11] integrate cosmos keys sub command --- cmd/git-gitopia-keys/main.go | 32 ++++++++++++++++++++++++++++++++ go.mod | 1 + 2 files changed, 33 insertions(+) create mode 100644 cmd/git-gitopia-keys/main.go diff --git a/cmd/git-gitopia-keys/main.go b/cmd/git-gitopia-keys/main.go new file mode 100644 index 0000000..0a266d4 --- /dev/null +++ b/cmd/git-gitopia-keys/main.go @@ -0,0 +1,32 @@ +package main + +import ( + "context" + "fmt" + "os" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/keys" + "github.com/spf13/cobra" +) + +func main(){ + ctx := context.Background() + ctx = context.WithValue(ctx, client.ClientContextKey, &client.Context{}) + cmd := &cobra.Command{ + Use: "git-gitopia", + CompletionOptions: cobra.CompletionOptions{DisableDefaultCmd: true}, + PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { + initClientCtx := client.Context{}. + WithInput(os.Stdin) + return client.SetCmdClientContext(cmd, initClientCtx) + }, + } + cmd.AddCommand(keys.Commands(".")) + err := cmd.ExecuteContext(ctx) + if err != nil { + fmt.Fprintf(os.Stderr, err.Error()) + return + } + fmt.Fprintf(os.Stdout, "Done\n") +} \ No newline at end of file diff --git a/go.mod b/go.mod index ac6a601..78fbc6d 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( github.com/cosmos/cosmos-sdk v0.45.0 github.com/gitopia/gitopia v0.12.1-0.20220302171918-ccf7c17f9817 github.com/go-git/go-git/v5 v5.4.2 + github.com/spf13/cobra v1.2.1 // indirect google.golang.org/grpc v1.43.0 ) From 4ac65473d1882b987bb29e4e922ba4ec1b4fbc3c Mon Sep 17 00:00:00 2001 From: janani anbarasan Date: Thu, 23 Jun 2022 23:25:01 -0500 Subject: [PATCH 02/11] read gitopia wallet info from os keyring --- Makefile | 4 + cmd/git-gitopia-keys/main.go | 2 +- cmd/git-gitopia-keys/readme.md | 19 ++++ cmd/git-remote-gitopia/gitopia.go | 146 +++++++++++++++++++++++++----- config/config_dev.go | 2 + config/config_prod.go | 1 + config/config_testing.go | 1 + go.mod | 3 +- go.sum | 6 ++ 9 files changed, 157 insertions(+), 27 deletions(-) create mode 100644 cmd/git-gitopia-keys/readme.md diff --git a/Makefile b/Makefile index 2197bc3..7b1d138 100644 --- a/Makefile +++ b/Makefile @@ -6,10 +6,14 @@ all: install build: @go build -tags $(GITOPIA_ENV) -o build/ ./cmd/git-remote-gitopia + @go build -tags $(GITOPIA_ENV) -o build/git-gitopia ./cmd/git-gitopia-keys install: go.sum @echo "--> Installing git-remote-gitopia" @go install -tags $(GITOPIA_ENV) -mod=readonly ./cmd/git-remote-gitopia + @go install -tags $(GITOPIA_ENV) -mod=readonly ./cmd/git-gitopia-keys + mv $(GOBIN)/git-gitopia-keys $(GOBIN)/git-gitopia + go.sum: go.mod @echo "--> Ensure dependencies have not been modified" diff --git a/cmd/git-gitopia-keys/main.go b/cmd/git-gitopia-keys/main.go index 0a266d4..d96534f 100644 --- a/cmd/git-gitopia-keys/main.go +++ b/cmd/git-gitopia-keys/main.go @@ -14,7 +14,7 @@ func main(){ ctx := context.Background() ctx = context.WithValue(ctx, client.ClientContextKey, &client.Context{}) cmd := &cobra.Command{ - Use: "git-gitopia", + Use: "gitopia", CompletionOptions: cobra.CompletionOptions{DisableDefaultCmd: true}, PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { initClientCtx := client.Context{}. diff --git a/cmd/git-gitopia-keys/readme.md b/cmd/git-gitopia-keys/readme.md new file mode 100644 index 0000000..fa88182 --- /dev/null +++ b/cmd/git-gitopia-keys/readme.md @@ -0,0 +1,19 @@ +# gitopia keys +gitopia subcommand for git for mananging gitopiad keys + +## installation +``` +make install +``` + +## Usage +use cosmos keys subcommand to manage keys +ex: import key +``` +git gitopia keys import +``` + +## configure key +``` +git config --global gitopia.key +``` \ No newline at end of file diff --git a/cmd/git-remote-gitopia/gitopia.go b/cmd/git-remote-gitopia/gitopia.go index 638c84f..6952d83 100644 --- a/cmd/git-remote-gitopia/gitopia.go +++ b/cmd/git-remote-gitopia/gitopia.go @@ -3,6 +3,7 @@ package main import ( "context" "encoding/json" + "errors" "fmt" "os" "strconv" @@ -10,11 +11,14 @@ import ( "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" "github.com/cosmos/cosmos-sdk/crypto/hd" + "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/gitopia/git-remote-gitopia/config" core "github.com/gitopia/git-remote-gitopia/core" gitopiaTypes "github.com/gitopia/gitopia/x/gitopia/types" "github.com/gitopia/gitopia/x/gitopia/utils" + "github.com/tendermint/starport/starport/pkg/cosmosaccount" + "github.com/tendermint/starport/starport/pkg/cosmosclient" // "github.com/gitopia/gitopia/x/gitopia/utils" "github.com/go-git/go-git/v5" @@ -24,10 +28,12 @@ import ( ) const ( - AccountAddressPrefix = "gitopia" - saveToArweaveURL = "http://35.200.147.237:5000/save" - branchPrefix = "refs/heads/" - tagPrefix = "refs/tags/" + AccountAddressPrefix = "gitopia" + gitopiaConfigSection = "gitopia" + gitopiaConfigKeyOption = "key" + saveToArweaveURL = "http://35.200.147.237:5000/save" + branchPrefix = "refs/heads/" + tagPrefix = "refs/tags/" ) var ( @@ -49,6 +55,28 @@ type GitopiaWallet struct { Accounts []Account `json:"accounts"` } +func (w *GitopiaWallet) walletAddress() (string, error) { + privKey, err := w.privKey() + if err != nil { + return "", err + } + walletAddress := sdk.AccAddress(privKey.PubKey().Address()) + + return walletAddress.String(), nil +} + +func (w *GitopiaWallet) privKey() (types.PrivKey, error) { + // Generate private key + hdPath := w.HDpath + strconv.Itoa(w.PathIncrement) + derivedPriv, err := hd.Secp256k1.Derive()(w.Mnemonic, "", hdPath) + if err != nil { + return nil, err + } + + privKey := hd.Secp256k1.Generate()(derivedPriv) + return privKey, nil +} + type SaveToArweavePostBody struct { RepositoryID uint64 `json:"repository_id"` RemoteRefName string `json:"remote_ref_name"` @@ -66,6 +94,10 @@ type GitopiaHandler struct { remoteRepository gitopiaTypes.Repository didPush bool + + gWallet *GitopiaWallet + key string + cc cosmosclient.Client } func (h *GitopiaHandler) Initialize(remote *core.Remote) error { @@ -100,9 +132,19 @@ func (h *GitopiaHandler) Initialize(remote *core.Remote) error { h.remoteRepository = *res.Repository - config := sdk.GetConfig() - config.SetBech32PrefixForAccount(AccountAddressPrefix, AccountPubKeyPrefix) - config.Seal() + conf := sdk.GetConfig() + conf.SetBech32PrefixForAccount(AccountAddressPrefix, AccountPubKeyPrefix) + conf.Seal() + + h.cc, err = cosmosclient.New(context.Background(), + cosmosclient.WithNodeAddress(config.TmAddr), + //cosmosclient.WithKeyringServiceName("cosmos"), // not suported on macos + cosmosclient.WithKeyringBackend(cosmosaccount.KeyringOS), + cosmosclient.WithAddressPrefix(AccountAddressPrefix), + ) + if err != nil { + return err + } return nil } @@ -162,7 +204,7 @@ func (h *GitopiaHandler) Fetch(remote *core.Remote, sha, ref string) error { return nil } -func (h *GitopiaHandler) Push(remote *core.Remote, refsToPush []core.RefToPush) (*[]string, error) { +func (h *GitopiaHandler) initGitopiaWallet() error { var gitopiaWallet GitopiaWallet var buffer []byte h.didPush = true @@ -175,33 +217,72 @@ func (h *GitopiaHandler) Push(remote *core.Remote, refsToPush []core.RefToPush) } else { gitopiaWalletPath := os.Getenv("GITOPIA_WALLET") if gitopiaWalletPath == "" { - return nil, fmt.Errorf("fatal: GITOPIA_WALLET environment variable is not set") + return fmt.Errorf("fatal: GITOPIA_WALLET environment variable is not set") } var err error buffer, err = os.ReadFile(gitopiaWalletPath) if err != nil { - return nil, fmt.Errorf("fatal: error reading gitopia wallet") + return fmt.Errorf("fatal: error reading gitopia wallet") } } err := json.Unmarshal(buffer, &gitopiaWallet) if err != nil { - return nil, fmt.Errorf("fatal: error decoding wallet file") + return fmt.Errorf("fatal: error decoding wallet file") } - // Generate private key - hdPath := gitopiaWallet.HDpath + strconv.Itoa(gitopiaWallet.PathIncrement) - derivedPriv, err := hd.Secp256k1.Derive()(gitopiaWallet.Mnemonic, "", hdPath) + h.gWallet = &gitopiaWallet + return nil +} + +func (h *GitopiaHandler) initGitopiaKey() error { + conf, err := goGitConfig.LoadConfig(goGitConfig.GlobalScope) if err != nil { - return nil, err + return err } + if conf.Raw.HasSection(gitopiaConfigSection) && + conf.Raw.Section(gitopiaConfigSection).HasOption(gitopiaConfigKeyOption) { + h.key = conf.Raw.Section(gitopiaConfigSection).Option(gitopiaConfigKeyOption) + } else { + return errors.New("gitopia key not configured") + } + return nil +} - privKey := hd.Secp256k1.Generate()(derivedPriv) - walletAddress := sdk.AccAddress(privKey.PubKey().Address()) +func (h *GitopiaHandler) Push(remote *core.Remote, refsToPush []core.RefToPush) (*[]string, error) { + if h.gWallet == nil && h.key == "" { + err := h.initGitopiaKey() + if err != nil { + err := h.initGitopiaWallet() + if err != nil { + return nil, err + } + } + } - havePushPermission, err := h.havePushPermission(walletAddress.String()) + walletAddress := "" + if h.key != "" { + wa, err := h.cc.Address(h.key) + if err != nil { + return nil, err + } + walletAddress = wa.String() + } else if h.gWallet != nil { + wa, err := h.gWallet.walletAddress() + if err != nil { + return nil, err + } + walletAddress = wa + if err != nil { + return nil, err + } + } else { + return nil, errors.New("gitopia key or wallet not set") + } + + havePushPermission, err := h.havePushPermission(walletAddress) if err != nil { return nil, err } @@ -324,21 +405,36 @@ func (h *GitopiaHandler) Push(remote *core.Remote, refsToPush []core.RefToPush) } if len(setBranches) > 0 { - msg = append(msg, gitopiaTypes.NewMsgMultiSetRepositoryBranch(walletAddress.String(), h.remoteRepository.Id, setBranches)) + msg = append(msg, gitopiaTypes.NewMsgMultiSetRepositoryBranch(walletAddress, h.remoteRepository.Id, setBranches)) } if len(setTags) > 0 { - msg = append(msg, gitopiaTypes.NewMsgMultiSetRepositoryTag(walletAddress.String(), h.remoteRepository.Id, setTags)) + msg = append(msg, gitopiaTypes.NewMsgMultiSetRepositoryTag(walletAddress, h.remoteRepository.Id, setTags)) } if len(deleteBranches) > 0 { - msg = append(msg, gitopiaTypes.NewMsgMultiDeleteBranch(walletAddress.String(), h.remoteRepository.Id, deleteBranches)) + msg = append(msg, gitopiaTypes.NewMsgMultiDeleteBranch(walletAddress, h.remoteRepository.Id, deleteBranches)) } if len(deleteTags) > 0 { - msg = append(msg, gitopiaTypes.NewMsgMultiDeleteTag(walletAddress.String(), h.remoteRepository.Id, deleteTags)) + msg = append(msg, gitopiaTypes.NewMsgMultiDeleteTag(walletAddress, h.remoteRepository.Id, deleteTags)) } - err = signAndBroadcastTx(h.grpcConn, walletAddress.String(), h.chainId, privKey, msg) - if err != nil { - return nil, err + if h.key != "" { + txResp, err := h.cc.BroadcastTx(h.key, msg...) + if err != nil { + return nil, err + } + if txResp.TxResponse.Code != 0 { + return nil, err + } + + } else { + privKey, err := h.gWallet.privKey() + if err != nil { + return nil, err + } + err = signAndBroadcastTx(h.grpcConn, walletAddress, h.chainId, privKey, msg) + if err != nil { + return nil, err + } } _ = prevRemoteRefSha diff --git a/config/config_dev.go b/config/config_dev.go index 402f486..8f518c8 100644 --- a/config/config_dev.go +++ b/config/config_dev.go @@ -1,3 +1,4 @@ +//go:build dev // +build dev package config @@ -5,4 +6,5 @@ package config const ( GRPCHost = "34.93.81.34:9090" GitServerHost = "http://35.200.147.237:5000/" + TmAddr = "http://localhost:26657" ) diff --git a/config/config_prod.go b/config/config_prod.go index ec49d82..637b422 100644 --- a/config/config_prod.go +++ b/config/config_prod.go @@ -5,4 +5,5 @@ package config const ( GRPCHost = "34.93.81.34:9090" GitServerHost = "http://35.200.147.237:5000/" + TmAddr = "http://34.93.81.34:26657" ) diff --git a/config/config_testing.go b/config/config_testing.go index d8dd7b8..e95cac2 100644 --- a/config/config_testing.go +++ b/config/config_testing.go @@ -5,4 +5,5 @@ package config const ( GRPCHost = "localhost:9090" GitServerHost = "http://localhost:5001/" + TmAddr = "http://localhost:26657" ) diff --git a/go.mod b/go.mod index 78fbc6d..7398ec3 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,8 @@ require ( github.com/cosmos/cosmos-sdk v0.45.0 github.com/gitopia/gitopia v0.12.1-0.20220302171918-ccf7c17f9817 github.com/go-git/go-git/v5 v5.4.2 - github.com/spf13/cobra v1.2.1 // indirect + github.com/spf13/cobra v1.2.1 + github.com/tendermint/starport v0.19.2 google.golang.org/grpc v1.43.0 ) diff --git a/go.sum b/go.sum index 068099f..cee3db5 100644 --- a/go.sum +++ b/go.sum @@ -196,6 +196,7 @@ github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJm github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= @@ -228,6 +229,7 @@ github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0Bsq github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/calmh/randomart v1.1.0/go.mod h1:DQUbPVyP+7PAs21w/AnfMKG5NioxS3TbZ2F9MSK/jFM= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -509,6 +511,7 @@ github.com/fzipp/gocyclo v0.3.1/go.mod h1:DJHO6AUmbdqj2ET4Z9iArSuwWgYDRryYt2wASx github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= @@ -1384,6 +1387,7 @@ github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2l github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= github.com/tendermint/spm v0.1.8/go.mod h1:iHgfQ5YOI6ONc9E7ugGQolVdfSMHpeXfZ/OpXuN/42Q= github.com/tendermint/spn v0.1.1-0.20211210094128-4ca78a240c57/go.mod h1:p4BO8YC6kOKSKqMfySqaLHfwBmuPE/QcLwnnVhh7H9M= +github.com/tendermint/starport v0.19.2 h1:pRN0x/GyI+gQDO0rY5KtJnvKaZL/rN1UsoofmnIbXV4= github.com/tendermint/starport v0.19.2/go.mod h1:anz2bi+YpoEqPlTSDo0S6Qc0EEZVxPGk8bViwcr1siM= github.com/tendermint/tendermint v0.34.0-rc4/go.mod h1:yotsojf2C1QBOw4dZrTcxbyxmPUrT4hNuOQWX9XUwB4= github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX6mjJTgbLHTwi17VDVg= @@ -1575,6 +1579,7 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1661,6 +1666,7 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= From 0c274db6023d53b984528345ba57a05005871353 Mon Sep 17 00:00:00 2001 From: janani anbarasan Date: Fri, 24 Jun 2022 21:06:23 -0500 Subject: [PATCH 03/11] add fee for sending txn to the chain --- cmd/git-gitopia-keys/readme.md | 2 +- cmd/git-remote-gitopia/gitopia.go | 6 +++++- config/config_dev.go | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/cmd/git-gitopia-keys/readme.md b/cmd/git-gitopia-keys/readme.md index fa88182..e9e27a7 100644 --- a/cmd/git-gitopia-keys/readme.md +++ b/cmd/git-gitopia-keys/readme.md @@ -1,5 +1,5 @@ # gitopia keys -gitopia subcommand for git for mananging gitopiad keys +git subcommand for managing gitopiad keys ## installation ``` diff --git a/cmd/git-remote-gitopia/gitopia.go b/cmd/git-remote-gitopia/gitopia.go index 6952d83..f7ee065 100644 --- a/cmd/git-remote-gitopia/gitopia.go +++ b/cmd/git-remote-gitopia/gitopia.go @@ -34,6 +34,7 @@ const ( saveToArweaveURL = "http://35.200.147.237:5000/save" branchPrefix = "refs/heads/" tagPrefix = "refs/tags/" + defaultFees = "200utlore" ) var ( @@ -134,7 +135,9 @@ func (h *GitopiaHandler) Initialize(remote *core.Remote) error { conf := sdk.GetConfig() conf.SetBech32PrefixForAccount(AccountAddressPrefix, AccountPubKeyPrefix) - conf.Seal() + // cannot seal the config + // cosmos client sets address prefix for each broadcasttx API call. probably a bug + // conf.Seal() h.cc, err = cosmosclient.New(context.Background(), cosmosclient.WithNodeAddress(config.TmAddr), @@ -145,6 +148,7 @@ func (h *GitopiaHandler) Initialize(remote *core.Remote) error { if err != nil { return err } + h.cc.Factory = h.cc.Factory.WithFees(defaultFees) return nil } diff --git a/config/config_dev.go b/config/config_dev.go index 8f518c8..c2ad0bb 100644 --- a/config/config_dev.go +++ b/config/config_dev.go @@ -4,7 +4,7 @@ package config const ( - GRPCHost = "34.93.81.34:9090" - GitServerHost = "http://35.200.147.237:5000/" + GRPCHost = "localhost:9090" + GitServerHost = "http://localhost:5001/" TmAddr = "http://localhost:26657" ) From 075c6302d6c82af5b48c39d099a7e68446d77121 Mon Sep 17 00:00:00 2001 From: janani anbarasan Date: Fri, 24 Jun 2022 21:06:23 -0500 Subject: [PATCH 04/11] add fee for sending txn to the chain --- cmd/git-remote-gitopia/gitopia.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/cmd/git-remote-gitopia/gitopia.go b/cmd/git-remote-gitopia/gitopia.go index f7ee065..1a17673 100644 --- a/cmd/git-remote-gitopia/gitopia.go +++ b/cmd/git-remote-gitopia/gitopia.go @@ -279,9 +279,6 @@ func (h *GitopiaHandler) Push(remote *core.Remote, refsToPush []core.RefToPush) return nil, err } walletAddress = wa - if err != nil { - return nil, err - } } else { return nil, errors.New("gitopia key or wallet not set") } From 5bdc57cb1ecd1f560e546d3c0474c439289258f4 Mon Sep 17 00:00:00 2001 From: janani anbarasan Date: Mon, 27 Jun 2022 13:51:56 -0500 Subject: [PATCH 05/11] merge master into ja --- .DS_Store | Bin 0 -> 6148 bytes Makefile | 102 ++++++++++++++++--- cmd/git-remote-gitopia/gitopia.go | 137 +++++++++++++++---------- cmd/git-remote-gitopia/util.go | 159 +++++++++++++++++++++++++++--- config/config_dev.go | 6 +- config/config_prod.go | 7 +- go.mod | 11 ++- go.sum | 91 ++++++++++++++--- 8 files changed, 410 insertions(+), 103 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..efcf831d70007c665a7315266b67a205bfd4ff56 GIT binary patch literal 6148 zcmeHK&x_MQ6n@iYyQ!s6#or(V^jOw*p|C1Qto7i*ixEAj)TW8uut}ygtv!@NkBVon z{sDsM$%|M21^q+3i3fdeW)>&ut~bS%c`)-$=6!GS^38On0|2Z$3)%n;0I;zTTF0z>zx9uIwY?#IkD;&uKFsjFF$A|`K2)RARzxFj{SZb(o$1fBv0{Gk z$8nTRTdgmwRJJxMoA#z%vmblAeC|yL(^=LXOditHJ-!Ze&h6F(P}!KE6b*{Xm{G%O=oAPvs_l~Qx`8^ zyW8K3laxOf83V%|QCMB!KD@w&_T{?f^;d7^d9SW|?fCiY=cMXde8PX}elSB%w|q-wxqsxPFrSxFz}$Jy#p9s7!hD5p~$C@jaZ$pwbh9O z97$6v)UF-L>`l@}0i(d5RDkve2MeLAa3xV}9axDg0HTH6!mv#TIK?;$U4<)&=s{yL z6j6pUb;V#Z9Qz%`a}};6%5Y%n^1;-bnYy7c@pc^F5p-a#L{l3Di~@ND%JQ*6=l`w4 z@BjHA^JEk-3j9|JFstYFy7)=zY+d^}I%^#)Pq2^?ZzWNLV5N>@(V(OFEEZwtbEtvn VDqKm#9yIeuK*(S!qrhKP;3td!;)(zO literal 0 HcmV?d00001 diff --git a/Makefile b/Makefile index 7b1d138..6087483 100644 --- a/Makefile +++ b/Makefile @@ -1,20 +1,98 @@ -GITOPIA_ENV ?= testing +GITOPIA_ENV ?= prod +LEDGER_ENABLED ?= true -all: install +build_tags = netgo +ifeq ($(LEDGER_ENABLED),true) + ifeq ($(OS),Windows_NT) + GCCEXE = $(shell where gcc.exe 2> NUL) + ifeq ($(GCCEXE),) + $(error gcc.exe not installed for ledger support, please install or set LEDGER_ENABLED=false) + else + build_tags += ledger + endif + else + UNAME_S = $(shell uname -s) + ifeq ($(UNAME_S),OpenBSD) + $(warning OpenBSD detected, disabling ledger support (https://github.com/cosmos/cosmos-sdk/issues/1988)) + else + GCC = $(shell command -v gcc 2> /dev/null) + ifeq ($(GCC),) + $(error gcc not installed for ledger support, please install or set LEDGER_ENABLED=false) + else + build_tags += ledger + endif + endif + endif +endif + +build_tags += $(BUILD_TAGS) +build_tags := $(strip $(build_tags)) +BUILD_FLAGS := -tags "$(build_tags) $(GITOPIA_ENV)" + +appname := git-remote-gitopia +version := 0.4.2 + +build = GOOS=$(1) GOARCH=$(2) go build $(BUILD_FLAGS) -o build/$(appname)$(3) ./cmd/git-remote-gitopia && \ + GOOS=$(1) GOARCH=$(2) go build $(BUILD_FLAGS) -o build/git-gitopia$(3) ./cmd/git-gitopia-keys +tar = cd build && tar -cvzf $(appname)_$(version)_$(1)_$(2).tar.gz $(appname)$(3) git-gitopia$(3) \ + && rm $(appname)$(3) && rm git-gitopia$(3) +zip = cd build && zip $(appname)_$(version)_$(1)_$(2).zip $(appname)$(3) && rm $(appname)$(3) && \ + zip $(appname)_$(version)_$(1)_$(2).zip git-gitopia$(3) && rm git-gitopia$(3) .PHONY: build -build: - @go build -tags $(GITOPIA_ENV) -o build/ ./cmd/git-remote-gitopia - @go build -tags $(GITOPIA_ENV) -o build/git-gitopia ./cmd/git-gitopia-keys +all: windows darwin linux -install: go.sum - @echo "--> Installing git-remote-gitopia" - @go install -tags $(GITOPIA_ENV) -mod=readonly ./cmd/git-remote-gitopia - @go install -tags $(GITOPIA_ENV) -mod=readonly ./cmd/git-gitopia-keys - mv $(GOBIN)/git-gitopia-keys $(GOBIN)/git-gitopia +clean: + rm -rf build/ + +##### LINUX BUILDS ##### +linux: build/$(appname)_$(version)_linux_arm.tar.gz build/$(appname)_$(version)_linux_arm64.tar.gz build/$(appname)_$(version)_linux_386.tar.gz build/$(appname)_$(version)_linux_amd64.tar.gz + +build/$(appname)_$(version)_linux_386.tar.gz: + $(call build,linux,386,) + $(call tar,linux,386) + +build/$(appname)_$(version)_linux_amd64.tar.gz: + $(call build,linux,amd64,) + $(call tar,linux,amd64) + +build/$(appname)_$(version)_linux_arm.tar.gz: + $(call build,linux,arm,) + $(call tar,linux,arm) +build/$(appname)_$(version)_linux_arm64.tar.gz: + $(call build,linux,arm64,) + $(call tar,linux,arm64) + +##### DARWIN (MAC) BUILDS ##### +darwin: build/$(appname)_$(version)_darwin_amd64.tar.gz build/$(appname)_$(version)_darwin_arm64.tar.gz + +build/$(appname)_$(version)_darwin_arm64.tar.gz: + $(call build,darwin,arm64,) + $(call tar,darwin,arm64) + +build/$(appname)_$(version)_darwin_amd64.tar.gz: + $(call build,darwin,amd64,) + $(call tar,darwin,amd64) + +##### WINDOWS BUILDS ##### +windows: build/$(appname)_$(version)_windows_386.zip build/$(appname)_$(version)_windows_amd64.zip + +build/$(appname)_$(version)_windows_386.zip: + $(call build,windows,386,.exe) + $(call zip,windows,386,.exe) + +build/$(appname)_$(version)_windows_amd64.zip: + $(call build,windows,amd64,.exe) + $(call zip,windows,amd64,.exe) + +install: go.sum + @echo "--> Installing git-remote-gitopia" + @go install -mod=readonly $(BUILD_FLAGS) ./cmd/git-remote-gitopia + @go install -mod=readonly $(BUILD_FLAGS) ./cmd/git-gitopia-keys + mv $(GOBIN)/git-gitopia-keys $(GOBIN)/git-gitopia go.sum: go.mod - @echo "--> Ensure dependencies have not been modified" - GO111MODULE=on go mod verify + @echo "--> Ensure dependencies have not been modified" + GO111MODULE=on go mod verify \ No newline at end of file diff --git a/cmd/git-remote-gitopia/gitopia.go b/cmd/git-remote-gitopia/gitopia.go index 1a17673..44277b8 100644 --- a/cmd/git-remote-gitopia/gitopia.go +++ b/cmd/git-remote-gitopia/gitopia.go @@ -3,7 +3,6 @@ package main import ( "context" "encoding/json" - "errors" "fmt" "os" "strconv" @@ -11,12 +10,14 @@ import ( "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" "github.com/cosmos/cosmos-sdk/crypto/hd" - "github.com/cosmos/cosmos-sdk/crypto/types" + "github.com/cosmos/cosmos-sdk/crypto/ledger" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/gitopia/git-remote-gitopia/config" core "github.com/gitopia/git-remote-gitopia/core" gitopiaTypes "github.com/gitopia/gitopia/x/gitopia/types" "github.com/gitopia/gitopia/x/gitopia/utils" + "github.com/pkg/errors" "github.com/tendermint/starport/starport/pkg/cosmosaccount" "github.com/tendermint/starport/starport/pkg/cosmosclient" @@ -25,6 +26,7 @@ import ( goGitConfig "github.com/go-git/go-git/v5/config" "github.com/go-git/go-git/v5/plumbing" "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" ) const ( @@ -66,7 +68,7 @@ func (w *GitopiaWallet) walletAddress() (string, error) { return walletAddress.String(), nil } -func (w *GitopiaWallet) privKey() (types.PrivKey, error) { +func (w *GitopiaWallet) privKey() (cryptotypes.PrivKey, error) { // Generate private key hdPath := w.HDpath + strconv.Itoa(w.PathIncrement) derivedPriv, err := hd.Secp256k1.Derive()(w.Mnemonic, "", hdPath) @@ -85,6 +87,16 @@ type SaveToArweavePostBody struct { PrevRemoteRefSha string `json:"prev_remote_ref_sha"` } +type secretType int + +const ( + UNKNOWN secretType = iota + ENV_VAR + LEDGER + OS_KEYRING + GITHIB_SEC +) + type GitopiaHandler struct { grpcConn *grpc.ClientConn queryClient gitopiaTypes.QueryClient @@ -96,16 +108,19 @@ type GitopiaHandler struct { didPush bool - gWallet *GitopiaWallet - key string - cc cosmosclient.Client + secType secretType + gWallet *GitopiaWallet + key string + ledgerPrivateKey cryptotypes.LedgerPrivKey + + cc cosmosclient.Client } func (h *GitopiaHandler) Initialize(remote *core.Remote) error { var err error h.grpcConn, err = grpc.Dial(config.GRPCHost, - grpc.WithInsecure(), + grpc.WithTransportCredentials(insecure.NewCredentials()), ) if err != nil { return err @@ -208,9 +223,10 @@ func (h *GitopiaHandler) Fetch(remote *core.Remote, sha, ref string) error { return nil } -func (h *GitopiaHandler) initGitopiaWallet() error { +func (h *GitopiaHandler) initGitopiaWallet() (string, error) { var gitopiaWallet GitopiaWallet var buffer []byte + var err error h.didPush = true // Read wallet @@ -218,69 +234,90 @@ func (h *GitopiaHandler) initGitopiaWallet() error { if isGitHubAction == "true" { // Read from GitHub secret buffer = []byte(os.Getenv("GITOPIA_WALLET")) - } else { + h.secType = GITHIB_SEC + } else if len(os.Getenv("GITOPIA_WALLET")) != 0 { gitopiaWalletPath := os.Getenv("GITOPIA_WALLET") - if gitopiaWalletPath == "" { - return fmt.Errorf("fatal: GITOPIA_WALLET environment variable is not set") - } - - var err error buffer, err = os.ReadFile(gitopiaWalletPath) if err != nil { - return fmt.Errorf("fatal: error reading gitopia wallet") + return "", fmt.Errorf("fatal: error reading gitopia wallet") } - + h.secType = ENV_VAR + } else { + return "", fmt.Errorf("fatal: GITOPIA_WALLET environment variable is not set") } - err := json.Unmarshal(buffer, &gitopiaWallet) + err = json.Unmarshal(buffer, &gitopiaWallet) if err != nil { - return fmt.Errorf("fatal: error decoding wallet file") + return "", fmt.Errorf("fatal: error decoding wallet file") } h.gWallet = &gitopiaWallet - return nil + walletAddress, err := h.gWallet.walletAddress() + if err != nil { + return "", err + } + return walletAddress, nil } -func (h *GitopiaHandler) initGitopiaKey() error { +func (h *GitopiaHandler) initGitopiaKey() (string, error) { conf, err := goGitConfig.LoadConfig(goGitConfig.GlobalScope) if err != nil { - return err + return "", err } if conf.Raw.HasSection(gitopiaConfigSection) && conf.Raw.Section(gitopiaConfigSection).HasOption(gitopiaConfigKeyOption) { h.key = conf.Raw.Section(gitopiaConfigSection).Option(gitopiaConfigKeyOption) } else { - return errors.New("gitopia key not configured") + return "", errors.New("gitopia key not configured") } - return nil + + h.secType = OS_KEYRING + wa, err := h.cc.Address(h.key) + if err != nil { + return "", err + } + return wa.String(), nil } -func (h *GitopiaHandler) Push(remote *core.Remote, refsToPush []core.RefToPush) (*[]string, error) { - if h.gWallet == nil && h.key == "" { - err := h.initGitopiaKey() +func (h *GitopiaHandler) initLedgerSecret() (string, error) { + ledgerPrivKey, err := ledger.NewPrivKeySecp256k1Unsafe(hd.BIP44Params{ + Purpose: 44, + CoinType: 118, + Account: 0, + Change: false, + AddressIndex: 0, + }) + if err != nil { + return "", err + } + h.ledgerPrivateKey = ledgerPrivKey + h.secType = LEDGER + walletAddress := sdk.AccAddress(ledgerPrivKey.PubKey().Address()) + return walletAddress.String(), nil +} + +func (h *GitopiaHandler) initSecrets() (string, error) { + walletAddress := "" + var err error + if h.secType == UNKNOWN { + walletAddress, err = h.initGitopiaKey() if err != nil { - err := h.initGitopiaWallet() + walletAddress, err = h.initGitopiaWallet() if err != nil { - return nil, err + walletAddress, err = h.initLedgerSecret() + if err != nil { + return "", fmt.Errorf("fatal: Gitopia wallet is not configured! Set gitopia key or use Ledger") + } } } } + return walletAddress, nil +} - walletAddress := "" - if h.key != "" { - wa, err := h.cc.Address(h.key) - if err != nil { - return nil, err - } - walletAddress = wa.String() - } else if h.gWallet != nil { - wa, err := h.gWallet.walletAddress() - if err != nil { - return nil, err - } - walletAddress = wa - } else { - return nil, errors.New("gitopia key or wallet not set") +func (h *GitopiaHandler) Push(remote *core.Remote, refsToPush []core.RefToPush) (*[]string, error) { + walletAddress, err := h.initSecrets() + if err != nil { + return nil, err } havePushPermission, err := h.havePushPermission(walletAddress) @@ -291,10 +328,6 @@ func (h *GitopiaHandler) Push(remote *core.Remote, refsToPush []core.RefToPush) return nil, fmt.Errorf("fatal: you don't have write permissions to this repository") } - var msg []sdk.Msg - - // Delete branch/tag - remoteURL := fmt.Sprintf("%v/%v.git", config.GitServerHost, h.remoteRepository.Id) remoteConfig := &goGitConfig.RemoteConfig{ Name: "gitopia-objects-store", @@ -405,6 +438,8 @@ func (h *GitopiaHandler) Push(remote *core.Remote, refsToPush []core.RefToPush) } } + var msg []sdk.Msg + if len(setBranches) > 0 { msg = append(msg, gitopiaTypes.NewMsgMultiSetRepositoryBranch(walletAddress, h.remoteRepository.Id, setBranches)) } @@ -418,13 +453,13 @@ func (h *GitopiaHandler) Push(remote *core.Remote, refsToPush []core.RefToPush) msg = append(msg, gitopiaTypes.NewMsgMultiDeleteTag(walletAddress, h.remoteRepository.Id, deleteTags)) } - if h.key != "" { + if h.secType == OS_KEYRING { txResp, err := h.cc.BroadcastTx(h.key, msg...) if err != nil { return nil, err } if txResp.TxResponse.Code != 0 { - return nil, err + return nil, errors.WithMessage(err, "error broadcasting transaction") } } else { @@ -432,7 +467,7 @@ func (h *GitopiaHandler) Push(remote *core.Remote, refsToPush []core.RefToPush) if err != nil { return nil, err } - err = signAndBroadcastTx(h.grpcConn, walletAddress, h.chainId, privKey, msg) + err = signAndBroadcastTx(h.grpcConn, walletAddress, h.chainId, privKey, h.ledgerPrivateKey, msg, h.secType == LEDGER) if err != nil { return nil, err } @@ -474,7 +509,7 @@ func (h *GitopiaHandler) havePushPermission(walletAddress string) (bool, error) Id: h.remoteRepository.Owner.Id, }) if err != nil { - return false, fmt.Errorf("fatal: organization doesn't exist") + return false, errors.WithMessage(err, "fatal: organization doesn't exist") } o = *res.Organization diff --git a/cmd/git-remote-gitopia/util.go b/cmd/git-remote-gitopia/util.go index 94fab4f..d5799f3 100644 --- a/cmd/git-remote-gitopia/util.go +++ b/cmd/git-remote-gitopia/util.go @@ -26,10 +26,8 @@ const ( GAS_ADJUSTMENT = 1.2 ) -func signAndBroadcastTx(cc *grpc.ClientConn, sender string, chainId string, privKey cryptotypes.PrivKey, msg []sdk.Msg) error { +func signWithWallet(cc *grpc.ClientConn, sender string, chainId string, privKey cryptotypes.PrivKey, msg []sdk.Msg, txClient tx.ServiceClient) ([]byte, error) { accountQueryClient := authtype.NewQueryClient(cc) - txClient := tx.NewServiceClient(cc) - interfaceRegistry := types.NewInterfaceRegistry() interfaceRegistry.RegisterInterface( "cosmos.auth.v1beta1.AccountI", @@ -44,34 +42,42 @@ func signAndBroadcastTx(cc *grpc.ClientConn, sender string, chainId string, priv txCfg := authtx.NewTxConfig(marshaler, authtx.DefaultSignModes) txBuilder := txCfg.NewTxBuilder() - txBuilder.SetMsgs(msg...) + err := txBuilder.SetMsgs(msg...) + if err != nil { + return nil, err + } + txBuilder.SetFeeAmount(sdk.NewCoins(sdk.NewCoin("utlore", sdk.NewInt(500)))) res, err := accountQueryClient.Account(context.Background(), &authtype.QueryAccountRequest{ Address: sender, }, ) + if err != nil { + return nil, err + } var acc authtype.AccountI if err := interfaceRegistry.UnpackAny(res.Account, &acc); err != nil { - return err + return nil, err } + signMode := txCfg.SignModeHandler().DefaultMode() sigV2 := signing.SignatureV2{ PubKey: privKey.PubKey(), Data: &signing.SingleSignatureData{ - SignMode: txCfg.SignModeHandler().DefaultMode(), + SignMode: signMode, Signature: nil, }, Sequence: acc.GetSequence(), } err = txBuilder.SetSignatures(sigV2) if err != nil { - return err + return nil, err } gas, err := calculateGas(cc, txClient, txCfg, txBuilder) if err != nil { - return err + return nil, err } txBuilder.SetGasLimit(gas) @@ -81,15 +87,15 @@ func signAndBroadcastTx(cc *grpc.ClientConn, sender string, chainId string, priv Sequence: acc.GetSequence(), } - sigV2, err = clientTx.SignWithPrivKey(txCfg.SignModeHandler().DefaultMode(), signerData, + sigV2, err = clientTx.SignWithPrivKey(signMode, signerData, txBuilder, privKey, txCfg, acc.GetSequence()) if err != nil { - return err + return nil, err } err = txBuilder.SetSignatures(sigV2) if err != nil { - return err + return nil, err } err = txBuilder.GetTx().ValidateBasic() @@ -97,14 +103,135 @@ func signAndBroadcastTx(cc *grpc.ClientConn, sender string, chainId string, priv fmt.Fprintf(os.Stderr, "fatal: tx validation failed: %v", err.Error()) } - var txBytes []byte - txBytes, err = txCfg.TxEncoder()(txBuilder.GetTx()) + txBytes, err := txCfg.TxEncoder()(txBuilder.GetTx()) if err != nil { - return err + return nil, err + } + + return txBytes, nil +} + +func signWithLedger(cc *grpc.ClientConn, sender string, chainId string, ledgerPrivKey cryptotypes.LedgerPrivKey, msg []sdk.Msg, txClient tx.ServiceClient) ([]byte, error) { + accountQueryClient := authtype.NewQueryClient(cc) + interfaceRegistry := types.NewInterfaceRegistry() + interfaceRegistry.RegisterInterface( + "cosmos.auth.v1beta1.AccountI", + (*authtype.AccountI)(nil), + &authtype.BaseAccount{}, + &authtype.ModuleAccount{}, + ) + interfaceRegistry.RegisterInterface("cosmos.crypto.PubKey", (*cryptotypes.PubKey)(nil)) + interfaceRegistry.RegisterImplementations((*cryptotypes.PubKey)(nil), &cosmoscryptosecp.PubKey{}) + interfaceRegistry.RegisterImplementations((*cryptotypes.PubKey)(nil), &cosmoscryptoed.PubKey{}) + marshaler := codec.NewProtoCodec(interfaceRegistry) + txCfg := authtx.NewTxConfig(marshaler, authtx.DefaultSignModes) + + txBuilder := txCfg.NewTxBuilder() + err := txBuilder.SetMsgs(msg...) + if err != nil { + return nil, err + } + txBuilder.SetFeeAmount(sdk.NewCoins(sdk.NewCoin("utlore", sdk.NewInt(500)))) + + res, err := accountQueryClient.Account(context.Background(), + &authtype.QueryAccountRequest{ + Address: sender, + }, + ) + if err != nil { + return nil, err + } + var acc authtype.AccountI + if err := interfaceRegistry.UnpackAny(res.Account, &acc); err != nil { + return nil, err + } + + signMode := signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON + sigV2 := signing.SignatureV2{ + PubKey: ledgerPrivKey.PubKey(), + Data: &signing.SingleSignatureData{ + SignMode: signMode, + Signature: nil, + }, + Sequence: acc.GetSequence(), + } + err = txBuilder.SetSignatures(sigV2) + if err != nil { + return nil, err + } + + gas, err := calculateGas(cc, txClient, txCfg, txBuilder) + if err != nil { + return nil, err + } + txBuilder.SetGasLimit(gas) + + signerData := xauthsigning.SignerData{ + ChainID: chainId, + AccountNumber: acc.GetAccountNumber(), + Sequence: acc.GetSequence(), + } + + bytesToSign, err := txCfg.SignModeHandler().GetSignBytes(signMode, signerData, txBuilder.GetTx()) + if err != nil { + return nil, err + } + + // TODO: Gives error in case of large msg + // JSON. Too many tokens + sigBytes, err := ledgerPrivKey.Sign(bytesToSign) + if err != nil { + return nil, err + } + + // Construct the SignatureV2 struct + sigData := signing.SingleSignatureData{ + SignMode: signMode, + Signature: sigBytes, + } + sigV2 = signing.SignatureV2{ + PubKey: ledgerPrivKey.PubKey(), + Data: &sigData, + Sequence: acc.GetSequence(), + } + + err = txBuilder.SetSignatures(sigV2) + if err != nil { + return nil, err + } + + err = txBuilder.GetTx().ValidateBasic() + if err != nil { + fmt.Fprintf(os.Stderr, "fatal: tx validation failed: %v", err.Error()) + } + + txBytes, err := txCfg.TxEncoder()(txBuilder.GetTx()) + if err != nil { + return nil, err + } + + return txBytes, nil +} + +func signAndBroadcastTx(cc *grpc.ClientConn, sender string, chainId string, privKey cryptotypes.PrivKey, + ledgerPrivKey cryptotypes.LedgerPrivKey, msg []sdk.Msg, useLedger bool) error { + txClient := tx.NewServiceClient(cc) + + var txBytes []byte + var err error + if useLedger { + txBytes, err = signWithLedger(cc, sender, chainId, ledgerPrivKey, msg, txClient) + if err != nil { + return err + } + } else { + txBytes, err = signWithWallet(cc, sender, chainId, privKey, msg, txClient) + if err != nil { + return err + } } - var grpcRes *tx.BroadcastTxResponse - grpcRes, err = txClient.BroadcastTx( + grpcRes, err := txClient.BroadcastTx( context.Background(), &tx.BroadcastTxRequest{ Mode: tx.BroadcastMode_BROADCAST_MODE_SYNC, diff --git a/config/config_dev.go b/config/config_dev.go index c2ad0bb..0bac652 100644 --- a/config/config_dev.go +++ b/config/config_dev.go @@ -4,7 +4,7 @@ package config const ( - GRPCHost = "localhost:9090" - GitServerHost = "http://localhost:5001/" - TmAddr = "http://localhost:26657" + GRPCHost = "grpc.gitopia.com:9090" + GitServerHost = "https://server.gitopia.com" + TmAddr = "grpc.gitopia.com:26657" ) diff --git a/config/config_prod.go b/config/config_prod.go index 637b422..4bbeddd 100644 --- a/config/config_prod.go +++ b/config/config_prod.go @@ -1,9 +1,10 @@ +//go:build prod // +build prod package config const ( - GRPCHost = "34.93.81.34:9090" - GitServerHost = "http://35.200.147.237:5000/" - TmAddr = "http://34.93.81.34:26657" + GRPCHost = "grpc.gitopia.com:9090" + GitServerHost = "https://server.gitopia.com" + TmAddr = "grpc.gitopia.com:26657" ) diff --git a/go.mod b/go.mod index 7398ec3..4da298f 100644 --- a/go.mod +++ b/go.mod @@ -3,14 +3,15 @@ module github.com/gitopia/git-remote-gitopia go 1.16 require ( - github.com/cosmos/cosmos-sdk v0.45.0 - github.com/gitopia/gitopia v0.12.1-0.20220302171918-ccf7c17f9817 + github.com/cosmos/cosmos-sdk v0.45.1 + github.com/gitopia/gitopia v0.13.0 github.com/go-git/go-git/v5 v5.4.2 + github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.2.1 github.com/tendermint/starport v0.19.2 - google.golang.org/grpc v1.43.0 + google.golang.org/grpc v1.45.0 ) -replace google.golang.org/grpc => google.golang.org/grpc v1.33.2 - replace github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 + +replace github.com/keybase/go-keychain => github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 diff --git a/go.sum b/go.sum index cee3db5..9806da4 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,7 @@ 4d63.com/gochecknoglobals v0.0.0-20201008074935-acfc0b28355a/go.mod h1:wfdC5ZjKSPr7CybKEcgJhUOgeAQW1+7WcyK8OvUilfo= bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= bitbucket.org/creachadair/shell v0.0.6/go.mod h1:8Qqi/cYk7vPnsOePHroKXDJYmb5x7ENhtiFtfZq8K+M= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= @@ -45,6 +46,8 @@ contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EU dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0-beta.2 h1:/BZRNzm8N4K4eWfK28dL4yescorxtO7YG1yun8fy+pI= filippo.io/edwards25519 v1.0.0-beta.2/go.mod h1:X+pm78QAUPtFLi1z9PYIlS/bdDnvbCOGKtZ+ACWEf7o= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.1.6 h1:kVDC2uCgVwecxCk+9zoCt2uEL6dt+dfVzMvGgnVcIuM= github.com/99designs/keyring v1.1.6/go.mod h1:16e0ds7LGQQcT59QqkTg72Hh5ShM51Byv5PEmW6uoRU= github.com/AlecAivazis/survey/v2 v2.1.1/go.mod h1:9FJRdMdDm8rnT+zHVbvQT2RTSTLq0Ttd6q3Vl2fahjk= @@ -261,8 +264,16 @@ github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9/go.mod h1:1MxXX1Ux4x6mqPmjkUgTP1CdXIBXKX7T+Jk9Gxrmx+U= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go v0.6.10/go.mod h1:J/JFMsfcePrjJZkwQFLh+hJErkAmdm9Iyy3D5Y0LfXo= @@ -380,8 +391,8 @@ github.com/cosmos/cosmos-sdk v0.44.2/go.mod h1:fwQJdw+aECatpTvQTo1tSfHEsxACdZYU8 github.com/cosmos/cosmos-sdk v0.44.3/go.mod h1:bA3+VenaR/l/vDiYzaiwbWvRPWHMBX2jG0ygiFtiBp0= github.com/cosmos/cosmos-sdk v0.44.4/go.mod h1:0QTCOkE8IWu5LZyfnbbjFjxYRIcV4pBOr7+zPpJwl58= github.com/cosmos/cosmos-sdk v0.44.5/go.mod h1:maUA6m2TBxOJZkbwl0eRtEBgTX37kcaiOWU5t1HEGaY= -github.com/cosmos/cosmos-sdk v0.45.0 h1:DHD+CIRZ+cYgiLXuTEUL/aprnfPsWSwaww/fIZEsZlk= -github.com/cosmos/cosmos-sdk v0.45.0/go.mod h1:XXS/asyCqWNWkx2rW6pSuen+EVcpAFxq6khrhnZgHaQ= +github.com/cosmos/cosmos-sdk v0.45.1 h1:PY79YxPea5qlRLExRnzg8/rT1Scc8GGgRs22p7DX99Q= +github.com/cosmos/cosmos-sdk v0.45.1/go.mod h1:XXS/asyCqWNWkx2rW6pSuen+EVcpAFxq6khrhnZgHaQ= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= @@ -471,7 +482,15 @@ github.com/emicklei/proto v1.9.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9 github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25/go.mod h1:hTr8+TLQmkUkgcuh3mcr5fjrT9c64ZzsBCdCEC6UppY= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/esimonov/ifshort v1.0.2/go.mod h1:yZqNJUrNn20K8Q9n2CrjTKYyVEmX209Hgu+M1LBpeZE= @@ -515,8 +534,8 @@ github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gitopia/gitopia v0.12.1-0.20220302171918-ccf7c17f9817 h1:ZZhtGTgAqJhQwAEyrbbP56Vw3LcWbsrNbJgOYLJT92Y= -github.com/gitopia/gitopia v0.12.1-0.20220302171918-ccf7c17f9817/go.mod h1:WNykHn0k5foYCxq6DbV/xmP2e0aC5jmmShd07urvnpk= +github.com/gitopia/gitopia v0.13.0 h1:KKAYbawguYp2mhqmqfmo5r6hq+Sllx1m9XaMv8BkyfE= +github.com/gitopia/gitopia v0.13.0/go.mod h1:Q9GChdBKWO6KFyLw005soOM4mliU6IE0N+8FWyFeQ/M= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-critic/go-critic v0.5.6/go.mod h1:cVjj0DfqewQVIlIAGexPCaGaZDAqGE29PYDDADIVNEo= @@ -613,6 +632,7 @@ github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14j github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -621,6 +641,7 @@ github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4er github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= @@ -886,8 +907,6 @@ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:C github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= -github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/errcheck v1.6.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= @@ -937,6 +956,7 @@ github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQ github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= @@ -1492,6 +1512,7 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -1556,6 +1577,7 @@ golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMk golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -1583,6 +1605,7 @@ golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1640,8 +1663,9 @@ golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5o golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f h1:w6wWR0H+nyVpbSAQbzVEIACVyr/h8l/BEkY6Sokc7Eg= golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1669,6 +1693,7 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1777,12 +1802,14 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 h1:2B5p2L5IfGiD7+b9BOoRMC6DgObAVZV+Fsp050NqXik= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf h1:MZ2shdL+ZM/XzY3ZGOnh4Nlpnxz5GSOhOmtHo3iPU6M= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1790,8 +1817,9 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1799,8 +1827,10 @@ golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190307163923-6a08e3108db3/go.mod h1:25r3+/G6/xytQM8iWZKq3Hn0kr0rgFKPUNVEL/dr3z4= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1997,10 +2027,44 @@ google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaE google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220118154757-00ab72f36ad5 h1:zzNejm+EgrbLfDZ6lu9Uud2IVvHySPl8vQzf04laR5Q= -google.golang.org/genproto v0.0.0-20220118154757-00ab72f36ad5/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= +google.golang.org/genproto v0.0.0-20220317150908-0efb43f6373e h1:fNKDNuUyC4WH+inqDMpfXDdfvwfYILbsX+oskGZ8hxg= +google.golang.org/genproto v0.0.0-20220317150908-0efb43f6373e/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -2067,6 +2131,7 @@ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 70e1936413cf293181212084afbf0f3a2342516a Mon Sep 17 00:00:00 2001 From: janani anbarasan Date: Mon, 27 Jun 2022 14:13:20 -0500 Subject: [PATCH 06/11] merge master into ja --- Makefile | 2 +- config/config_testing.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6087483..48bfa6e 100644 --- a/Makefile +++ b/Makefile @@ -95,4 +95,4 @@ install: go.sum go.sum: go.mod @echo "--> Ensure dependencies have not been modified" - GO111MODULE=on go mod verify \ No newline at end of file + GO111MODULE=on go mod verify diff --git a/config/config_testing.go b/config/config_testing.go index e95cac2..8ddc2cd 100644 --- a/config/config_testing.go +++ b/config/config_testing.go @@ -1,3 +1,4 @@ +//go:build testing // +build testing package config From 0a7faec93419e322fa808018b2537009705cb856 Mon Sep 17 00:00:00 2001 From: janani anbarasan Date: Tue, 28 Jun 2022 00:14:57 -0500 Subject: [PATCH 07/11] fix build --- Makefile | 9 --------- cmd/git-remote-gitopia/gitopia.go | 5 ----- config/config_dev.go | 1 - config/config_prod.go | 1 - config/config_testing.go | 1 - 5 files changed, 17 deletions(-) diff --git a/Makefile b/Makefile index b96ce95..48bfa6e 100644 --- a/Makefile +++ b/Makefile @@ -32,18 +32,12 @@ BUILD_FLAGS := -tags "$(build_tags) $(GITOPIA_ENV)" appname := git-remote-gitopia version := 0.4.2 -<<<<<<< HEAD build = GOOS=$(1) GOARCH=$(2) go build $(BUILD_FLAGS) -o build/$(appname)$(3) ./cmd/git-remote-gitopia && \ GOOS=$(1) GOARCH=$(2) go build $(BUILD_FLAGS) -o build/git-gitopia$(3) ./cmd/git-gitopia-keys tar = cd build && tar -cvzf $(appname)_$(version)_$(1)_$(2).tar.gz $(appname)$(3) git-gitopia$(3) \ && rm $(appname)$(3) && rm git-gitopia$(3) zip = cd build && zip $(appname)_$(version)_$(1)_$(2).zip $(appname)$(3) && rm $(appname)$(3) && \ zip $(appname)_$(version)_$(1)_$(2).zip git-gitopia$(3) && rm git-gitopia$(3) -======= -build = GOOS=$(1) GOARCH=$(2) go build $(BUILD_FLAGS) -o build/$(appname)$(3) ./cmd/git-remote-gitopia -tar = cd build && tar -cvzf $(appname)_$(version)_$(1)_$(2).tar.gz $(appname)$(3) && rm $(appname)$(3) -zip = cd build && zip $(appname)_$(version)_$(1)_$(2).zip $(appname)$(3) && rm $(appname)$(3) ->>>>>>> master .PHONY: build @@ -96,11 +90,8 @@ build/$(appname)_$(version)_windows_amd64.zip: install: go.sum @echo "--> Installing git-remote-gitopia" @go install -mod=readonly $(BUILD_FLAGS) ./cmd/git-remote-gitopia -<<<<<<< HEAD @go install -mod=readonly $(BUILD_FLAGS) ./cmd/git-gitopia-keys mv $(GOBIN)/git-gitopia-keys $(GOBIN)/git-gitopia -======= ->>>>>>> master go.sum: go.mod @echo "--> Ensure dependencies have not been modified" diff --git a/cmd/git-remote-gitopia/gitopia.go b/cmd/git-remote-gitopia/gitopia.go index 56fec38..44277b8 100644 --- a/cmd/git-remote-gitopia/gitopia.go +++ b/cmd/git-remote-gitopia/gitopia.go @@ -25,7 +25,6 @@ import ( "github.com/go-git/go-git/v5" goGitConfig "github.com/go-git/go-git/v5/config" "github.com/go-git/go-git/v5/plumbing" - "github.com/pkg/errors" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" ) @@ -226,13 +225,9 @@ func (h *GitopiaHandler) Fetch(remote *core.Remote, sha, ref string) error { func (h *GitopiaHandler) initGitopiaWallet() (string, error) { var gitopiaWallet GitopiaWallet - var walletAddress sdk.AccAddress - var privKey cryptotypes.PrivKey - var ledgerPrivKey cryptotypes.LedgerPrivKey var buffer []byte var err error h.didPush = true - var useLedger bool // Read wallet isGitHubAction := os.Getenv("GITHUB_ACTIONS") diff --git a/config/config_dev.go b/config/config_dev.go index 0bac652..cb02986 100644 --- a/config/config_dev.go +++ b/config/config_dev.go @@ -1,4 +1,3 @@ -//go:build dev // +build dev package config diff --git a/config/config_prod.go b/config/config_prod.go index 4bbeddd..08d07f1 100644 --- a/config/config_prod.go +++ b/config/config_prod.go @@ -1,4 +1,3 @@ -//go:build prod // +build prod package config diff --git a/config/config_testing.go b/config/config_testing.go index 8ddc2cd..e95cac2 100644 --- a/config/config_testing.go +++ b/config/config_testing.go @@ -1,4 +1,3 @@ -//go:build testing // +build testing package config From 957e4a885ac38c3dfc680562c963f4dfabe9864f Mon Sep 17 00:00:00 2001 From: janani anbarasan Date: Fri, 1 Jul 2022 10:02:24 -0500 Subject: [PATCH 08/11] [review-fix] fix keys address prefix --- Makefile | 13 ++++++------- cmd/{git-gitopia-keys => git-gitopia}/main.go | 13 +++++++++++-- cmd/{git-gitopia-keys => git-gitopia}/readme.md | 4 ++-- cmd/git-remote-gitopia/gitopia.go | 3 +-- config/config_dev.go | 2 +- config/config_prod.go | 2 +- 6 files changed, 22 insertions(+), 15 deletions(-) rename cmd/{git-gitopia-keys => git-gitopia}/main.go (75%) rename cmd/{git-gitopia-keys => git-gitopia}/readme.md (78%) diff --git a/Makefile b/Makefile index 48bfa6e..cdf79a0 100644 --- a/Makefile +++ b/Makefile @@ -33,11 +33,11 @@ appname := git-remote-gitopia version := 0.4.2 build = GOOS=$(1) GOARCH=$(2) go build $(BUILD_FLAGS) -o build/$(appname)$(3) ./cmd/git-remote-gitopia && \ - GOOS=$(1) GOARCH=$(2) go build $(BUILD_FLAGS) -o build/git-gitopia$(3) ./cmd/git-gitopia-keys -tar = cd build && tar -cvzf $(appname)_$(version)_$(1)_$(2).tar.gz $(appname)$(3) git-gitopia$(3) \ - && rm $(appname)$(3) && rm git-gitopia$(3) -zip = cd build && zip $(appname)_$(version)_$(1)_$(2).zip $(appname)$(3) && rm $(appname)$(3) && \ - zip $(appname)_$(version)_$(1)_$(2).zip git-gitopia$(3) && rm git-gitopia$(3) + GOOS=$(1) GOARCH=$(2) go build $(BUILD_FLAGS) -o build/git-gitopia$(3) ./cmd/git-gitopia +tar = cd build && tar -cvzf $(appname)_$(version)_$(1)_$(2).tar.gz $(appname)$(3) git-gitopia$(3) && \ + rm $(appname)$(3) && rm git-gitopia$(3) +zip = cd build && zip $(appname)_$(version)_$(1)_$(2).zip $(appname)$(3) git-gitopia$(3) && \ + rm $(appname)$(3) && rm git-gitopia$(3) .PHONY: build @@ -90,8 +90,7 @@ build/$(appname)_$(version)_windows_amd64.zip: install: go.sum @echo "--> Installing git-remote-gitopia" @go install -mod=readonly $(BUILD_FLAGS) ./cmd/git-remote-gitopia - @go install -mod=readonly $(BUILD_FLAGS) ./cmd/git-gitopia-keys - mv $(GOBIN)/git-gitopia-keys $(GOBIN)/git-gitopia + @go install -mod=readonly $(BUILD_FLAGS) ./cmd/git-gitopia go.sum: go.mod @echo "--> Ensure dependencies have not been modified" diff --git a/cmd/git-gitopia-keys/main.go b/cmd/git-gitopia/main.go similarity index 75% rename from cmd/git-gitopia-keys/main.go rename to cmd/git-gitopia/main.go index d96534f..e41b97a 100644 --- a/cmd/git-gitopia-keys/main.go +++ b/cmd/git-gitopia/main.go @@ -8,15 +8,24 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/keys" "github.com/spf13/cobra" + + sdk "github.com/cosmos/cosmos-sdk/types" +) + +const ( + AccountAddressPrefix = "gitopia" ) -func main(){ +func main() { ctx := context.Background() ctx = context.WithValue(ctx, client.ClientContextKey, &client.Context{}) cmd := &cobra.Command{ Use: "gitopia", CompletionOptions: cobra.CompletionOptions{DisableDefaultCmd: true}, PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { + conf := sdk.GetConfig() + conf.SetBech32PrefixForAccount(AccountAddressPrefix, AccountAddressPrefix+sdk.PrefixPublic) + conf.Seal() initClientCtx := client.Context{}. WithInput(os.Stdin) return client.SetCmdClientContext(cmd, initClientCtx) @@ -29,4 +38,4 @@ func main(){ return } fmt.Fprintf(os.Stdout, "Done\n") -} \ No newline at end of file +} diff --git a/cmd/git-gitopia-keys/readme.md b/cmd/git-gitopia/readme.md similarity index 78% rename from cmd/git-gitopia-keys/readme.md rename to cmd/git-gitopia/readme.md index e9e27a7..a06f1da 100644 --- a/cmd/git-gitopia-keys/readme.md +++ b/cmd/git-gitopia/readme.md @@ -8,9 +8,9 @@ make install ## Usage use cosmos keys subcommand to manage keys -ex: import key +ex: recover key ``` -git gitopia keys import +git gitopia keys add --recover ``` ## configure key diff --git a/cmd/git-remote-gitopia/gitopia.go b/cmd/git-remote-gitopia/gitopia.go index 44277b8..6d3b1d7 100644 --- a/cmd/git-remote-gitopia/gitopia.go +++ b/cmd/git-remote-gitopia/gitopia.go @@ -21,7 +21,6 @@ import ( "github.com/tendermint/starport/starport/pkg/cosmosaccount" "github.com/tendermint/starport/starport/pkg/cosmosclient" - // "github.com/gitopia/gitopia/x/gitopia/utils" "github.com/go-git/go-git/v5" goGitConfig "github.com/go-git/go-git/v5/config" "github.com/go-git/go-git/v5/plumbing" @@ -40,7 +39,7 @@ const ( ) var ( - AccountPubKeyPrefix = AccountAddressPrefix + "pub" + AccountPubKeyPrefix = AccountAddressPrefix + sdk.PrefixPublic ) type Account struct { diff --git a/config/config_dev.go b/config/config_dev.go index cb02986..80234f7 100644 --- a/config/config_dev.go +++ b/config/config_dev.go @@ -5,5 +5,5 @@ package config const ( GRPCHost = "grpc.gitopia.com:9090" GitServerHost = "https://server.gitopia.com" - TmAddr = "grpc.gitopia.com:26657" + TmAddr = "rpc.gitopia.com:26657" ) diff --git a/config/config_prod.go b/config/config_prod.go index 08d07f1..cb28a2e 100644 --- a/config/config_prod.go +++ b/config/config_prod.go @@ -5,5 +5,5 @@ package config const ( GRPCHost = "grpc.gitopia.com:9090" GitServerHost = "https://server.gitopia.com" - TmAddr = "grpc.gitopia.com:26657" + TmAddr = "rpc.gitopia.com:26657" ) From f6fe57875a655e53cbb76ac0d67db47299ff5f7f Mon Sep 17 00:00:00 2001 From: janani anbarasan Date: Fri, 1 Jul 2022 10:08:11 -0500 Subject: [PATCH 09/11] fix keyring service name --- cmd/git-remote-gitopia/gitopia.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmd/git-remote-gitopia/gitopia.go b/cmd/git-remote-gitopia/gitopia.go index 6d3b1d7..8b05051 100644 --- a/cmd/git-remote-gitopia/gitopia.go +++ b/cmd/git-remote-gitopia/gitopia.go @@ -29,6 +29,7 @@ import ( ) const ( + AppName = "gitopia" AccountAddressPrefix = "gitopia" gitopiaConfigSection = "gitopia" gitopiaConfigKeyOption = "key" @@ -155,7 +156,7 @@ func (h *GitopiaHandler) Initialize(remote *core.Remote) error { h.cc, err = cosmosclient.New(context.Background(), cosmosclient.WithNodeAddress(config.TmAddr), - //cosmosclient.WithKeyringServiceName("cosmos"), // not suported on macos + cosmosclient.WithKeyringServiceName(AppName), // not suported on macos cosmosclient.WithKeyringBackend(cosmosaccount.KeyringOS), cosmosclient.WithAddressPrefix(AccountAddressPrefix), ) From ad5e5d72d6aed0111c58bcf5e226337baea38fd6 Mon Sep 17 00:00:00 2001 From: janani anbarasan Date: Fri, 1 Jul 2022 16:42:24 -0500 Subject: [PATCH 10/11] fix keyring service name --- cmd/git-gitopia/main.go | 13 +++-- cmd/git-gitopia/readme.md | 1 + cmd/git-remote-gitopia/gitopia.go | 93 ++++++++++++++++++++----------- 3 files changed, 70 insertions(+), 37 deletions(-) diff --git a/cmd/git-gitopia/main.go b/cmd/git-gitopia/main.go index e41b97a..4743e5e 100644 --- a/cmd/git-gitopia/main.go +++ b/cmd/git-gitopia/main.go @@ -7,18 +7,21 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/keys" + "github.com/cosmos/cosmos-sdk/version" "github.com/spf13/cobra" sdk "github.com/cosmos/cosmos-sdk/types" ) const ( + AppName = "gitopia" AccountAddressPrefix = "gitopia" ) func main() { ctx := context.Background() - ctx = context.WithValue(ctx, client.ClientContextKey, &client.Context{}) + ctx = context.WithValue(ctx, client.ClientContextKey, new(client.Context)) + version.Name = AppName // os keyring service name is same as version name cmd := &cobra.Command{ Use: "gitopia", CompletionOptions: cobra.CompletionOptions{DisableDefaultCmd: true}, @@ -26,15 +29,15 @@ func main() { conf := sdk.GetConfig() conf.SetBech32PrefixForAccount(AccountAddressPrefix, AccountAddressPrefix+sdk.PrefixPublic) conf.Seal() - initClientCtx := client.Context{}. - WithInput(os.Stdin) - return client.SetCmdClientContext(cmd, initClientCtx) + initClientCtx := client.Context{}.WithInput(os.Stdin) + // sets global flags for keys subcommand + return client.SetCmdClientContextHandler(initClientCtx, cmd) }, } cmd.AddCommand(keys.Commands(".")) err := cmd.ExecuteContext(ctx) if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) + fmt.Fprint(os.Stderr, err.Error()) return } fmt.Fprintf(os.Stdout, "Done\n") diff --git a/cmd/git-gitopia/readme.md b/cmd/git-gitopia/readme.md index a06f1da..8fb1336 100644 --- a/cmd/git-gitopia/readme.md +++ b/cmd/git-gitopia/readme.md @@ -16,4 +16,5 @@ git gitopia keys add --recover ## configure key ``` git config --global gitopia.key +git config --global gitopia.backend ``` \ No newline at end of file diff --git a/cmd/git-remote-gitopia/gitopia.go b/cmd/git-remote-gitopia/gitopia.go index 8b05051..a4d0c58 100644 --- a/cmd/git-remote-gitopia/gitopia.go +++ b/cmd/git-remote-gitopia/gitopia.go @@ -10,6 +10,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" "github.com/cosmos/cosmos-sdk/crypto/hd" + "github.com/cosmos/cosmos-sdk/crypto/keyring" "github.com/cosmos/cosmos-sdk/crypto/ledger" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -29,14 +30,15 @@ import ( ) const ( - AppName = "gitopia" - AccountAddressPrefix = "gitopia" - gitopiaConfigSection = "gitopia" - gitopiaConfigKeyOption = "key" - saveToArweaveURL = "http://35.200.147.237:5000/save" - branchPrefix = "refs/heads/" - tagPrefix = "refs/tags/" - defaultFees = "200utlore" + AppName = "gitopia" + AccountAddressPrefix = "gitopia" + gitopiaConfigSection = "gitopia" + gitopiaConfigKeyOption = "key" + gitopiaConfigBackendOption = "backend" + saveToArweaveURL = "http://35.200.147.237:5000/save" + branchPrefix = "refs/heads/" + tagPrefix = "refs/tags/" + defaultFees = "200utlore" ) var ( @@ -49,7 +51,7 @@ type Account struct { } type GitopiaWallet struct { - Name string `json:"name"` + Name string `json:"name"` Mnemonic string `json:"mnemonic"` HDpath string `json:"HDpath"` Password string `json:"password"` @@ -93,10 +95,29 @@ const ( UNKNOWN secretType = iota ENV_VAR LEDGER - OS_KEYRING + KEYRING_BACKEND GITHIB_SEC ) +type keyringBackend struct { + key string + backend string + cc cosmosclient.Client +} + +func newKeyringBackend(k string, b string, c cosmosclient.Client) keyringBackend { + c.Factory = c.Factory.WithFees(defaultFees) + return keyringBackend{ + key: k, + backend: b, + cc: c, + } +} + +func (k keyringBackend) address()(sdk.Address, error) { + return k.cc.Address(k.key) +} + type GitopiaHandler struct { grpcConn *grpc.ClientConn queryClient gitopiaTypes.QueryClient @@ -109,11 +130,9 @@ type GitopiaHandler struct { didPush bool secType secretType - gWallet *GitopiaWallet - key string - ledgerPrivateKey cryptotypes.LedgerPrivKey - - cc cosmosclient.Client + gWallet *GitopiaWallet // ENV_VAR + kb keyringBackend // KEYRING_BACKEND + ledgerPrivateKey cryptotypes.LedgerPrivKey // LEDGER } func (h *GitopiaHandler) Initialize(remote *core.Remote) error { @@ -153,18 +172,6 @@ func (h *GitopiaHandler) Initialize(remote *core.Remote) error { // cannot seal the config // cosmos client sets address prefix for each broadcasttx API call. probably a bug // conf.Seal() - - h.cc, err = cosmosclient.New(context.Background(), - cosmosclient.WithNodeAddress(config.TmAddr), - cosmosclient.WithKeyringServiceName(AppName), // not suported on macos - cosmosclient.WithKeyringBackend(cosmosaccount.KeyringOS), - cosmosclient.WithAddressPrefix(AccountAddressPrefix), - ) - if err != nil { - return err - } - h.cc.Factory = h.cc.Factory.WithFees(defaultFees) - return nil } @@ -260,19 +267,41 @@ func (h *GitopiaHandler) initGitopiaWallet() (string, error) { } func (h *GitopiaHandler) initGitopiaKey() (string, error) { + var key string + var backend string + var cc cosmosclient.Client conf, err := goGitConfig.LoadConfig(goGitConfig.GlobalScope) if err != nil { return "", err } if conf.Raw.HasSection(gitopiaConfigSection) && conf.Raw.Section(gitopiaConfigSection).HasOption(gitopiaConfigKeyOption) { - h.key = conf.Raw.Section(gitopiaConfigSection).Option(gitopiaConfigKeyOption) + key = conf.Raw.Section(gitopiaConfigSection).Option(gitopiaConfigKeyOption) } else { return "", errors.New("gitopia key not configured") } - h.secType = OS_KEYRING - wa, err := h.cc.Address(h.key) + if conf.Raw.HasSection(gitopiaConfigSection) && + conf.Raw.Section(gitopiaConfigSection).HasOption(gitopiaConfigBackendOption) { + backend = conf.Raw.Section(gitopiaConfigSection).Option(gitopiaConfigBackendOption) + } else { + backend = keyring.BackendOS // default to OS. same as cosmos keys subcommand + } + + h.secType = KEYRING_BACKEND + cc, err = cosmosclient.New(context.Background(), + cosmosclient.WithNodeAddress(config.TmAddr), + // same service name used in both helper and keys management app + cosmosclient.WithKeyringServiceName(AppName), // not suported on macos + cosmosclient.WithKeyringBackend(cosmosaccount.KeyringBackend(backend)), // not all backends supported by cosmos are supported by cosmos client + cosmosclient.WithAddressPrefix(AccountAddressPrefix), + ) + if err != nil { + return "", err + } + h.kb = newKeyringBackend(key, backend, cc) + + wa, err := h.kb.address() if err != nil { return "", err } @@ -453,8 +482,8 @@ func (h *GitopiaHandler) Push(remote *core.Remote, refsToPush []core.RefToPush) msg = append(msg, gitopiaTypes.NewMsgMultiDeleteTag(walletAddress, h.remoteRepository.Id, deleteTags)) } - if h.secType == OS_KEYRING { - txResp, err := h.cc.BroadcastTx(h.key, msg...) + if h.secType == KEYRING_BACKEND { + txResp, err := h.kb.cc.BroadcastTx(h.kb.key, msg...) if err != nil { return nil, err } From e15ac92c88eb62277c61cfac237328278c5100c0 Mon Sep 17 00:00:00 2001 From: janani anbarasan Date: Wed, 6 Jul 2022 14:56:07 -0500 Subject: [PATCH 11/11] configure a different keyring service name for the helper --- cmd/git-gitopia/main.go | 3 ++- cmd/git-remote-gitopia/gitopia.go | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/cmd/git-gitopia/main.go b/cmd/git-gitopia/main.go index 4743e5e..99f8fa1 100644 --- a/cmd/git-gitopia/main.go +++ b/cmd/git-gitopia/main.go @@ -14,7 +14,8 @@ import ( ) const ( - AppName = "gitopia" + // !!NOTE!! keep this same as remote helper app name + AppName = "git-remote-gitopia" AccountAddressPrefix = "gitopia" ) diff --git a/cmd/git-remote-gitopia/gitopia.go b/cmd/git-remote-gitopia/gitopia.go index a4d0c58..7f3c1df 100644 --- a/cmd/git-remote-gitopia/gitopia.go +++ b/cmd/git-remote-gitopia/gitopia.go @@ -30,7 +30,7 @@ import ( ) const ( - AppName = "gitopia" + AppName = "git-remote-gitopia" AccountAddressPrefix = "gitopia" gitopiaConfigSection = "gitopia" gitopiaConfigKeyOption = "key" @@ -51,7 +51,7 @@ type Account struct { } type GitopiaWallet struct { - Name string `json:"name"` + Name string `json:"name"` Mnemonic string `json:"mnemonic"` HDpath string `json:"HDpath"` Password string `json:"password"` @@ -114,7 +114,7 @@ func newKeyringBackend(k string, b string, c cosmosclient.Client) keyringBackend } } -func (k keyringBackend) address()(sdk.Address, error) { +func (k keyringBackend) address() (sdk.Address, error) { return k.cc.Address(k.key) } @@ -292,7 +292,7 @@ func (h *GitopiaHandler) initGitopiaKey() (string, error) { cc, err = cosmosclient.New(context.Background(), cosmosclient.WithNodeAddress(config.TmAddr), // same service name used in both helper and keys management app - cosmosclient.WithKeyringServiceName(AppName), // not suported on macos + cosmosclient.WithKeyringServiceName(AppName), // not suported on macos cosmosclient.WithKeyringBackend(cosmosaccount.KeyringBackend(backend)), // not all backends supported by cosmos are supported by cosmos client cosmosclient.WithAddressPrefix(AccountAddressPrefix), )