Add proper logging
This commit is contained in:
@@ -5,7 +5,6 @@ import (
|
||||
"crypto/tls"
|
||||
"crypto/x509"
|
||||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
@@ -19,6 +18,7 @@ import (
|
||||
"gitea.benny.dog/torjus/ezshare/store"
|
||||
"github.com/google/uuid"
|
||||
"github.com/urfave/cli/v2"
|
||||
"go.uber.org/zap"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/credentials"
|
||||
@@ -29,6 +29,10 @@ func ActionServe(c *cli.Context) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
logger := cfg.Server.GetLogger()
|
||||
serverLogger := logger.Named("SERV")
|
||||
authLogger := logger.Named("AUTH")
|
||||
httpLogger := logger.Named("HTTP")
|
||||
|
||||
// Read certificates
|
||||
srvCertBytes, err := cfg.Server.GRPC.Certs.GetCertBytes()
|
||||
@@ -63,7 +67,7 @@ func ActionServe(c *cli.Context) error {
|
||||
defer userCloseFunc()
|
||||
|
||||
// Create initial admin-user if neccessary
|
||||
if err := initializeUsers(userStore); err != nil {
|
||||
if err := initializeUsers(userStore, serverLogger); err != nil {
|
||||
return fmt.Errorf("error initializing store: %w", err)
|
||||
}
|
||||
|
||||
@@ -99,26 +103,28 @@ func ActionServe(c *cli.Context) error {
|
||||
// Setup file-service
|
||||
grpcFileServer := server.NewGRPCFileServiceServer(s)
|
||||
grpcFileServer.Hostname = cfg.Server.Hostname
|
||||
grpcFileServer.Logger = logger.Named("FILE")
|
||||
if c.IsSet("hostname") {
|
||||
grpcFileServer.Hostname = c.String("hostname")
|
||||
}
|
||||
|
||||
// Setup user-service
|
||||
grpcUserServer := server.NewGRPCUserServiceServer(userStore, certSvc)
|
||||
grpcUserServer.Logger = logger.Named("USER")
|
||||
|
||||
lis, err := net.Listen("tcp", grpcAddr)
|
||||
if err != nil {
|
||||
log.Printf("Unable to setup grpc listener: %s\n", err)
|
||||
serverLogger.Errorw("Unable to setup GRPC listener.", "error", err)
|
||||
rootCancel()
|
||||
}
|
||||
srvCert, err := tls.X509KeyPair(srvCertBytes, srvKeyBytes)
|
||||
if err != nil {
|
||||
log.Printf("Unable load server certs: %s\n", err)
|
||||
serverLogger.Errorw("Unable to load server certs.", "error", err)
|
||||
rootCancel()
|
||||
}
|
||||
certPool := x509.NewCertPool()
|
||||
if !certPool.AppendCertsFromPEM(caCertBytes) {
|
||||
log.Println("Unable to load CA cert")
|
||||
serverLogger.Errorw("Unable to load CA certs.")
|
||||
rootCancel()
|
||||
}
|
||||
tlsConfig := &tls.Config{
|
||||
@@ -130,7 +136,7 @@ func ActionServe(c *cli.Context) error {
|
||||
|
||||
grpcServer := grpc.NewServer(
|
||||
grpc.Creds(creds),
|
||||
grpc.ChainUnaryInterceptor(interceptors.NewAuthInterceptor(userStore)),
|
||||
grpc.ChainUnaryInterceptor(interceptors.NewAuthInterceptor(userStore, authLogger)),
|
||||
)
|
||||
pb.RegisterFileServiceServer(grpcServer, grpcFileServer)
|
||||
pb.RegisterUserServiceServer(grpcServer, grpcUserServer)
|
||||
@@ -141,12 +147,12 @@ func ActionServe(c *cli.Context) error {
|
||||
grpcServer.GracefulStop()
|
||||
}()
|
||||
|
||||
log.Printf("Starting grpc server")
|
||||
serverLogger.Info("Starting GRPC server.")
|
||||
if err = grpcServer.Serve(lis); err != nil {
|
||||
log.Printf("GRPC Shutdown with error: %s\n", err)
|
||||
serverLogger.Warnw("GRPC shutdown with error", "error", err)
|
||||
rootCancel()
|
||||
}
|
||||
log.Println("GRPC Shutdown")
|
||||
serverLogger.Info("GRPC shutdown.")
|
||||
grpcShutdownCancel()
|
||||
}()
|
||||
|
||||
@@ -162,6 +168,7 @@ func ActionServe(c *cli.Context) error {
|
||||
httpAddr = c.String("http-addr")
|
||||
}
|
||||
httpServer := server.NewHTTPSever(s, srvCertBytes, cfg.Server.GRPCEndpoint)
|
||||
httpServer.Logger = httpLogger
|
||||
httpServer.Addr = httpAddr
|
||||
|
||||
// wait for cancel
|
||||
@@ -173,12 +180,12 @@ func ActionServe(c *cli.Context) error {
|
||||
httpServer.Shutdown(timeoutCtx)
|
||||
}()
|
||||
|
||||
log.Printf("Starting http server")
|
||||
serverLogger.Info("Starting HTTP server.")
|
||||
if err := httpServer.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
||||
log.Printf("HTTP Server shutdown with error: %s\n", err)
|
||||
serverLogger.Warnw("HTTP server shutdown with error.", "error", err)
|
||||
rootCancel()
|
||||
}
|
||||
log.Println("HTTP Shutdown")
|
||||
serverLogger.Info("HTTP server shutdown.")
|
||||
httpShutdownCancel()
|
||||
}()
|
||||
|
||||
@@ -187,7 +194,7 @@ func ActionServe(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func initializeUsers(us store.UserStore) error {
|
||||
func initializeUsers(us store.UserStore, logger *zap.SugaredLogger) error {
|
||||
// TODO: Logging
|
||||
userIDs, err := us.ListUsers()
|
||||
if err != nil {
|
||||
@@ -199,7 +206,6 @@ func initializeUsers(us store.UserStore) error {
|
||||
}
|
||||
|
||||
// no users, create initial admin-user
|
||||
log.Printf("No users in store. Creating admin-user.")
|
||||
password := uuid.Must(uuid.NewRandom()).String()
|
||||
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
|
||||
if err != nil {
|
||||
@@ -216,7 +222,7 @@ func initializeUsers(us store.UserStore) error {
|
||||
if err := us.StoreUser(admin); err != nil {
|
||||
return err
|
||||
}
|
||||
log.Printf("user created with id %s:%s", admin.Username, password)
|
||||
logger.Infow("Created admin user.", "username", admin.Username, "password", password)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user