v2.0.0
This commit is contained in:
commit
e455af7f1f
33 changed files with 8471 additions and 0 deletions
96
agent/svc.go
Normal file
96
agent/svc.go
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
/*
|
||||
Copyright 2022 AmidaWare LLC.
|
||||
|
||||
Licensed under the Tactical RMM License Version 1.0 (the “License”).
|
||||
You may only use the Licensed Software in accordance with the License.
|
||||
A copy of the License is available at:
|
||||
|
||||
https://license.tacticalrmm.com
|
||||
|
||||
*/
|
||||
|
||||
package agent
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
nats "github.com/nats-io/nats.go"
|
||||
)
|
||||
|
||||
func (a *Agent) RunAsService() {
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(1)
|
||||
go a.AgentSvc()
|
||||
go a.CheckRunner()
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
func (a *Agent) AgentSvc() {
|
||||
go a.GetPython(false)
|
||||
|
||||
a.CreateTRMMTempDir()
|
||||
a.RunMigrations()
|
||||
|
||||
sleepDelay := randRange(14, 22)
|
||||
a.Logger.Debugf("AgentSvc() sleeping for %v seconds", sleepDelay)
|
||||
time.Sleep(time.Duration(sleepDelay) * time.Second)
|
||||
|
||||
opts := a.setupNatsOptions()
|
||||
server := fmt.Sprintf("tls://%s:4222", a.ApiURL)
|
||||
nc, err := nats.Connect(server, opts...)
|
||||
if err != nil {
|
||||
a.Logger.Fatalln("AgentSvc() nats.Connect()", err)
|
||||
}
|
||||
|
||||
for _, s := range natsCheckin {
|
||||
a.NatsMessage(nc, s)
|
||||
time.Sleep(time.Duration(randRange(100, 400)) * time.Millisecond)
|
||||
}
|
||||
|
||||
a.SyncMeshNodeID()
|
||||
|
||||
time.Sleep(time.Duration(randRange(1, 3)) * time.Second)
|
||||
a.AgentStartup()
|
||||
a.SendSoftware()
|
||||
|
||||
checkInHelloTicker := time.NewTicker(time.Duration(randRange(30, 60)) * time.Second)
|
||||
checkInAgentInfoTicker := time.NewTicker(time.Duration(randRange(200, 400)) * time.Second)
|
||||
checkInWinSvcTicker := time.NewTicker(time.Duration(randRange(2400, 3000)) * time.Second)
|
||||
checkInPubIPTicker := time.NewTicker(time.Duration(randRange(300, 500)) * time.Second)
|
||||
checkInDisksTicker := time.NewTicker(time.Duration(randRange(1000, 2000)) * time.Second)
|
||||
checkInSWTicker := time.NewTicker(time.Duration(randRange(2800, 3500)) * time.Second)
|
||||
checkInWMITicker := time.NewTicker(time.Duration(randRange(3000, 4000)) * time.Second)
|
||||
syncMeshTicker := time.NewTicker(time.Duration(randRange(800, 1200)) * time.Second)
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-checkInHelloTicker.C:
|
||||
a.NatsMessage(nc, "agent-hello")
|
||||
case <-checkInAgentInfoTicker.C:
|
||||
a.NatsMessage(nc, "agent-agentinfo")
|
||||
case <-checkInWinSvcTicker.C:
|
||||
a.NatsMessage(nc, "agent-winsvc")
|
||||
case <-checkInPubIPTicker.C:
|
||||
a.NatsMessage(nc, "agent-publicip")
|
||||
case <-checkInDisksTicker.C:
|
||||
a.NatsMessage(nc, "agent-disks")
|
||||
case <-checkInSWTicker.C:
|
||||
a.SendSoftware()
|
||||
case <-checkInWMITicker.C:
|
||||
a.NatsMessage(nc, "agent-wmi")
|
||||
case <-syncMeshTicker.C:
|
||||
a.SyncMeshNodeID()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (a *Agent) AgentStartup() {
|
||||
url := "/api/v3/checkin/"
|
||||
payload := map[string]interface{}{"agent_id": a.AgentID}
|
||||
_, err := a.rClient.R().SetBody(payload).Post(url)
|
||||
if err != nil {
|
||||
a.Logger.Debugln("AgentStartup()", err)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue