From 0ef67fd69989b20b894fab268c456125b3658e7d Mon Sep 17 00:00:00 2001 From: Samir Patel <48686912+54mir@users.noreply.github.com> Date: Mon, 27 Dec 2021 16:42:13 -0500 Subject: [PATCH] move query logger option to auth --- ctl/server.go | 2 +- server/config.go | 4 +--- server/server.go | 48 +++++++++++++++++++++++++----------------------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/ctl/server.go b/ctl/server.go index 3a4ccf463..2f1f0ee65 100644 --- a/ctl/server.go +++ b/ctl/server.go @@ -21,7 +21,6 @@ func BuildServerFlags(cmd *cobra.Command, srv *server.Command) { flags.StringVar(&srv.Config.AdvertiseGRPC, "advertise-grpc", srv.Config.AdvertiseGRPC, "Address to advertise externally for gRPC.") flags.IntVar(&srv.Config.MaxWritesPerRequest, "max-writes-per-request", srv.Config.MaxWritesPerRequest, "Number of write commands per request.") flags.StringVar(&srv.Config.LogPath, "log-path", srv.Config.LogPath, "Log path") - flags.StringVar(&srv.Config.QueryLogPath , "query-log-path", srv.Config.QueryLogPath, "Path to save user queries") flags.BoolVar(&srv.Config.Verbose, "verbose", srv.Config.Verbose, "Enable verbose logging") flags.Uint64Var(&srv.Config.MaxMapCount, "max-map-count", srv.Config.MaxMapCount, "Limits the maximum number of active mmaps. FeatureBase will fall back to reading files once this is exhausted. Set below your system's vm.max_map_count.") flags.Uint64Var(&srv.Config.MaxFileCount, "max-file-count", srv.Config.MaxFileCount, "Soft limit on the maximum number of fragment files FeatureBase keeps open simultaneously.") @@ -122,5 +121,6 @@ func BuildServerFlags(cmd *cobra.Command, srv *server.Command) { flags.StringVar(&srv.Config.Auth.HashKey, "auth.hash-key", srv.Config.Auth.HashKey, "First Secret for Auth.") flags.StringVar(&srv.Config.Auth.BlockKey, "auth.block-key", srv.Config.Auth.BlockKey, "Second Secret for Auth.") flags.StringVar(&srv.Config.Auth.PermissionsFile, "auth.permissions", srv.Config.Auth.PermissionsFile, "Permissions' file with group authorization.") + flags.StringVar(&srv.Config.Auth.QueryLogPath, "auth.query-log-path", srv.Config.Auth.QueryLogPath, "Path to log user queries") } diff --git a/server/config.go b/server/config.go index df9dafdee..0e86c25d7 100644 --- a/server/config.go +++ b/server/config.go @@ -84,9 +84,6 @@ type Config struct { // LogPath configures where Pilosa will write logs. LogPath string `toml:"log-path"` - // QueryLogPath, security logs - QueryLogPath string `toml:"query-log-path"` - // Verbose toggles verbose logging which can be useful for debugging. Verbose bool `toml:"verbose"` @@ -253,6 +250,7 @@ type Auth struct { HashKey string `toml:"hash-key"` BlockKey string `toml:"block-key"` PermissionsFile string `toml:"permissions"` + QueryLogPath string `toml:"query-log-path"` } // Namespace returns the namespace to use based on the Future flag. diff --git a/server/server.go b/server/server.go index 387a34deb..577cef578 100644 --- a/server/server.go +++ b/server/server.go @@ -69,10 +69,10 @@ type Command struct { // done will be closed when Command.Close() is called done chan struct{} - logOutput io.Writer + logOutput io.Writer querylogOutput io.Writer - logger loggerLogger - querylogger loggerLogger + logger loggerLogger + querylogger loggerLogger Handler pilosa.Handler grpcServer *grpcServer @@ -336,10 +336,6 @@ func (m *Command) SetupServer() error { if err != nil { return errors.Wrap(err, "setting up logger") } - err = m.setupQueryLogger() - if err != nil { - return errors.Wrap(err, "setting up querylogger") - } m.logger.Infof("%s", pilosa.VersionInfo(m.Config.Future.Rename)) @@ -530,6 +526,7 @@ func (m *Command) SetupServer() error { return errors.Wrap(err, "new grpc server") } + var p authz.GroupPermissions if m.Config.Auth.Enable { m.Config.MustValidateAuth() permsFile, err := os.Open(m.Config.Auth.PermissionsFile) @@ -538,7 +535,6 @@ func (m *Command) SetupServer() error { } defer permsFile.Close() - var p authz.GroupPermissions if err = p.ReadPermissionsFile(permsFile); err != nil { return err } @@ -548,6 +544,11 @@ func (m *Command) SetupServer() error { if err != nil { return errors.Wrap(err, "instantiating authN object") } + + err = m.setupQueryLogger() + if err != nil { + return errors.Wrap(err, "setting up querylogger") + } } m.Handler, err = http.NewHandler( @@ -559,7 +560,8 @@ func (m *Command) SetupServer() error { http.OptHandlerListener(m.ln, m.Config.Advertise), http.OptHandlerCloseTimeout(m.closeTimeout), http.OptHandlerMiddleware(m.grpcServer.middleware(m.Config.Handler.AllowedOrigins)), - http.OptHandlerAuth(m.auth), + http.OptHandlerAuthN(m.auth), + http.OptHandlerAuthZ(&p), ) return errors.Wrap(err, "new handler") } @@ -609,13 +611,13 @@ func (m *Command) setupQueryLogger() error { var f *logger.FileWriter var err error - if m.Config.QueryLogPath == "" { - f, err = logger.NewFileWriterMode( "queries/query.log", 600) + if m.Config.Auth.QueryLogPath == "" { + f, err = logger.NewFileWriterMode("queries/query.log", 600) if err != nil { return errors.Wrap(err, "opening file") } } else { - f, err = logger.NewFileWriterMode(m.Config.QueryLogPath , 600) + f, err = logger.NewFileWriterMode(m.Config.Auth.QueryLogPath, 600) if err != nil { return errors.Wrap(err, "opening file") } @@ -624,18 +626,18 @@ func (m *Command) setupQueryLogger() error { m.querylogger = logger.NewStandardLogger(m.querylogOutput) - sighup := make(chan os.Signal, 1) - signal.Notify(sighup, syscall.SIGHUP) - go func() { - for { - // reopen log file on SIGHUP - <-sighup - err = f.Reopen() - if err != nil { - m.querylogger.Infof("reopen: %s\n", err.Error()) - } + sighup := make(chan os.Signal, 1) + signal.Notify(sighup, syscall.SIGHUP) + go func() { + for { + // reopen log file on SIGHUP + <-sighup + err = f.Reopen() + if err != nil { + m.querylogger.Infof("reopen: %s\n", err.Error()) } - }() + } + }() return nil }