37 lines
771 B
Go
37 lines
771 B
Go
package grpcserver
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"log"
|
|
"net"
|
|
"time"
|
|
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/credentials"
|
|
"google.golang.org/grpc/keepalive"
|
|
|
|
controlpb "relay/proto/control"
|
|
tunnelpb "relay/proto/tunnel"
|
|
)
|
|
|
|
func Serve(addr string, tlsCfg *tls.Config) {
|
|
grpcServer := grpc.NewServer(
|
|
grpc.Creds(credentials.NewTLS(tlsCfg)),
|
|
grpc.KeepaliveParams(keepalive.ServerParameters{
|
|
Time: 30 * time.Second,
|
|
Timeout: 10 * time.Second,
|
|
}),
|
|
)
|
|
|
|
tunnelpb.RegisterTunnelServiceServer(grpcServer, &TunnelServiceImpl{})
|
|
controlpb.RegisterControlServiceServer(grpcServer, &ControlServiceImpl{})
|
|
|
|
ln, err := net.Listen("tcp", addr)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
log.Println("gRPC listening on", addr)
|
|
log.Fatal(grpcServer.Serve(ln))
|
|
}
|