Skip to content

Commit a9cc47b

Browse files
Kbayeroylladaosmonteromjabascal10
authored
Bugfix/10.8.0/macos (#1168)
* feat: Improve installer to add RHELD support * fix: Update windows ARM collector * wip * feat: Add SELinux configuration for RedHat systems * fix interface agent problem * add bad gateway page * complete macos agent * feat(module-integration): add SOC AI model selection field * feat(module-integration): add SOC AI model selection field * feat(module-integration): add SOC AI model selection field * feat(module-integration): update MacOS guide --------- Co-authored-by: Yadian Llada Lopez <[email protected]> Co-authored-by: Osmany Montero <[email protected]> Co-authored-by: Manuel Abascal <[email protected]>
1 parent 4fdc38a commit a9cc47b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1107
-387
lines changed

agent/agent/incident_response.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ func commandProcessor(path string, stream AgentService_AgentStreamClient, cnf *c
119119
switch runtime.GOOS {
120120
case "windows":
121121
result, errB = utils.ExecuteWithResult("cmd.exe", path, "/C", commandPair[0])
122-
case "linux":
122+
case "linux", "darwin":
123123
result, errB = utils.ExecuteWithResult("sh", path, "-c", commandPair[0])
124124
default:
125125
utils.Logger.Fatal("unsupported operating system: %s", runtime.GOOS)

agent/collectors/collectors.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ type CollectorConfig struct {
1313

1414
type Collector interface {
1515
Install() error
16-
SendSystemLogs()
16+
SendLogs()
1717
Uninstall() error
1818
}
1919

@@ -35,7 +35,7 @@ func InstallCollectors() error {
3535
func LogsReader() {
3636
collectors := getCollectorsInstances()
3737
for _, collector := range collectors {
38-
go collector.SendSystemLogs()
38+
go collector.SendLogs()
3939
}
4040
}
4141

agent/collectors/filebeat_amd64.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,20 +104,24 @@ func (f Filebeat) Install() error {
104104
return nil
105105
}
106106

107-
func (f Filebeat) SendSystemLogs() {
107+
func (f Filebeat) SendLogs() {
108108
logLinesChan := make(chan []string)
109109
path := utils.GetMyPath()
110110
filebLogPath := filepath.Join(path, "beats", "filebeat", "logs")
111111

112112
parser := parser.GetParser("beats")
113113

114114
go utils.WatchFolder("modulescollector", filebLogPath, logLinesChan, config.BatchCapacity)
115-
for logLine := range logLinesChan {
115+
116+
for {
117+
logLine := <-logLinesChan
118+
116119
beatsData, err := parser.ProcessData(logLine)
117120
if err != nil {
118121
utils.Logger.ErrorF("error processing beats data: %v", err)
119122
continue
120123
}
124+
121125
for typ, logB := range beatsData {
122126
logservice.LogQueue <- logservice.LogPipe{
123127
Src: typ,

agent/collectors/macos_arm64.go

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
//go:build darwin && arm64
2+
// +build darwin,arm64
3+
4+
package collectors
5+
6+
import (
7+
"bufio"
8+
"os/exec"
9+
"path/filepath"
10+
11+
"github.com/threatwinds/validations"
12+
"github.com/utmstack/UTMStack/agent/config"
13+
"github.com/utmstack/UTMStack/agent/logservice"
14+
"github.com/utmstack/UTMStack/agent/utils"
15+
)
16+
17+
type Darwin struct{}
18+
19+
func (d Darwin) Install() error {
20+
return nil
21+
}
22+
23+
func getCollectorsInstances() []Collector {
24+
var collectors []Collector
25+
collectors = append(collectors, Darwin{})
26+
return collectors
27+
}
28+
29+
func (d Darwin) SendLogs() {
30+
path := utils.GetMyPath()
31+
collectorPath := filepath.Join(path, "utmstack-collector-mac")
32+
33+
cmd := exec.Command(collectorPath)
34+
35+
stdout, err := cmd.StdoutPipe()
36+
if err != nil {
37+
_ = utils.Logger.ErrorF("error creating stdout pipe: %v", err)
38+
return
39+
}
40+
41+
stderr, err := cmd.StderrPipe()
42+
if err != nil {
43+
_ = utils.Logger.ErrorF("error creating stderr pipe: %v", err)
44+
return
45+
}
46+
47+
if err := cmd.Start(); err != nil {
48+
_ = utils.Logger.ErrorF("error starting macOS collector: %v", err)
49+
return
50+
}
51+
52+
go func() {
53+
scanner := bufio.NewScanner(stdout)
54+
for scanner.Scan() {
55+
logLine := scanner.Text()
56+
57+
utils.Logger.LogF(100, "output: %s", logLine)
58+
59+
validatedLog, _, err := validations.ValidateString(logLine, false)
60+
if err != nil {
61+
utils.Logger.ErrorF("error validating log: %s: %v", logLine, err)
62+
continue
63+
}
64+
65+
logservice.LogQueue <- logservice.LogPipe{
66+
Src: string(config.DataTypeMacOs),
67+
Logs: []string{validatedLog},
68+
}
69+
}
70+
71+
if err := scanner.Err(); err != nil {
72+
_ = utils.Logger.ErrorF("error reading stdout: %v", err)
73+
}
74+
}()
75+
76+
go func() {
77+
scanner := bufio.NewScanner(stderr)
78+
for scanner.Scan() {
79+
errLine := scanner.Text()
80+
_ = utils.Logger.ErrorF("collector error: %s", errLine)
81+
}
82+
83+
if err := scanner.Err(); err != nil {
84+
_ = utils.Logger.ErrorF("error reading stderr: %v", err)
85+
}
86+
}()
87+
88+
if err := cmd.Wait(); err != nil {
89+
_ = utils.Logger.ErrorF("macOS collector process ended with error: %v", err)
90+
}
91+
}
92+
93+
func (d Darwin) Uninstall() error {
94+
return nil
95+
}

agent/collectors/windows_amd64.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,14 @@ func (w Windows) Install() error {
7070
return nil
7171
}
7272

73-
func (w Windows) SendSystemLogs() {
73+
func (w Windows) SendLogs() {
7474
logLinesChan := make(chan []string)
7575
path := utils.GetMyPath()
7676
winbLogPath := filepath.Join(path, "beats", "winlogbeat", "logs")
7777

7878
go utils.WatchFolder("windowscollector", winbLogPath, logLinesChan, config.BatchCapacity)
79-
for logLine := range logLinesChan {
79+
for {
80+
logLine := <-logLinesChan
8081
validatedLogs := []string{}
8182
for _, log := range logLine {
8283
validatedLog, _, err := validations.ValidateString(log, false)

0 commit comments

Comments
 (0)