diff options
| author | Paul Buetow <pbuetow@mimecast.com> | 2020-06-17 12:59:15 +0100 |
|---|---|---|
| committer | Paul Buetow <pbuetow@mimecast.com> | 2020-06-17 12:59:15 +0100 |
| commit | b7b528277014879e436ae7fe1f3851024938fbd3 (patch) | |
| tree | 8be1cc0ecf3a25c390c9a7ad97afb5aa52a6c512 /internal/server | |
| parent | 4da9ed0f4ded049e28607cc7ea78c8b091ca721b (diff) | |
initial log monitoring support
Diffstat (limited to 'internal/server')
| -rw-r--r-- | internal/server/scheduler.go | 22 | ||||
| -rw-r--r-- | internal/server/server.go | 14 |
2 files changed, 10 insertions, 26 deletions
diff --git a/internal/server/scheduler.go b/internal/server/scheduler.go index db49d1b..8b073a6 100644 --- a/internal/server/scheduler.go +++ b/internal/server/scheduler.go @@ -16,9 +16,6 @@ import ( gossh "golang.org/x/crypto/ssh" ) -const authLength = 64 -const authCharset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@$%^&*()_+[]" - type scheduler struct { } @@ -79,7 +76,7 @@ func (s *scheduler) runJobs(ctx context.Context) { ServersStr: servers, What: files, Mode: omode.MapClient, - UserName: config.ScheduleUser, + UserName: config.BackgroundUser, } args.SSHAuthMethods = append(args.SSHAuthMethods, gossh.Password(scheduled.Name)) @@ -111,20 +108,3 @@ func (s *scheduler) runJobs(ctx context.Context) { logger.Info(logMessage) } } - -func fillDates(str string) string { - yyyesterday := time.Now().Add(3 * -24 * time.Hour).Format("20060102") - str = strings.ReplaceAll(str, "$yyyesterday", yyyesterday) - - yyesterday := time.Now().Add(2 * -24 * time.Hour).Format("20060102") - str = strings.ReplaceAll(str, "$yyesterday", yyesterday) - - yesterday := time.Now().Add(1 * -24 * time.Hour).Format("20060102") - str = strings.ReplaceAll(str, "$yesterday", yesterday) - - today := time.Now().Format("20060102") - str = strings.ReplaceAll(str, "$today", today) - - tomorrow := time.Now().Add(1 * 24 * time.Hour).Format("20060102") - return strings.ReplaceAll(str, "$tomorrow", tomorrow) -} diff --git a/internal/server/server.go b/internal/server/server.go index 8e791c8..0377598 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -32,6 +32,8 @@ type Server struct { tailLimiter chan struct{} // To run scheduled tasks (if configured) sched *scheduler + // Mointor log files for pattern (if configured) + mon *monitoring // Wait counter, e.g. there might be still subprocesses (forked by drun) to be killed. shutdownWaitFor chan struct{} // Background jobs @@ -48,6 +50,7 @@ func New() *Server { tailLimiter: make(chan struct{}, config.Server.MaxConcurrentTails), shutdownWaitFor: make(chan struct{}, 1000), sched: newScheduler(), + mon: newMonitoring(), background: background.New(), } @@ -77,6 +80,7 @@ func (s *Server) Start(ctx context.Context) int { go s.stats.start(ctx) go s.sched.start(ctx) + go s.mon.start(ctx) go s.listenerLoop(ctx, listener) select { @@ -246,16 +250,16 @@ func (s *Server) backgroundUserCallback(c gossh.ConnMetadata, authPayload []byte return nil, nil } - if user.Name == config.ScheduleUser && s.schedueleUserCanHaveSSHSession(c.RemoteAddr().String(), user, authInfo) { - logger.Debug(user, "Granting SSH connection to schedule user") + if user.Name == config.BackgroundUser && s.backgroundJobUserCanHaveSSHSession(c.RemoteAddr().String(), user, authInfo) { + logger.Debug(user, "Granting SSH connection to background user") return nil, nil } return nil, fmt.Errorf("user %s not authorized", user) } -func (s *Server) schedueleUserCanHaveSSHSession(addr string, user *user.User, jobName string) bool { - logger.Debug("schedueleUserCanHaveSSHSession", user, jobName) +func (s *Server) backgroundJobUserCanHaveSSHSession(addr string, user *user.User, jobName string) bool { + logger.Debug("backgroundJobUserCanHaveSSHSession", user, jobName) splitted := strings.Split(addr, ":") ip := splitted[0] @@ -271,7 +275,7 @@ func (s *Server) schedueleUserCanHaveSSHSession(addr string, user *user.User, jo } for _, myIP := range myIPs { - logger.Debug("schedueleUserCanHaveSSHSession", "Comparing IP addresses", ip, myIP.String()) + logger.Debug("backgroundJobUserCanHaveSSHSession", "Comparing IP addresses", ip, myIP.String()) if ip == myIP.String() { return true } |
