Skip to content

Commit 69daeeb

Browse files
KbayerojavjodarylladaJocLRojas
authored
Bugfix/10.6.2/update dependencies (#1098)
* feature: correlation offline mode to avoid rules update * integrate dependencies from agent manager * Add connection checker utility for AWS modules * Add connection checker utility for Bitdefender modules * Change fatal logging to error for connection failures in AWS and Bitdefender modules * add timeout * Add connection checker utility for office 365 modules. * Add connection checker utility for sophos module. * Include arm64 agents * update dependencies * update CI/CD pipelines * remove arm builds * fix message when there is no command output * update version and changelog * Update dependencies * add connection mode * include agent debugger, remove mTLS and fix module names * add arm64 icons * Update changelog --------- Co-authored-by: Jose Angel Sanchez Velazquez <sanchezvelazquezjoseangel@gmail.com> Co-authored-by: Yadian Llada Lopez <yadian.llada@gmail.com> Co-authored-by: JocLRojas <joc.l.rojas02@gmail.com>
1 parent 93ba849 commit 69daeeb

25 files changed

+229
-260
lines changed

.github/workflows/principal-multi-env.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ jobs:
5454
$env:GOARCH = "amd64"
5555
go build -o utmstack_agent_service.exe -v .
5656
signtool sign /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 /f "${{ vars.SIGN_CERT }}" /csp "eToken Base Cryptographic Provider" /k "[{{${{ secrets.SIGN_KEY }}}}]=${{ secrets.SIGN_CONTAINER }}" "utmstack_agent_service.exe"
57-
# $env:GOARCH = "arm64"
58-
# go build -o utmstack_agent_service_arm64.exe -v .
59-
# signtool sign /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 /f "${{ vars.SIGN_CERT }}" /csp "eToken Base Cryptographic Provider" /k "[{{${{ secrets.SIGN_KEY }}}}]=${{ secrets.SIGN_CONTAINER }}" "utmstack_agent_service_arm64.exe"
57+
$env:GOARCH = "arm64"
58+
go build -o utmstack_agent_service_arm64.exe -v .
59+
signtool sign /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 /f "${{ vars.SIGN_CERT }}" /csp "eToken Base Cryptographic Provider" /k "[{{${{ secrets.SIGN_KEY }}}}]=${{ secrets.SIGN_CONTAINER }}" "utmstack_agent_service_arm64.exe"
6060
6161
echo "Agent build completed"
6262
@@ -74,7 +74,7 @@ jobs:
7474
Copy-Item -Path "${{ github.workspace }}/agent/utmstack_agent_service" -Destination "./dependencies/agent/"
7575
# Copy-Item -Path "${{ github.workspace }}/agent/utmstack_agent_service_arm64" -Destination "./dependencies/agent/"
7676
Copy-Item -Path "${{ github.workspace }}/agent/utmstack_agent_service.exe" -Destination "./dependencies/agent/"
77-
# Copy-Item -Path "${{ github.workspace }}/agent/utmstack_agent_service_arm64.exe" -Destination "./dependencies/agent/"
77+
Copy-Item -Path "${{ github.workspace }}/agent/utmstack_agent_service_arm64.exe" -Destination "./dependencies/agent/"
7878
Copy-Item -Path "${{ github.workspace }}/agent/version.json" -Destination "./dependencies/agent/"
7979
8080
docker build -t ghcr.io/utmstack/utmstack/agent-manager:${{ needs.setup_deployment.outputs.env_version }} .

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# UTMStack 10.6.3 Release Notes
1+
# UTMStack 10.7.0 Release Notes
22
## New Features and Improvements
33
- **Agent & Collector Dependencies**: agents and collectors now fetch their dependencies from the **agent-manager**, improving consistency and centralizing dependency management.
44

@@ -7,3 +7,9 @@
77
- **Agent Service Cleanup**: removed unnecessary services to streamline the system and reduce overhead.
88

99
- **Error Recovery**: enhanced the agent's ability to recover from certain data streaming errors when interacting with the agent-manager, improving stability and fault tolerance.
10+
11+
- **Debug Mode for Agents**: Added a debug mode for agents, allowing better troubleshooting and logging for debugging purposes.
12+
13+
- **Certificate Verification Improvements**: Improved certificate verification in agents to enhance security and prevent connection issues.
14+
15+
- **Windows ARM64 Agent Support**: Added support for a Windows ARM64 agent, expanding compatibility to more architectures.

agent/agent/incident_response.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ func IncidentResponseStream(cnf *config.Config, ctx context.Context) {
3535
if !connErrMsgWritten {
3636
utils.Logger.ErrorF("failed to start AgentStream: %v", err)
3737
connErrMsgWritten = true
38+
} else {
39+
utils.Logger.LogF(100, "failed to start AgentStream: %v", err)
3840
}
3941
time.Sleep(timeToSleep)
4042
continue
@@ -46,6 +48,7 @@ func IncidentResponseStream(cnf *config.Config, ctx context.Context) {
4648
in, err := stream.Recv()
4749
if err != nil {
4850
if strings.Contains(err.Error(), "EOF") {
51+
utils.Logger.LogF(100, "error receiving command from server: %v", err)
4952
time.Sleep(timeToSleep)
5053
break
5154
}
@@ -54,13 +57,17 @@ func IncidentResponseStream(cnf *config.Config, ctx context.Context) {
5457
if !errorLogged {
5558
utils.Logger.ErrorF("error receiving command from server: %v", err)
5659
errorLogged = true
60+
} else {
61+
utils.Logger.LogF(100, "error receiving command from server: %v", err)
5762
}
5863
time.Sleep(timeToSleep)
5964
break
6065
} else {
6166
if !errorLogged {
6267
utils.Logger.ErrorF("error receiving command from server: %v", err)
6368
errorLogged = true
69+
} else {
70+
utils.Logger.LogF(100, "error receiving command from server: %v", err)
6471
}
6572
time.Sleep(timeToSleep)
6673
continue
@@ -72,6 +79,7 @@ func IncidentResponseStream(cnf *config.Config, ctx context.Context) {
7279
err = commandProcessor(path, stream, cnf, []string{msg.Command.Command, in.GetCommand().CmdId})
7380
if err != nil {
7481
if strings.Contains(err.Error(), "EOF") {
82+
utils.Logger.LogF(100, "error sending result to server: %v", err)
7583
time.Sleep(timeToSleep)
7684
break
7785
}
@@ -80,13 +88,17 @@ func IncidentResponseStream(cnf *config.Config, ctx context.Context) {
8088
if !errorLogged {
8189
utils.Logger.ErrorF("error sending result to server: %v", err)
8290
errorLogged = true
91+
} else {
92+
utils.Logger.LogF(100, "error sending result to server: %v", err)
8393
}
8494
time.Sleep(timeToSleep)
8595
break
8696
} else {
8797
if !errorLogged {
8898
utils.Logger.ErrorF("error sending result to server: %v", err)
8999
errorLogged = true
100+
} else {
101+
utils.Logger.LogF(100, "error sending result to server: %v", err)
90102
}
91103
time.Sleep(timeToSleep)
92104
continue
@@ -102,7 +114,7 @@ func commandProcessor(path string, stream AgentService_AgentStreamClient, cnf *c
102114
var result string
103115
var errB bool
104116

105-
utils.Logger.Info("Received command: %s", commandPair[0])
117+
utils.Logger.LogF(100, "Received command: %s", commandPair[0])
106118

107119
switch runtime.GOOS {
108120
case "windows":
@@ -116,7 +128,7 @@ func commandProcessor(path string, stream AgentService_AgentStreamClient, cnf *c
116128
if errB {
117129
utils.Logger.ErrorF("error executing command %s: %s", commandPair[0], result)
118130
} else {
119-
utils.Logger.Info("Result when executing the command %s: %s", commandPair[0], result)
131+
utils.Logger.LogF(100, "Result when executing the command %s: %s", commandPair[0], result)
120132
}
121133

122134
if err := stream.Send(&BidirectionalStream{
@@ -126,7 +138,7 @@ func commandProcessor(path string, stream AgentService_AgentStreamClient, cnf *c
126138
}); err != nil {
127139
return err
128140
} else {
129-
utils.Logger.Info("Result sent to server successfully!!!")
141+
utils.Logger.LogF(100, "Result sent to server successfully!!!")
130142
}
131143
return nil
132144
}

agent/agent/ping_imp.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ func StartPing(cnf *config.Config, ctx context.Context) {
2626
if !connErrMsgWritten {
2727
utils.Logger.ErrorF("error connecting to Agent Manager: %v", err)
2828
connErrMsgWritten = true
29+
} else {
30+
utils.Logger.LogF(100, "error connecting to Agent Manager: %v", err)
2931
}
3032
time.Sleep(timeToSleep)
3133
continue
@@ -37,11 +39,14 @@ func StartPing(cnf *config.Config, ctx context.Context) {
3739
if !connErrMsgWritten {
3840
utils.Logger.ErrorF("failed to start Ping Stream: %v", err)
3941
connErrMsgWritten = true
42+
} else {
43+
utils.Logger.LogF(100, "failed to start Ping Stream: %v", err)
4044
}
4145
time.Sleep(timeToSleep)
4246
continue
4347
}
4448

49+
utils.Logger.LogF(100, "Ping Stream started")
4550
connErrMsgWritten = false
4651

4752
ticker := time.NewTicker(pingInterval)
@@ -50,6 +55,7 @@ func StartPing(cnf *config.Config, ctx context.Context) {
5055
err := stream.Send(&PingRequest{Type: ConnectorType_AGENT})
5156
if err != nil {
5257
if strings.Contains(err.Error(), "EOF") {
58+
utils.Logger.LogF(100, "error sending Ping request: %v", err)
5359
time.Sleep(timeToSleep)
5460
break
5561
}
@@ -58,20 +64,25 @@ func StartPing(cnf *config.Config, ctx context.Context) {
5864
if !errorLogged {
5965
utils.Logger.ErrorF("error sending Ping request: %v", err)
6066
errorLogged = true
67+
} else {
68+
utils.Logger.LogF(100, "error sending Ping request: %v", err)
6169
}
6270
time.Sleep(timeToSleep)
6371
break
6472
} else {
6573
if !errorLogged {
6674
utils.Logger.ErrorF("error sending Ping request: %v", err)
6775
errorLogged = true
76+
} else {
77+
utils.Logger.LogF(100, "error sending Ping request: %v", err)
6878
}
6979
time.Sleep(timeToSleep)
7080
continue
7181
}
7282
}
7383

7484
errorLogged = false
85+
utils.Logger.LogF(100, "Ping request sent")
7586
}
7687

7788
ticker.Stop()

agent/agent/register.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,7 @@ func RegisterAgent(cnf *config.Config, UTMKey string) error {
6060
cnf.AgentID = uint(response.Id)
6161
cnf.AgentKey = response.Key
6262

63+
utils.Logger.LogF(100, "Agent registered with ID: %v", cnf.AgentID)
64+
6365
return nil
6466
}

agent/agent/update.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,13 @@ func UpdateAgent(cnf *config.Config, ctx context.Context) error {
2424
}
2525

2626
version := models.Version{}
27-
err = utils.ReadJson(config.VersionPath, &version)
28-
if err != nil {
29-
utils.Logger.Fatal("error reading version file: %v", err)
27+
if utils.CheckIfPathExist(config.VersionPath) {
28+
err = utils.ReadJson(config.VersionPath, &version)
29+
if err != nil {
30+
utils.Logger.Fatal("error reading version file: %v", err)
31+
}
32+
} else {
33+
version.Version = "10.6.0"
3034
}
3135

3236
request := &AgentRequest{

agent/collectors/collectors.go

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package collectors
22

33
import (
44
"fmt"
5-
"runtime"
65

76
"github.com/utmstack/UTMStack/agent/utils"
87
)
@@ -18,21 +17,6 @@ type Collector interface {
1817
Uninstall() error
1918
}
2019

21-
func getCollectorsInstances() []Collector {
22-
var collectors []Collector
23-
switch runtime.GOOS {
24-
case "windows":
25-
collectors = append(collectors, Windows{})
26-
if runtime.GOARCH == "amd64" {
27-
collectors = append(collectors, Filebeat{})
28-
}
29-
case "linux":
30-
collectors = append(collectors, Filebeat{})
31-
}
32-
33-
return collectors
34-
}
35-
3620
func InstallCollectors() error {
3721
collectors := getCollectorsInstances()
3822

@@ -43,7 +27,7 @@ func InstallCollectors() error {
4327
}
4428
}
4529

46-
utils.Logger.Info("collector installed correctly")
30+
utils.Logger.LogF(100, "collectors installed correctly")
4731

4832
return nil
4933
}
@@ -65,6 +49,6 @@ func UninstallCollectors() error {
6549
}
6650
}
6751

68-
utils.Logger.Info("collectors uninstalled correctly")
52+
utils.Logger.LogF(100, "collectors uninstalled correctly")
6953
return nil
7054
}

agent/collectors/linux_amd64.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//go:build linux && amd64
2+
// +build linux,amd64
3+
4+
package collectors
5+
6+
func getCollectorsInstances() []Collector {
7+
var collectors []Collector
8+
collectors = append(collectors, Filebeat{})
9+
10+
return collectors
11+
}

agent/collectors/windows_amd64.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,14 @@ import (
1515

1616
type Windows struct{}
1717

18+
func getCollectorsInstances() []Collector {
19+
var collectors []Collector
20+
collectors = append(collectors, Windows{})
21+
collectors = append(collectors, Filebeat{})
22+
23+
return collectors
24+
}
25+
1826
func (w Windows) Install() error {
1927
path := utils.GetMyPath()
2028

0 commit comments

Comments
 (0)