summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <35781042+pbuetow@users.noreply.github.com>2020-12-29 09:48:56 +0000
committerGitHub <noreply@github.com>2020-12-29 09:48:56 +0000
commit0fe3c8708634cc59d61bf47bd909ef0111f0d56a (patch)
treec9f0dfa884927079de309b68c48224f4b0f00d0d /internal
parent495e9f38220a6d448b15882a235e7a9c21f21d18 (diff)
parent0099a7ab9e1d28300c69c3b50b4ebe1cde9a8cbc (diff)
Merge pull request #20 from snonux/develop
Make CGo dependencies optional (e.g. Linux ACL support)
Diffstat (limited to 'internal')
-rw-r--r--internal/clients/handlers/withcancel.go24
-rw-r--r--internal/io/fs/permissions/permission.go2
-rw-r--r--internal/io/fs/permissions/permission_linuxacl.c (renamed from internal/io/fs/permissions/permission_linux.c)4
-rw-r--r--internal/io/fs/permissions/permission_linuxacl.go (renamed from internal/io/fs/permissions/permission_linux.go)4
-rw-r--r--internal/io/fs/permissions/permission_linuxacl.h (renamed from internal/io/fs/permissions/permission_linux.h)2
-rw-r--r--internal/io/fs/permissions/permission_test.go2
-rw-r--r--internal/server/background/background.go126
7 files changed, 10 insertions, 154 deletions
diff --git a/internal/clients/handlers/withcancel.go b/internal/clients/handlers/withcancel.go
deleted file mode 100644
index 7c9cf4e..0000000
--- a/internal/clients/handlers/withcancel.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package handlers
-
-import "context"
-
-type withCancel struct {
- ctx context.Context
- done chan struct{}
-}
-
-// WithCancel sets and returns the context used.
-func (w *withCancel) WithCancel(ctx context.Context) (context.Context, context.CancelFunc) {
- cancelCtx, cancel := context.WithCancel(ctx)
- w.ctx = cancelCtx
-
- return cancelCtx, cancel
-}
-
-func (w *withCancel) Done() <-chan struct{} {
- return w.done
-}
-
-func (w *withCancel) shutdown() {
- close(w.done)
-}
diff --git a/internal/io/fs/permissions/permission.go b/internal/io/fs/permissions/permission.go
index 0ed4f17..cc5dd9b 100644
--- a/internal/io/fs/permissions/permission.go
+++ b/internal/io/fs/permissions/permission.go
@@ -1,4 +1,4 @@
-// +build !linux
+// +build !linuxacl
package permissions
diff --git a/internal/io/fs/permissions/permission_linux.c b/internal/io/fs/permissions/permission_linuxacl.c
index cd10525..86b1185 100644
--- a/internal/io/fs/permissions/permission_linux.c
+++ b/internal/io/fs/permissions/permission_linuxacl.c
@@ -1,4 +1,6 @@
-#include "permission_linux.h"
+// +build linuxacl
+
+#include "permission_linuxacl.h"
#ifdef DEBUG
void debug_print_checker(struct permission_checker *pc) {
diff --git a/internal/io/fs/permissions/permission_linux.go b/internal/io/fs/permissions/permission_linuxacl.go
index bbc039b..7d2d7ca 100644
--- a/internal/io/fs/permissions/permission_linux.go
+++ b/internal/io/fs/permissions/permission_linuxacl.go
@@ -1,7 +1,9 @@
+// +build linuxacl
+
package permissions
/*
-#include "permission_linux.h"
+#include "permission_linuxacl.h"
#cgo LDFLAGS: -L. -lacl
*/
import "C"
diff --git a/internal/io/fs/permissions/permission_linux.h b/internal/io/fs/permissions/permission_linuxacl.h
index a2c266e..52dadcf 100644
--- a/internal/io/fs/permissions/permission_linux.h
+++ b/internal/io/fs/permissions/permission_linuxacl.h
@@ -1,3 +1,5 @@
+// +build linuxacl
+
#ifndef PERMISSION_LINUX_H
#define PERMISSION_LINUX_H
diff --git a/internal/io/fs/permissions/permission_test.go b/internal/io/fs/permissions/permission_test.go
index d415ac2..c0ef038 100644
--- a/internal/io/fs/permissions/permission_test.go
+++ b/internal/io/fs/permissions/permission_test.go
@@ -1,4 +1,4 @@
-// +build linux
+// +build linuxacl
package permissions
diff --git a/internal/server/background/background.go b/internal/server/background/background.go
deleted file mode 100644
index 3907448..0000000
--- a/internal/server/background/background.go
+++ /dev/null
@@ -1,126 +0,0 @@
-package background
-
-import (
- "context"
- "errors"
- "fmt"
- "strings"
- "sync"
-
- "github.com/mimecast/dtail/internal/io/logger"
-)
-
-type job struct {
- cancel context.CancelFunc
- wg *sync.WaitGroup
-}
-
-// Background specifies a job or command run in background on server side.
-// This does not require an active DTail client SSH connection/session.
-type Background struct {
- mutex *sync.Mutex
- jobs map[string]job
-}
-
-// New returns a new background manager.
-func New() Background {
- return Background{
- jobs: make(map[string]job),
- mutex: &sync.Mutex{},
- }
-}
-
-// Add a background job.
-func (b Background) Add(userName, jobName string, cancel context.CancelFunc, wg *sync.WaitGroup) error {
- key := b.key(userName, jobName)
- logger.Debug("background", "Add", key)
-
- b.mutex.Lock()
- defer b.mutex.Unlock()
-
- if _, ok := b.jobs[key]; ok {
- return errors.New("job already exists")
- }
-
- b.jobs[key] = job{cancel, wg}
-
- // Clean up background job database.
- go func() {
- wg.Wait()
- b.cancel(key)
- }()
-
- return nil
-}
-
-// Cancel a background job.
-func (b Background) Cancel(userName, jobName string) error {
- key := b.key(userName, jobName)
- logger.Debug("background", "Cancel", key)
-
- return b.cancel(key)
-}
-
-func (b Background) cancel(key string) error {
- job, ok := b.get(key)
- logger.Debug("background", "cancel", key, job, ok)
-
- if !ok {
- return errors.New("no job to cancel")
- }
-
- logger.Debug("background", "cancel", "run job.cancel()")
- job.cancel()
- logger.Debug("background", "cancel", "run job.wg.Wait()")
- job.wg.Wait()
- logger.Debug("background", "cancel", "run b.delete(key)")
- b.delete(key)
-
- return nil
-}
-
-// ListJobsC returns a channel listing all jobs of the given user.
-func (b Background) ListJobsC(userName string) <-chan string {
- logger.Debug("background", "ListJobC", userName)
-
- ch := make(chan string)
-
- go func() {
- defer close(ch)
-
- b.mutex.Lock()
- defer b.mutex.Unlock()
-
- for k := range b.jobs {
- logger.Debug("ListJobsC", k, userName)
- if strings.HasPrefix(k, fmt.Sprintf("%s.", userName)) {
- ch <- k
- }
- }
- }()
-
- return ch
-}
-
-func (b Background) get(key string) (job, bool) {
- logger.Debug("background", "get", key)
-
- b.mutex.Lock()
- defer b.mutex.Unlock()
-
- job, ok := b.jobs[key]
- return job, ok
-}
-
-func (b Background) delete(key string) {
- logger.Debug("background", "delete", key)
-
- b.mutex.Lock()
- defer b.mutex.Unlock()
-
- delete(b.jobs, key)
-}
-
-func (Background) key(userName, jobName string) string {
- return fmt.Sprintf("%s.%s", userName, jobName)
-}