summaryrefslogtreecommitdiff
path: root/internal/server
diff options
context:
space:
mode:
authorPaul Buetow <pbuetow@mimecast.com>2020-06-17 12:59:15 +0100
committerPaul Buetow <pbuetow@mimecast.com>2020-06-17 12:59:15 +0100
commitb7b528277014879e436ae7fe1f3851024938fbd3 (patch)
tree8be1cc0ecf3a25c390c9a7ad97afb5aa52a6c512 /internal/server
parent4da9ed0f4ded049e28607cc7ea78c8b091ca721b (diff)
initial log monitoring support
Diffstat (limited to 'internal/server')
-rw-r--r--internal/server/scheduler.go22
-rw-r--r--internal/server/server.go14
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
}