in cmd/server/main.go [45:107]
func main() {
flag.Parse()
// Listen for connections on the gRPC service and HTTP proxy ports.
grpcLis, err := net.Listen("tcp", fmt.Sprintf(":%d", *grpcPort))
if err != nil {
glog.Fatalf("failed to listen: %v\n", err)
}
httpLis, err := net.Listen("tcp", fmt.Sprintf(":%d", *httpPort))
if err != nil {
glog.Fatalf("failed to listen: %v\n", err)
}
grpcServer := grpc.NewServer()
reflection.Register(grpcServer)
// Register a new SecureSessionService instance to handle RPCs.
var tlsVersion uint16
tlsVersion = tls.VersionTLS13
if *useTLS12 {
tlsVersion = tls.VersionTLS12
}
serv, _ := server.NewSecureSessionService(tlsVersion, *audience)
ssgrpc.RegisterConfidentialEkmSessionEstablishmentServiceServer(grpcServer, serv)
cwgrpc.RegisterConfidentialWrapUnwrapServiceServer(grpcServer, serv)
httpService, err := server.NewSecureSessionHTTPService(grpcLis.Addr().String(), "")
if err != nil {
glog.Fatalf("failed to create HTTP service: %v\n", err)
}
httpServ := &http.Server{
Addr: httpLis.Addr().String(),
Handler: http.HandlerFunc(httpService.Handler),
}
// Use signal library to gracefully shut down servers on SIGINT/SIGTERM.
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
// Start gRPC server.
go func() {
fmt.Printf("Starting gRPC server on %v\n", grpcLis.Addr().String())
grpcServer.Serve(grpcLis)
}()
// Start HTTP proxy.
go func() {
fmt.Printf("Starting HTTP server on %v\n", httpLis.Addr().String())
httpServ.Serve(httpLis)
}()
// Wait for a SIGINT or SIGTERM, then shut down severs.
sig := <-sigs
fmt.Printf("Received %v signal\n", sig)
fmt.Println("Shutting down servers...")
grpcServer.Stop()
httpServ.Close()
}