mirror of
https://github.com/dragonheim/gagent.git
synced 2025-01-18 09:36:28 -08:00
A bit more refactor to clean up the code.
This commit is contained in:
parent
7e51584832
commit
de41740bac
5 changed files with 40 additions and 35 deletions
|
@ -1,9 +1,7 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
sha "crypto/sha256"
|
||||
fmt "fmt"
|
||||
ioutil "io/ioutil"
|
||||
log "log"
|
||||
http "net/http"
|
||||
os "os"
|
||||
|
@ -13,7 +11,7 @@ import (
|
|||
|
||||
autorestart "github.com/slayer/autorestart"
|
||||
|
||||
gstruct "git.dragonheim.net/dragonheim/gagent/internal/gstructs"
|
||||
gstructs "git.dragonheim.net/dragonheim/gagent/internal/gstructs"
|
||||
|
||||
gc "git.dragonheim.net/dragonheim/gagent/internal/client"
|
||||
gr "git.dragonheim.net/dragonheim/gagent/internal/router"
|
||||
|
@ -43,8 +41,8 @@ var exitCodes = struct {
|
|||
m map[string]int
|
||||
}{m: map[string]int{}}
|
||||
|
||||
var config gstruct.GagentConfig
|
||||
var agent gstruct.AgentDetails
|
||||
var config gstructs.GagentConfig
|
||||
var agent gstructs.AgentDetails
|
||||
|
||||
func main() {
|
||||
filter := &logutils.LevelFilter{
|
||||
|
@ -65,20 +63,8 @@ func main() {
|
|||
os.Exit(exitCodes.m["NO_ROUTERS_DEFINED"])
|
||||
}
|
||||
|
||||
var err error
|
||||
if config.CMode {
|
||||
agent.ScriptCode, err = ioutil.ReadFile(config.File)
|
||||
if err != nil {
|
||||
log.Printf("[ERROR] No such file or directory: %s", config.File)
|
||||
os.Exit(exitCodes.m["AGENT_LOAD_FAILED"])
|
||||
}
|
||||
agent.Shasum = fmt.Sprintf("%x", sha.Sum256(agent.ScriptCode))
|
||||
agent.Status = "loaded"
|
||||
log.Printf("[DEBUG] SHA256 of Agent file: %s", agent.Shasum)
|
||||
}
|
||||
|
||||
wg.Add(1)
|
||||
go gc.Main(&wg, config, string(agent.ScriptCode))
|
||||
go gc.Main(&wg, config)
|
||||
|
||||
case "router":
|
||||
log.Printf("[INFO] Running in router mode\n")
|
||||
|
@ -103,6 +89,8 @@ func main() {
|
|||
go gw.Main(&wg, config)
|
||||
|
||||
case "setup":
|
||||
log.Printf("[INFO] Running in setup mode\n")
|
||||
|
||||
wg.Add(1)
|
||||
go gs.Main(&wg, config)
|
||||
|
||||
|
@ -185,9 +173,9 @@ func init() {
|
|||
*/
|
||||
config.WorkerPort = 35572
|
||||
|
||||
config.Clients = make([]*gstruct.ClientDetails, 0)
|
||||
config.Routers = make([]*gstruct.RouterDetails, 0)
|
||||
config.Workers = make([]*gstruct.WorkerDetails, 0)
|
||||
config.Clients = make([]*gstructs.ClientDetails, 0)
|
||||
config.Routers = make([]*gstructs.RouterDetails, 0)
|
||||
config.Workers = make([]*gstructs.WorkerDetails, 0)
|
||||
|
||||
/*
|
||||
* Create a usage variable and then use that to declare the arguments and
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
package client
|
||||
|
||||
import (
|
||||
sha "crypto/sha256"
|
||||
fmt "fmt"
|
||||
ioutil "io/ioutil"
|
||||
log "log"
|
||||
os "os"
|
||||
sync "sync"
|
||||
time "time"
|
||||
|
||||
gs "git.dragonheim.net/dragonheim/gagent/internal/gstructs"
|
||||
gstructs "git.dragonheim.net/dragonheim/gagent/internal/gstructs"
|
||||
|
||||
zmq "github.com/pebbe/zmq4"
|
||||
)
|
||||
|
@ -18,9 +21,23 @@ import (
|
|||
will contact the router and attempt to retrieve the results
|
||||
of it's most recent request.
|
||||
*/
|
||||
func Main(wg *sync.WaitGroup, config gs.GagentConfig, agent string) {
|
||||
defer wg.Done()
|
||||
func Main(wg *sync.WaitGroup, config gstructs.GagentConfig) {
|
||||
log.Printf("[INFO] Starting client\n")
|
||||
defer wg.Done()
|
||||
|
||||
var agent gstructs.AgentDetails
|
||||
var err error
|
||||
|
||||
if config.CMode {
|
||||
agent.ScriptCode, err = ioutil.ReadFile(config.File)
|
||||
if err != nil {
|
||||
log.Printf("[ERROR] No such file or directory: %s", config.File)
|
||||
os.Exit(6)
|
||||
}
|
||||
agent.Shasum = fmt.Sprintf("%x", sha.Sum256(agent.ScriptCode))
|
||||
agent.Status = "loaded"
|
||||
log.Printf("[DEBUG] SHA256 of Agent file: %s", agent.Shasum)
|
||||
}
|
||||
|
||||
for key := range config.Routers {
|
||||
/*
|
||||
|
@ -33,14 +50,15 @@ func Main(wg *sync.WaitGroup, config gs.GagentConfig, agent string) {
|
|||
connectString := fmt.Sprintf("tcp://%s:%d", config.Routers[key].RouterAddr, rport)
|
||||
|
||||
wg.Add(1)
|
||||
go sendAgent(wg, config.UUID, connectString, agent)
|
||||
go sendAgent(wg, config.UUID, connectString, agent.ScriptCode)
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
}
|
||||
}
|
||||
|
||||
func sendAgent(wg *sync.WaitGroup, uuid string, connectString string, agent string) {
|
||||
func sendAgent(wg *sync.WaitGroup, uuid string, connectString string, agent []byte) {
|
||||
log.Printf("[DEBUG] Attempting to connect to %s\n", connectString)
|
||||
defer wg.Done()
|
||||
|
||||
var mu sync.Mutex
|
||||
mu.Lock()
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ import (
|
|||
http "net/http"
|
||||
sync "sync"
|
||||
|
||||
gs "git.dragonheim.net/dragonheim/gagent/internal/gstructs"
|
||||
gstructs "git.dragonheim.net/dragonheim/gagent/internal/gstructs"
|
||||
|
||||
prometheus "github.com/prometheus/client_golang/prometheus"
|
||||
promauto "github.com/prometheus/client_golang/prometheus/promauto"
|
||||
|
@ -27,12 +27,11 @@ var (
|
|||
or client node. Tags are used by the agent to give hints as to where
|
||||
it should be routed.
|
||||
*/
|
||||
func Main(wg *sync.WaitGroup, config gs.GagentConfig) {
|
||||
defer wg.Done()
|
||||
http.HandleFunc("/hello", answerClient)
|
||||
|
||||
func Main(wg *sync.WaitGroup, config gstructs.GagentConfig) {
|
||||
log.Printf("[INFO] Starting router\n")
|
||||
defer wg.Done()
|
||||
|
||||
http.HandleFunc("/hello", answerClient)
|
||||
clientSock, _ := zmq.NewSocket(zmq.ROUTER)
|
||||
defer clientSock.Close()
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
)
|
||||
|
||||
func Main(wg *sync.WaitGroup, config gs.GagentConfig) {
|
||||
log.Printf("[INFO] Running in setup mode\n")
|
||||
log.Printf("[INFO] setup mode\n")
|
||||
defer wg.Done()
|
||||
|
||||
f := hclwrite.NewEmptyFile()
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
log "log"
|
||||
sync "sync"
|
||||
|
||||
gs "git.dragonheim.net/dragonheim/gagent/internal/gstructs"
|
||||
gstructs "git.dragonheim.net/dragonheim/gagent/internal/gstructs"
|
||||
|
||||
// picol "git.dragonheim.net/dragonheim/gagent/src/picol"
|
||||
|
||||
|
@ -27,9 +27,9 @@ var (
|
|||
router(s) they are connected. The worker will execute the agent code and
|
||||
pass the agent and it's results to a router.
|
||||
*/
|
||||
func Main(wg *sync.WaitGroup, config gs.GagentConfig) {
|
||||
defer wg.Done()
|
||||
func Main(wg *sync.WaitGroup, config gstructs.GagentConfig) {
|
||||
log.Printf("[INFO] Starting worker\n")
|
||||
defer wg.Done()
|
||||
|
||||
for key := range config.Routers {
|
||||
rport := config.WorkerPort
|
||||
|
|
Loading…
Add table
Reference in a new issue