v2.0.0
This commit is contained in:
commit
e455af7f1f
33 changed files with 8471 additions and 0 deletions
93
agent/checkin.go
Normal file
93
agent/checkin.go
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
/*
|
||||
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"
|
||||
"runtime"
|
||||
"time"
|
||||
|
||||
nats "github.com/nats-io/nats.go"
|
||||
"github.com/ugorji/go/codec"
|
||||
trmm "github.com/wh1te909/trmm-shared"
|
||||
)
|
||||
|
||||
func (a *Agent) NatsMessage(nc *nats.Conn, mode string) {
|
||||
var resp []byte
|
||||
var payload interface{}
|
||||
ret := codec.NewEncoderBytes(&resp, new(codec.MsgpackHandle))
|
||||
|
||||
switch mode {
|
||||
case "agent-hello":
|
||||
payload = trmm.CheckInNats{
|
||||
Agentid: a.AgentID,
|
||||
Version: a.Version,
|
||||
}
|
||||
case "agent-winsvc":
|
||||
payload = trmm.WinSvcNats{
|
||||
Agentid: a.AgentID,
|
||||
WinSvcs: a.GetServices(),
|
||||
}
|
||||
case "agent-agentinfo":
|
||||
osinfo := a.osString()
|
||||
reboot, err := a.SystemRebootRequired()
|
||||
if err != nil {
|
||||
reboot = false
|
||||
}
|
||||
payload = trmm.AgentInfoNats{
|
||||
Agentid: a.AgentID,
|
||||
Username: a.LoggedOnUser(),
|
||||
Hostname: a.Hostname,
|
||||
OS: osinfo,
|
||||
Platform: runtime.GOOS,
|
||||
TotalRAM: a.TotalRAM(),
|
||||
BootTime: a.BootTime(),
|
||||
RebootNeeded: reboot,
|
||||
GoArch: a.GoArch,
|
||||
}
|
||||
case "agent-wmi":
|
||||
payload = trmm.WinWMINats{
|
||||
Agentid: a.AgentID,
|
||||
WMI: a.GetWMIInfo(),
|
||||
}
|
||||
case "agent-disks":
|
||||
payload = trmm.WinDisksNats{
|
||||
Agentid: a.AgentID,
|
||||
Disks: a.GetDisks(),
|
||||
}
|
||||
case "agent-publicip":
|
||||
payload = trmm.PublicIPNats{
|
||||
Agentid: a.AgentID,
|
||||
PublicIP: a.PublicIP(),
|
||||
}
|
||||
}
|
||||
|
||||
a.Logger.Debugln(mode, payload)
|
||||
ret.Encode(payload)
|
||||
nc.PublishRequest(a.AgentID, mode, resp)
|
||||
}
|
||||
|
||||
func (a *Agent) DoNatsCheckIn() {
|
||||
opts := a.setupNatsOptions()
|
||||
server := fmt.Sprintf("tls://%s:4222", a.ApiURL)
|
||||
nc, err := nats.Connect(server, opts...)
|
||||
if err != nil {
|
||||
a.Logger.Errorln(err)
|
||||
return
|
||||
}
|
||||
|
||||
for _, s := range natsCheckin {
|
||||
time.Sleep(time.Duration(randRange(100, 400)) * time.Millisecond)
|
||||
a.NatsMessage(nc, s)
|
||||
}
|
||||
nc.Close()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue