Files
cunicu/cmd/signal.go
Steffen Vogel 410756f11c windows portability fixes
Signed-off-by: Steffen Vogel <post@steffenvogel.de>
2022-08-04 00:20:43 +02:00

63 lines
1.2 KiB
Go

package main
import (
"net"
"github.com/spf13/cobra"
"go.uber.org/zap"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
grpcx "riasc.eu/wice/pkg/signaling/grpc"
"riasc.eu/wice/pkg/util"
)
var (
signalCmd = &cobra.Command{
Use: "signal",
Short: "Start gRPC signaling server",
Run: signal,
}
listenAddress string
secure = false
)
func init() {
pf := signalCmd.PersistentFlags()
pf.StringVarP(&listenAddress, "listen", "L", ":8080", "listen address")
pf.BoolVarP(&secure, "secure", "S", false, "listen with TLS")
RootCmd.AddCommand(signalCmd)
}
func signal(cmd *cobra.Command, args []string) {
l, err := net.Listen("tcp", listenAddress)
if err != nil {
logger.Fatal("Failed to listen", zap.Error(err))
}
// Disable TLS
opts := []grpc.ServerOption{}
if !secure {
opts = append(opts, grpc.Creds(insecure.NewCredentials()))
}
svr := grpcx.NewServer(opts...)
go func() {
for sig := range util.SetupSignals() {
switch sig {
default:
svr.Stop()
}
}
}()
logger.Info("Starting gRPC signaling server", zap.String("address", listenAddress))
if err := svr.Serve(l); err != nil {
logger.Fatal("Failed to start gRPC server", zap.Error(err))
}
}