Skip to content

Commit

Permalink
Merge branch 'main' of gitlab.autonubil.net:go/go-wazuh into main
Browse files Browse the repository at this point in the history
  • Loading branch information
czeumer committed May 13, 2022
2 parents 9c73cc3 + 659822b commit 04782c2
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 28 deletions.
8 changes: 8 additions & 0 deletions ossec/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -581,6 +581,10 @@ func (a *Client) pingServer() error {
}

func (a *Client) writeMessage(msg string) error {
if a.conn == nil {
return fmt.Errorf("client is not connected")
}

encryptedMsg, msgSize := a.cryptMsg(msg)
a.evtCount++

Expand Down Expand Up @@ -659,6 +663,10 @@ func (a *Client) sendMessage(msg string, readTimeout time.Duration) error {
}

func (a *Client) readServerResponse(timeout time.Duration) error {
if a.conn == nil {
return fmt.Errorf("client is not connected")
}

var buf bytes.Buffer
buffer := make([]byte, maxBufferSize)
totallyRead := 0
Expand Down
15 changes: 15 additions & 0 deletions ossec/agent_keys.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,21 @@ func LoadAgentKeyMap(filename string) (AgentKeyMap, error) {
}

func (a *AgentKey) WriteAgentKey(filename string) error {
if a == nil {
return errors.New("key is null")
}
if a.AgentID == "" {
return errors.New("agent id is empty")
}
if a.AgentName == "" {
return errors.New("agent name is empty")
}
if a.AgentKey == "" {
return errors.New("agent key is empty")
}
if a.AgentAllowedIPs == "" {
return errors.New("agent allowed ips is empty")
}
if filename == "" {
filename = "/etc/client.keys"
}
Expand Down
53 changes: 25 additions & 28 deletions ossec/authd.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,53 +63,50 @@ func InitAgent(cfg *EnrollmentConfig) (*AgentKey, error) {
} else {
keyFile = "/var/ossec/etc/client.keys"
}
//ensure path...
path := filepath.Dir(keyFile)
if _, err := os.Stat(path); os.IsNotExist(err) {
err = os.MkdirAll(path, os.ModePerm)
if err != nil {
if cfg.logger != nil {
cfg.logger.Error("register agent - create path", zap.String("authdServer", cfg.ManagerName), zap.String("agentID", cfg.AgentName), zap.String("agentIP", cfg.AgentIP), zap.String("keyfile", keyFile), zap.Error(err))
}
return nil, err
}
}

hostname, err := DefaultAgentName()
if err != nil {
return nil, err
}

if cfg.AuthPass != "" {

agentKey, err := GetAgentKeyFromFile(hostname, keyFile)
keyMapValid := err == nil && agentKey != nil

if !keyMapValid {
var err2 error
// Try to register agent

//ensure path...
path := filepath.Dir(keyFile)
if _, err2 = os.Stat(path); os.IsNotExist(err2) {
err2 = os.MkdirAll(path, os.ModePerm)
if err2 != nil {
if cfg.logger != nil {
cfg.logger.Error("register agent - create path", zap.String("authdServer", cfg.ManagerName), zap.String("agentID", cfg.AgentName), zap.String("agentIP", cfg.AgentIP), zap.String("keyfile", keyFile), zap.Error(err2))
}
return nil, err
}
}
agentKey, err := GetAgentKeyFromFile(hostname, keyFile)
keyMapValid := err == nil && agentKey != nil

if !keyMapValid && cfg.AuthPass != "" {
var err2 error
// Try to register agent
agentKey, err2 = RegisterAgent(cfg)
if err2 == nil && agentKey != nil {
// persist new key
err2 = agentKey.WriteAgentKey(keyFile)
if err2 != nil {
if cfg.logger != nil {
cfg.logger.Error("register agent - write key file", zap.String("authdServer", cfg.ManagerName), zap.String("agentID", cfg.AgentName), zap.String("agentIP", cfg.AgentIP), zap.String("path", path), zap.String("keyfile", keyFile), zap.Error(err2))
}
return nil, err
}
agentKey, err = GetAgentKeyFromFile(hostname, keyFile)
if err != nil {
return nil, err
}
}
}

agentInfo, err := GetAgentKeyFromFile(hostname, keyFile)
if err != nil {
return nil, err
}

if agentInfo == nil {
if agentKey == nil {
return nil, errors.New("no agent key configured")
}
return agentInfo, nil

return agentKey, nil
}

// NewEnrollmentConfig initialize new enrolment config
Expand Down

0 comments on commit 04782c2

Please sign in to comment.