diff --git a/AdaptixServer/core/extender/ex_agent.go b/AdaptixServer/core/extender/ex_agent.go index a854422c..5afb37d1 100644 --- a/AdaptixServer/core/extender/ex_agent.go +++ b/AdaptixServer/core/extender/ex_agent.go @@ -23,3 +23,11 @@ func (ex *AdaptixExtender) ExAgentCreate(agentName string, beat []byte) (adaptix } return module.CreateAgent(beat) } + +func (ex *AdaptixExtender) ExAgentGetExtender(agentName string) (adaptix.ExtenderAgent, error) { + module, err := ex.getAgentModule(agentName) + if err != nil { + return nil, err + } + return module.GetExtender(), nil +} diff --git a/AdaptixServer/core/server/server.go b/AdaptixServer/core/server/server.go index 84105c99..3586e92c 100644 --- a/AdaptixServer/core/server/server.go +++ b/AdaptixServer/core/server/server.go @@ -110,7 +110,14 @@ func (ts *Teamserver) RestoreData() { restoreAgents := ts.DBMS.DbAgentAll() for _, agentData := range restoreAgents { + extender, err := ts.Extender.ExAgentGetExtender(agentData.Name) + if err != nil { + logs.Warn(" ", "Failed to get extender for agent %v (%v): %v", agentData.Id, agentData.Name, err.Error()) + continue + } + agent := &Agent{ + Extender: extender, OutConsole: safe.NewSlice(), HostedTunnelData: safe.NewSafeQueue(0x1000), HostedTasks: safe.NewSafeQueue(0x100), diff --git a/AdaptixServer/extenders/beacon_agent/pl_main.go b/AdaptixServer/extenders/beacon_agent/pl_main.go index d2649b59..957335b1 100644 --- a/AdaptixServer/extenders/beacon_agent/pl_main.go +++ b/AdaptixServer/extenders/beacon_agent/pl_main.go @@ -141,6 +141,10 @@ func InitPlugin(ts any, moduleDir string, watermark string) adaptix.PluginAgent return &PluginAgent{} } +func (p *PluginAgent) GetExtender() adaptix.ExtenderAgent { + return &ExtenderAgent{} +} + func makeProxyTask(packData []byte) adaptix.TaskData { return adaptix.TaskData{Type: TYPE_PROXY_DATA, Data: packData, Sync: false} } @@ -610,8 +614,12 @@ func (p *PluginAgent) BuildPayload(agentConfig string, agentProfile []byte, list return nil, "", errors.New("unknown file format") } - cmdBuild := fmt.Sprintf("%s %s %s -o %s", Compiler, lFlags, Files, buildPath) - runnerCmdBuild := exec.Command("sh", "-c", cmdBuild) + var buildArgs []string + buildArgs = append(buildArgs, strings.Fields(lFlags)...) + buildArgs = append(buildArgs, strings.Fields(Files)...) + buildArgs = append(buildArgs, "-o", buildPath) + runnerCmdBuild := exec.Command(Compiler, buildArgs...) + runnerCmdBuild.Dir = currentDir runnerCmdBuild.Stdout = &stdout runnerCmdBuild.Stderr = &stderr diff --git a/AdaptixServer/extenders/gopher_agent/pl_main.go b/AdaptixServer/extenders/gopher_agent/pl_main.go index bc5f8d40..baa3a6e0 100644 --- a/AdaptixServer/extenders/gopher_agent/pl_main.go +++ b/AdaptixServer/extenders/gopher_agent/pl_main.go @@ -133,6 +133,10 @@ func InitPlugin(ts any, moduleDir string, watermark string) adaptix.PluginAgent return &PluginAgent{} } +func (p *PluginAgent) GetExtender() adaptix.ExtenderAgent { + return &ExtenderAgent{} +} + func makeProxyTask(packData []byte) adaptix.TaskData { return adaptix.TaskData{Type: TYPE_PROXY_DATA, Data: packData, Sync: false} }