-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
73 lines (61 loc) · 1.8 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package main
import (
"log"
"os"
"github.com/kubescape/sneeffer/internal/logger"
"github.com/kubescape/sneeffer/internal/validator"
"github.com/kubescape/sneeffer/sneeffer/DB"
"github.com/kubescape/sneeffer/sneeffer/accumulator"
"github.com/kubescape/sneeffer/sneeffer/k8s_watcher"
"github.com/kubescape/sneeffer/sneeffer/vuln"
"github.com/kubescape/sneeffer/internal/config"
)
func waitOnCacheAccumulatorProccessErrorCode(cacheAccumulatorErrorChan chan error) {
err := <-cacheAccumulatorErrorChan
if err != nil {
logger.Print(logger.ERROR, false, "Global Sniffer failed on error %v\n", err)
os.Exit(1)
}
}
func startingOperations() error {
if config.IsRelaventCVEServiceEnabled() {
err := vuln.DownloadVulnDB()
if err != nil {
return err
}
}
err := DB.CreateCRDs()
if err != nil {
return err
}
return nil
}
func main() {
err := config.ParseConfiguration()
if err != nil {
log.Fatalf("error during parsing configuration: %v", err)
}
err = validator.CheckPrerequsits()
if err != nil {
log.Fatalf("error during check prerequisites: %v", err)
}
err = startingOperations()
if err != nil {
log.Fatalf("error during DB initialization: %v", err)
}
cacheAccumulatorErrorChan := make(chan error)
cachAccumulator := accumulator.CreateCacheAccumulator(10)
err = cachAccumulator.StartCacheAccumalator(cacheAccumulatorErrorChan, config.GetSyscallFilter(), false, false)
if err != nil {
log.Fatalf("fail to create cache watcher %v", err)
}
go waitOnCacheAccumulatorProccessErrorCode(cacheAccumulatorErrorChan)
containerWatcher, err := k8s_watcher.CreateContainerWatcher()
if err != nil {
log.Fatalf("fail to create container watcher %v", err)
}
err = containerWatcher.StartWatchingOnNewContainers()
if err != nil {
log.Fatalf("StartWatchingOnNewContainers fail on error %v", err)
}
}