mirror of
https://codeberg.org/cunicu/cunicu.git
synced 2025-10-05 08:47:03 +08:00
63 lines
1.2 KiB
Go
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))
|
|
}
|
|
}
|