| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package guardiand
- import (
- "context"
- "fmt"
- "io/ioutil"
- "log"
- "time"
- "github.com/spf13/cobra"
- "github.com/status-im/keycard-go/hexutils"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/encoding/prototext"
- nodev1 "github.com/certusone/wormhole/bridge/pkg/proto/node/v1"
- )
- var clientSocketPath *string
- func init() {
- pf := AdminClientInjectGuardianSetUpdateCmd.Flags()
- clientSocketPath = pf.String("socket", "", "gRPC admin server socket to connect to")
- err := cobra.MarkFlagRequired(pf, "socket")
- if err != nil {
- panic(err)
- }
- AdminCmd.AddCommand(AdminClientInjectGuardianSetUpdateCmd)
- AdminCmd.AddCommand(AdminClientGovernanceVAAVerifyCmd)
- }
- var AdminCmd = &cobra.Command{
- Use: "admin",
- Short: "Guardian node admin commands",
- }
- var AdminClientInjectGuardianSetUpdateCmd = &cobra.Command{
- Use: "governance-vaa-inject",
- Short: "Inject and sign a governance VAA from a prototxt file (see docs!)",
- Run: runInjectGovernanceVAA,
- Args: cobra.ExactArgs(1),
- }
- func getAdminClient(ctx context.Context, addr string) (*grpc.ClientConn, error, nodev1.NodePrivilegedClient) {
- conn, err := grpc.DialContext(ctx, fmt.Sprintf("unix:///%s", addr), grpc.WithInsecure())
- if err != nil {
- log.Fatalf("failed to connect to %s: %v", addr, err)
- }
- c := nodev1.NewNodePrivilegedClient(conn)
- return conn, err, c
- }
- func runInjectGovernanceVAA(cmd *cobra.Command, args []string) {
- path := args[0]
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- conn, err, c := getAdminClient(ctx, *clientSocketPath)
- defer conn.Close()
- b, err := ioutil.ReadFile(path)
- if err != nil {
- log.Fatalf("failed to read file: %v", err)
- }
- var msg nodev1.InjectGovernanceVAARequest
- err = prototext.Unmarshal(b, &msg)
- if err != nil {
- log.Fatalf("failed to deserialize: %v", err)
- }
- resp, err := c.InjectGovernanceVAA(ctx, &msg)
- if err != nil {
- log.Fatalf("failed to submit governance VAA: %v", err)
- }
- log.Printf("VAA successfully injected with digest %s", hexutils.BytesToHex(resp.Digest))
- }
|