Release 2.4.9
This commit is contained in:
		@@ -16,7 +16,6 @@ import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"math"
 | 
			
		||||
	"os"
 | 
			
		||||
	"os/exec"
 | 
			
		||||
@@ -24,6 +23,7 @@ import (
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"syscall"
 | 
			
		||||
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
@@ -322,8 +322,21 @@ func (a *Agent) CmdV2(c *CmdOptions) CmdStatus {
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	// Run and wait for Cmd to return, discard Status
 | 
			
		||||
	envCmd.Start()
 | 
			
		||||
	// workaround for https://github.com/golang/go/issues/22315
 | 
			
		||||
	for i := 0; i < 5; i++ {
 | 
			
		||||
		<-envCmd.Start()
 | 
			
		||||
 | 
			
		||||
		<-doneChan
 | 
			
		||||
 | 
			
		||||
		status := envCmd.Status()
 | 
			
		||||
 | 
			
		||||
		if errors.Is(status.Error, syscall.ETXTBSY) {
 | 
			
		||||
			a.Logger.Errorln("CmdV2 syscall.ETXTBSY, retrying...")
 | 
			
		||||
			time.Sleep(500 * time.Millisecond)
 | 
			
		||||
		} else {
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	go func() {
 | 
			
		||||
		select {
 | 
			
		||||
@@ -505,7 +518,7 @@ func (a *Agent) CleanupAgentUpdates() {
 | 
			
		||||
 | 
			
		||||
func (a *Agent) RunPythonCode(code string, timeout int, args []string) (string, error) {
 | 
			
		||||
	content := []byte(code)
 | 
			
		||||
	tmpfn, _ := ioutil.TempFile(a.WinTmpDir, "*.py")
 | 
			
		||||
	tmpfn, _ := os.CreateTemp(a.WinTmpDir, "*.py")
 | 
			
		||||
	if _, err := tmpfn.Write(content); err != nil {
 | 
			
		||||
		a.Logger.Debugln(err)
 | 
			
		||||
		return "", err
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,6 @@ import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"os"
 | 
			
		||||
	"os/exec"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
@@ -124,7 +123,7 @@ func (a *Agent) RunScript(code string, shell string, args []string, timeout int,
 | 
			
		||||
		tmpDir = a.WinRunAsUserTmpDir
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tmpfn, err := ioutil.TempFile(tmpDir, ext)
 | 
			
		||||
	tmpfn, err := os.CreateTemp(tmpDir, ext)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		a.Logger.Errorln(err)
 | 
			
		||||
		return "", err.Error(), 85, err
 | 
			
		||||
@@ -623,8 +622,9 @@ func (a *Agent) AgentUpdate(url, inno, version string) error {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if r.IsError() {
 | 
			
		||||
		a.Logger.Errorln("Download failed with status code", r.StatusCode())
 | 
			
		||||
		return err
 | 
			
		||||
		ret := fmt.Sprintf("Download failed with status code %d", r.StatusCode())
 | 
			
		||||
		a.Logger.Errorln(ret)
 | 
			
		||||
		return errors.New(ret)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	innoLogFile := filepath.Join(a.WinTmpDir, fmt.Sprintf("tacticalagent_update_v%s.txt", version))
 | 
			
		||||
 
 | 
			
		||||
@@ -55,6 +55,12 @@ func (a *Agent) AgentSvc(nc *nats.Conn) {
 | 
			
		||||
	a.Logger.Debugf("AgentSvc() sleeping for %v seconds", sleepDelay)
 | 
			
		||||
	time.Sleep(time.Duration(sleepDelay) * time.Second)
 | 
			
		||||
 | 
			
		||||
	if runtime.GOOS == "windows" {
 | 
			
		||||
		a.KillHungUpdates()
 | 
			
		||||
		time.Sleep(1 * time.Second)
 | 
			
		||||
		a.CleanupAgentUpdates()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	conf := a.GetAgentCheckInConfig(a.GetCheckInConfFromAPI())
 | 
			
		||||
	a.Logger.Debugf("+%v\n", conf)
 | 
			
		||||
	for _, s := range natsCheckin {
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
  <assemblyIdentity
 | 
			
		||||
    type="win32"
 | 
			
		||||
    name="TacticalRMM"
 | 
			
		||||
    version="2.4.8.0"
 | 
			
		||||
    version="2.4.9.0"
 | 
			
		||||
    processorArchitecture="*"/>
 | 
			
		||||
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
 | 
			
		||||
   <security>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
#define MyAppName "Tactical RMM Agent"
 | 
			
		||||
#define MyAppVersion "2.4.8"
 | 
			
		||||
#define MyAppVersion "2.4.9"
 | 
			
		||||
#define MyAppPublisher "AmidaWare LLC"
 | 
			
		||||
#define MyAppURL "https://github.com/amidaware"
 | 
			
		||||
#define MyAppExeName "tacticalrmm.exe"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								go.mod
									
									
									
									
									
								
							@@ -4,14 +4,14 @@ go 1.20
 | 
			
		||||
 | 
			
		||||
require (
 | 
			
		||||
	github.com/StackExchange/wmi v1.2.1
 | 
			
		||||
	github.com/elastic/go-sysinfo v1.10.1
 | 
			
		||||
	github.com/elastic/go-sysinfo v1.10.2
 | 
			
		||||
	github.com/go-ole/go-ole v1.2.6
 | 
			
		||||
	github.com/go-ping/ping v1.1.0
 | 
			
		||||
	github.com/go-resty/resty/v2 v2.7.0
 | 
			
		||||
	github.com/gonutz/w32/v2 v2.4.0
 | 
			
		||||
	github.com/iamacarpet/go-win64api v0.0.0-20220531131246-e84054eb584d
 | 
			
		||||
	github.com/nats-io/nats-server/v2 v2.9.16 // indirect
 | 
			
		||||
	github.com/nats-io/nats.go v1.25.0
 | 
			
		||||
	github.com/nats-io/nats-server/v2 v2.9.17 // indirect
 | 
			
		||||
	github.com/nats-io/nats.go v1.26.0
 | 
			
		||||
	github.com/rickb777/date v1.19.1
 | 
			
		||||
	github.com/shirou/gopsutil/v3 v3.23.4
 | 
			
		||||
	github.com/sirupsen/logrus v1.9.0
 | 
			
		||||
@@ -44,6 +44,7 @@ require (
 | 
			
		||||
	github.com/hashicorp/hcl v1.0.0 // indirect
 | 
			
		||||
	github.com/jaypipes/pcidb v1.0.0 // indirect
 | 
			
		||||
	github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 // indirect
 | 
			
		||||
	github.com/klauspost/compress v1.16.5 // indirect
 | 
			
		||||
	github.com/lufia/plan9stats v0.0.0-20220517141722-cf486979b281 // indirect
 | 
			
		||||
	github.com/magiconair/properties v1.8.7 // indirect
 | 
			
		||||
	github.com/mitchellh/go-homedir v1.1.0 // indirect
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								go.sum
									
									
									
									
									
								
							@@ -58,12 +58,12 @@ github.com/creachadair/staticfile v0.1.3/go.mod h1:a3qySzCIXEprDGxk6tSxSI+dBBdLz
 | 
			
		||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 | 
			
		||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 | 
			
		||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 | 
			
		||||
github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68=
 | 
			
		||||
github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8=
 | 
			
		||||
github.com/docker/docker v23.0.3+incompatible h1:9GhVsShNWz1hO//9BNg/dpMnZW25KydO4wtVxWAIbho=
 | 
			
		||||
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
 | 
			
		||||
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
 | 
			
		||||
github.com/elastic/go-sysinfo v1.10.1 h1:qAfoDsw3lnShqqTHVBZbK4+PN3Lz5FBi3o9sM5n9O9s=
 | 
			
		||||
github.com/elastic/go-sysinfo v1.10.1/go.mod h1:QElTrQ6akcnAVCRwdkZtoAkwuTv8UVM4+qe0hPxT4NU=
 | 
			
		||||
github.com/elastic/go-sysinfo v1.10.2 h1:DK4pBq7AHwUY+3gcBykvFmWJQWEtv01Jes3v7ss1RVI=
 | 
			
		||||
github.com/elastic/go-sysinfo v1.10.2/go.mod h1:6KQb31j0QeWBDF88jIdWSxE8cwoOB9tO4Y4osN7Q70E=
 | 
			
		||||
github.com/elastic/go-windows v1.0.1 h1:AlYZOldA+UJ0/2nBuqWdo90GFCgG9xuyw9SYzGUtJm0=
 | 
			
		||||
github.com/elastic/go-windows v1.0.1/go.mod h1:FoVvqWSun28vaDQPbj2Elfc0JahhPB7WQEGa3c814Ss=
 | 
			
		||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
 | 
			
		||||
@@ -197,7 +197,8 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X
 | 
			
		||||
github.com/kardianos/service v1.2.2 h1:ZvePhAHfvo0A7Mftk/tEzqEZ7Q4lgnR8sGz4xu1YX60=
 | 
			
		||||
github.com/kardianos/service v1.2.2/go.mod h1:CIMRFEJVL+0DS1a3Nx06NaMn4Dz63Ng6O7dl0qH0zVM=
 | 
			
		||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 | 
			
		||||
github.com/klauspost/compress v1.16.4 h1:91KN02FnsOYhuunwU4ssRe8lc2JosWmizWa91B5v1PU=
 | 
			
		||||
github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI=
 | 
			
		||||
github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
 | 
			
		||||
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
 | 
			
		||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 | 
			
		||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 | 
			
		||||
@@ -216,10 +217,10 @@ github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk
 | 
			
		||||
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
 | 
			
		||||
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 | 
			
		||||
github.com/nats-io/jwt/v2 v2.4.1 h1:Y35W1dgbbz2SQUYDPCaclXcuqleVmpbRa7646Jf2EX4=
 | 
			
		||||
github.com/nats-io/nats-server/v2 v2.9.16 h1:SuNe6AyCcVy0g5326wtyU8TdqYmcPqzTjhkHojAjprc=
 | 
			
		||||
github.com/nats-io/nats-server/v2 v2.9.16/go.mod h1:z1cc5Q+kqJkz9mLUdlcSsdYnId4pyImHjNgoh6zxSC0=
 | 
			
		||||
github.com/nats-io/nats.go v1.25.0 h1:t5/wCPGciR7X3Mu8QOi4jiJaXaWM8qtkLu4lzGZvYHE=
 | 
			
		||||
github.com/nats-io/nats.go v1.25.0/go.mod h1:D2WALIhz7V8M0pH8Scx8JZXlg6Oqz5VG+nQkK8nJdvg=
 | 
			
		||||
github.com/nats-io/nats-server/v2 v2.9.17 h1:gFpUQ3hqIDJrnqog+Bl5vaXg+RhhYEZIElasEuRn2tw=
 | 
			
		||||
github.com/nats-io/nats-server/v2 v2.9.17/go.mod h1:eQysm3xDZmIjfkjr7DuD9DjRFpnxQc2vKVxtEg0Dp6s=
 | 
			
		||||
github.com/nats-io/nats.go v1.26.0 h1:fWJTYPnZ8DzxIaqIHOAMfColuznchnd5Ab5dbJpgPIE=
 | 
			
		||||
github.com/nats-io/nats.go v1.26.0/go.mod h1:XpbWUlOElGwTYbMR7imivs7jJj9GtK7ypv321Wp6pjc=
 | 
			
		||||
github.com/nats-io/nkeys v0.4.4 h1:xvBJ8d69TznjcQl9t6//Q5xXuVhyYiSos6RPtvQNTwA=
 | 
			
		||||
github.com/nats-io/nkeys v0.4.4/go.mod h1:XUkxdLPTufzlihbamfzQ7mw/VGx6ObUs+0bN5sNvt64=
 | 
			
		||||
github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
 | 
			
		||||
@@ -263,11 +264,9 @@ github.com/scjalliance/comshim v0.0.0-20190308082608-cf06d2532c4e h1:+/AzLkOdIXE
 | 
			
		||||
github.com/scjalliance/comshim v0.0.0-20190308082608-cf06d2532c4e/go.mod h1:9Tc1SKnfACJb9N7cw2eyuI6xzy845G7uZONBsi5uPEA=
 | 
			
		||||
github.com/shirou/gopsutil/v3 v3.23.4 h1:hZwmDxZs7Ewt75DV81r4pFMqbq+di2cbt9FsQBqLD2o=
 | 
			
		||||
github.com/shirou/gopsutil/v3 v3.23.4/go.mod h1:ZcGxyfzAMRevhUR2+cfhXDH6gQdFYE/t8j1nsU4mPI8=
 | 
			
		||||
github.com/shoenig/go-m1cpu v0.1.5 h1:LF57Z/Fpb/WdGLjt2HZilNnmZOxg/q2bSKTQhgbrLrQ=
 | 
			
		||||
github.com/shoenig/go-m1cpu v0.1.5/go.mod h1:Wwvst4LR89UxjeFtLRMrpgRiyY4xPsejnVZym39dbAQ=
 | 
			
		||||
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
 | 
			
		||||
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
 | 
			
		||||
github.com/shoenig/test v0.6.3 h1:GVXWJFk9PiOjN0KoJ7VrJGH6uLPnqxR7/fe3HUPfE0c=
 | 
			
		||||
github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
 | 
			
		||||
github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
 | 
			
		||||
github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								main.go
									
									
									
									
									
								
							@@ -25,7 +25,7 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	version = "2.4.8"
 | 
			
		||||
	version = "2.4.9"
 | 
			
		||||
	log     = logrus.New()
 | 
			
		||||
	logFile *os.File
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -3,13 +3,13 @@
 | 
			
		||||
        "FileVersion": {
 | 
			
		||||
            "Major": 2,
 | 
			
		||||
            "Minor": 4,
 | 
			
		||||
            "Patch": 8,
 | 
			
		||||
            "Patch": 9,
 | 
			
		||||
            "Build": 0
 | 
			
		||||
        },
 | 
			
		||||
        "ProductVersion": {
 | 
			
		||||
            "Major": 2,
 | 
			
		||||
            "Minor": 4,
 | 
			
		||||
            "Patch": 8,
 | 
			
		||||
            "Patch": 9,
 | 
			
		||||
            "Build": 0
 | 
			
		||||
        },
 | 
			
		||||
        "FileFlagsMask": "3f",
 | 
			
		||||
@@ -22,14 +22,14 @@
 | 
			
		||||
        "Comments": "",
 | 
			
		||||
        "CompanyName": "AmidaWare LLC",
 | 
			
		||||
        "FileDescription": "Tactical RMM Agent",
 | 
			
		||||
        "FileVersion": "v2.4.8.0",
 | 
			
		||||
        "FileVersion": "v2.4.9.0",
 | 
			
		||||
        "InternalName": "tacticalrmm.exe",
 | 
			
		||||
        "LegalCopyright": "Copyright (c) 2023 AmidaWare LLC",
 | 
			
		||||
        "LegalTrademarks": "",
 | 
			
		||||
        "OriginalFilename": "tacticalrmm.exe",
 | 
			
		||||
        "PrivateBuild": "",
 | 
			
		||||
        "ProductName": "Tactical RMM Agent",
 | 
			
		||||
        "ProductVersion": "v2.4.8.0",
 | 
			
		||||
        "ProductVersion": "v2.4.9.0",
 | 
			
		||||
        "SpecialBuild": ""
 | 
			
		||||
    },
 | 
			
		||||
    "VarFileInfo": {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user