Skip to content

Commit

Permalink
configure network type via grpc flags
Browse files Browse the repository at this point in the history
this also improves the logging on grpc and http startup
  • Loading branch information
ecordell committed Nov 9, 2021
1 parent 94a276f commit 73697c4
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions cobrautil.go
Expand Up @@ -211,6 +211,7 @@ func RegisterGrpcServerFlags(flags *pflag.FlagSet, flagPrefix, serviceName, defa
defaultAddr = stringz.DefaultEmpty(defaultAddr, ":50051")

flags.String(flagPrefix+"-addr", defaultAddr, "address to listen on to serve "+serviceName)
flags.String(flagPrefix+"-network", "tcp", "network type to serve "+serviceName+ " (\"tcp\", \"tcp4\", \"tcp6\", \"unix\", \"unixpacket\")")
flags.String(flagPrefix+"-tls-cert-path", "", "local path to the TLS certificate used to serve "+serviceName)
flags.String(flagPrefix+"-tls-key-path", "", "local path to the TLS key used to serve "+serviceName)
flags.Duration(flagPrefix+"-max-conn-age", 30*time.Second, "how long a connection serving "+serviceName+" should be able to live")
Expand Down Expand Up @@ -250,19 +251,23 @@ func GrpcServerFromFlags(cmd *cobra.Command, flagPrefix string, opts ...grpc.Ser

// GrpcListenFromFlags listens on an gRPC server using the configuration stored
// in the cobra command that was registered with RegisterGrpcServerFlags.
func GrpcListenFromFlags(cmd *cobra.Command, flagPrefix string, srv *grpc.Server) error {
func GrpcListenFromFlags(cmd *cobra.Command, flagPrefix string, srv *grpc.Server, level zerolog.Level) error {
flagPrefix = stringz.DefaultEmpty(flagPrefix, "grpc")

if !MustGetBool(cmd, flagPrefix+"-enabled") {
return nil
}

network := MustGetString(cmd, flagPrefix+"-network")
addr := MustGetStringExpanded(cmd, flagPrefix+"-addr")
l, err := net.Listen("tcp", addr)
l, err := net.Listen(network, addr)
if err != nil {
return fmt.Errorf("failed to listen on addr for gRPC server: %w", err)
}

log.WithLevel(level).Str("addr", addr).Str("network", network).
Str("prefix", flagPrefix).Msg("grpc server started listening")

if err := srv.Serve(l); err != nil {
return fmt.Errorf("failed to serve gRPC: %w", err)
}
Expand All @@ -288,7 +293,7 @@ func RegisterHttpServerFlags(flags *pflag.FlagSet, flagPrefix, serviceName, defa
}

// HttpServerFromFlags creates an *http.Server as configured by the flags from
// RegisterGrpcServerFlags().
// RegisterHttpServerFlags().
func HttpServerFromFlags(cmd *cobra.Command, flagPrefix string) *http.Server {
flagPrefix = stringz.DefaultEmpty(flagPrefix, "http")
return &http.Server{
Expand All @@ -298,7 +303,7 @@ func HttpServerFromFlags(cmd *cobra.Command, flagPrefix string) *http.Server {

// HttpListenFromFlags listens on an HTTP server using the configuration stored
// in the cobra command that was registered with RegisterHttpServerFlags.
func HttpListenFromFlags(cmd *cobra.Command, flagPrefix string, srv *http.Server) error {
func HttpListenFromFlags(cmd *cobra.Command, flagPrefix string, srv *http.Server, level zerolog.Level) error {
if !MustGetBool(cmd, flagPrefix+"-enabled") {
return nil
}
Expand All @@ -308,12 +313,14 @@ func HttpListenFromFlags(cmd *cobra.Command, flagPrefix string, srv *http.Server

switch {
case certPath == "" && keyPath == "":
log.Warn().Str("prefix", flagPrefix).Msg("http server serving plaintext")
log.Warn().Str("addr", srv.Addr).Str("prefix", flagPrefix).Msg("http server serving plaintext")

if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
return fmt.Errorf("failed while serving http: %w", err)
}
return nil
case certPath != "" && keyPath != "":
log.WithLevel(level).Str("addr", srv.Addr).Str("prefix", flagPrefix).Msg("https server started serving")
if err := srv.ListenAndServeTLS(certPath, keyPath); err != nil && err != http.ErrServerClosed {
return fmt.Errorf("failed while serving https: %w", err)
}
Expand Down

0 comments on commit 73697c4

Please sign in to comment.