feat(agent): tie up
This commit is contained in:
@@ -19,15 +19,14 @@ import (
|
||||
type CommanderClient struct {
|
||||
cmder *commander.CommandExecutor
|
||||
wg *sync.WaitGroup
|
||||
id string
|
||||
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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user