From b72fceab408e8d9be9b012cc4b6c97b161cf5d4d Mon Sep 17 00:00:00 2001 From: braginini Date: Thu, 15 Apr 2021 15:10:39 +0200 Subject: [PATCH] feat: add signal cmd --- cmd/root.go | 17 ++++++++++++++++- cmd/signal.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++ cmd/up.go | 13 +------------ signal/signal.go | 8 -------- 4 files changed, 64 insertions(+), 21 deletions(-) create mode 100644 cmd/signal.go diff --git a/cmd/root.go b/cmd/root.go index 61bb3737a..fc43f3772 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -1,6 +1,12 @@ package cmd -import "github.com/spf13/cobra" +import ( + "fmt" + "github.com/spf13/cobra" + "os" + "os/signal" + "syscall" +) var ( rootCmd = &cobra.Command{ @@ -17,4 +23,13 @@ func Execute() error { func init() { rootCmd.AddCommand(upCmd) + rootCmd.AddCommand(signalCmd) +} + +func SetupCloseHandler() { + c := make(chan os.Signal) + signal.Notify(c, os.Interrupt, syscall.SIGTERM) + <-c + fmt.Println("\r- Ctrl+C pressed in Terminal") + os.Exit(0) } diff --git a/cmd/signal.go b/cmd/signal.go new file mode 100644 index 000000000..fad093ba0 --- /dev/null +++ b/cmd/signal.go @@ -0,0 +1,47 @@ +package cmd + +import ( + "flag" + "fmt" + log "github.com/sirupsen/logrus" + "github.com/spf13/cobra" + sig "github.com/wiretrustee/wiretrustee/signal" + sProto "github.com/wiretrustee/wiretrustee/signal/proto" + "google.golang.org/grpc" + "net" +) + +var ( + port int + + signalCmd = &cobra.Command{ + Use: "signal", + Short: "start Wiretrustee Signal Server", + Run: func(cmd *cobra.Command, args []string) { + flag.Parse() + + lis, err := net.Listen("tcp", fmt.Sprintf(":%d", port)) + if err != nil { + log.Fatalf("failed to listen: %v", err) + } + + if err != nil { + log.Fatalf("failed to listen: %v", err) + } + var opts []grpc.ServerOption + grpcServer := grpc.NewServer(opts...) + sProto.RegisterSignalExchangeServer(grpcServer, sig.NewServer()) + log.Printf("started server: localhost:%v", port) + if err := grpcServer.Serve(lis); err != nil { + log.Fatalf("failed to serve: %v", err) + } + + SetupCloseHandler() + }, + } +) + +func init() { + //upCmd.PersistentFlags().IntVar(&port, "port", 10000, "Server port to listen on (e.g. 10000)") + upCmd.PersistentFlags().IntVar(&port, "port", 10000, "Server port to listen on (e.g. 10000)") +} diff --git a/cmd/up.go b/cmd/up.go index 1eea73f5f..ae41c428c 100644 --- a/cmd/up.go +++ b/cmd/up.go @@ -9,9 +9,7 @@ import ( "github.com/wiretrustee/wiretrustee/engine" sig "github.com/wiretrustee/wiretrustee/signal" "os" - "os/signal" "strings" - "syscall" ) const ( @@ -59,20 +57,11 @@ var ( //signalClient.WaitConnected() - SetupCloseHandler(signalClient) + SetupCloseHandler() }, } ) -func SetupCloseHandler(signalClient *sig.Client) { - c := make(chan os.Signal) - signal.Notify(c, os.Interrupt, syscall.SIGTERM) - <-c - fmt.Println("\r- Ctrl+C pressed in Terminal") - signalClient.Close() - os.Exit(0) -} - func init() { //upCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.wiretrustee.yaml)") upCmd.PersistentFlags().StringVar(&config.WgAddr, "address", "", "IP address of a peer in CIDR notation (e.g. 10.30.30.1/24)") diff --git a/signal/signal.go b/signal/signal.go index a6549afe8..7a0351ffd 100644 --- a/signal/signal.go +++ b/signal/signal.go @@ -67,14 +67,6 @@ func (s *SignalExchangeServer) ConnectStream(stream proto.SignalExchange_Connect return stream.Context().Err() } -func copyMessage(msg *proto.Message) *proto.Message { - return &proto.Message{ - Type: msg.Type, - Key: msg.Key, - RemoteKey: msg.RemoteKey, - } -} - // Handles initial Peer connection. // Each connection must provide an ID header. // At this moment the connecting Peer will be registered in the peer.Registry