From f578b6eb51bdb52abcec8fd2a68c6b5108f50a30 Mon Sep 17 00:00:00 2001 From: "zero@thinky" Date: Sat, 4 Apr 2026 04:44:52 +0300 Subject: [PATCH] feat(agent): tie up --- agent/internal/client/commandexe.go | 13 ++++++------- agent/main.go | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/agent/internal/client/commandexe.go b/agent/internal/client/commandexe.go index f1341d7..f07d66b 100644 --- a/agent/internal/client/commandexe.go +++ b/agent/internal/client/commandexe.go @@ -17,17 +17,16 @@ import ( ) type CommanderClient struct { - cmder *commander.CommandExecutor - wg *sync.WaitGroup - id string + cmder *commander.CommandExecutor + wg *sync.WaitGroup + id, label string } func New( cmder *commander.CommandExecutor, - wg *sync.WaitGroup, - id string, + id, label string, ) CommanderClient { - return CommanderClient{cmder, wg, id} + return CommanderClient{cmder, new(sync.WaitGroup), id, label} } func (self *CommanderClient) HandleCommands(ctx context.Context, srvAddr string, tc credentials.TransportCredentials) error { @@ -36,7 +35,7 @@ func (self *CommanderClient) HandleCommands(ctx context.Context, srvAddr string, return fmt.Errorf("Failed to connect to gRPC: %w", err) } ccli := proto.NewCommanderClient(cli) - bidi, err := ccli.Stream(metadata.NewOutgoingContext(ctx, metadata.MD{"agentid": []string{self.id}})) + bidi, err := ccli.Stream(metadata.NewOutgoingContext(ctx, metadata.MD{"agentid": []string{self.id}, "label": []string{self.label}})) if err != nil { return err } diff --git a/agent/main.go b/agent/main.go index bafa085..a61fc3e 100644 --- a/agent/main.go +++ b/agent/main.go @@ -1,10 +1,14 @@ package main import ( + "context" "log" "os" + "gitea.d3m0k1d.ru/d3m0k1d/HellreigN/agent/internal/client" + "gitea.d3m0k1d.ru/d3m0k1d/HellreigN/agent/internal/commander" "gitea.d3m0k1d.ru/d3m0k1d/HellreigN/agent/internal/config" + "gitea.d3m0k1d.ru/d3m0k1d/HellreigN/agent/internal/mtls" "gitea.d3m0k1d.ru/d3m0k1d/HellreigN/agent/internal/registration" ) @@ -46,4 +50,18 @@ func main() { log.Printf("Certificates saved to %s", cfg.CertDir) log.Println("Agent registration complete") + err = func() error { + creds, err := mtls.LoadMTLSCredentials(certs.CACertPEM, certs.ClientCertPEM, certs.ClientKeyPEM) + if err != nil { + return err + } + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + cmdexe := new(commander.CommandExecutor) + ccli := client.New(cmdexe, cfg.RegistrationToken) + return ccli.HandleCommands(ctx, cfg.BackendURL, creds) + }() + if err != nil { + log.Fatalf("Failed to generate key and CSR: %v", err) + } }