diff --git a/pkg/app/server/agentmanager/agent.go b/pkg/app/server/agentmanager/agent.go index 700e2c983ea78a745830aaba141aa4c95db97c79..0b838d1db7fb56805069949c0d7a1ffac37bf6ad 100644 --- a/pkg/app/server/agentmanager/agent.go +++ b/pkg/app/server/agentmanager/agent.go @@ -85,25 +85,30 @@ func (a *Agent) RunScript() { } // 远程获取agent端的系统信息 -func (a *Agent) GetSysInfo() { +func (a *Agent) GetOSInfo() { + +} + +// 远程获取agent端的系统信息 +func (a *Agent) GetInfo() { } func Send(conn net.Conn, msg *protocol.Message) (error, error) { - data := msg.Encode() - sendData := protocol.TlvEncode(data) + data := msg.Encode() + sendData := protocol.TlvEncode(data) data_length := len(sendData) send_count := 0 for { n, err := conn.Write(sendData[send_count:]) if err != nil { - return err, nil + return err, nil } if n+send_count >= data_length { send_count = send_count + n break } } - return nil, nil + return nil, nil } diff --git a/pkg/app/server/agentmanager/agentmanager.go b/pkg/app/server/agentmanager/agentmanager.go index 05fce5af3e1190d62db129191c2cf8ea8ebd6af8..b5186adb76a58440d8a2636275af86bdf69bf152 100644 --- a/pkg/app/server/agentmanager/agentmanager.go +++ b/pkg/app/server/agentmanager/agentmanager.go @@ -37,8 +37,12 @@ func (am *AgentManager) AddAgent(a *Agent) { am.agentMap.Store(a.UUID, a) } -func (am *AgentManager) GetAgent(a *Agent) { - am.agentMap.Store(a.UUID, a) +func (am *AgentManager) GetAgent(uuid string) *Agent { + agent, ok := am.agentMap.Load(uuid) + if ok { + return agent.(*Agent) + } + return nil } func (am *AgentManager) DeleteAgent(uuid string) { diff --git a/pkg/app/server/main.go b/pkg/app/server/main.go index 1e4b15bd9f1a06886a230e484dfa8e1820e43a5d..012cb1a1189f0f67f381762656f165761c44ea9d 100644 --- a/pkg/app/server/main.go +++ b/pkg/app/server/main.go @@ -1,11 +1,24 @@ package main import ( - "openeluer.org/PilotGo/PilotGo/pkg/app/server/agentmanager" - "openeluer.org/PilotGo/PilotGo/pkg/app/server/network" + "fmt" + "os" + + "openeluer.org/PilotGo/PilotGo/pkg/app/server/agentmanager" + "openeluer.org/PilotGo/PilotGo/pkg/app/server/network" + "openeluer.org/PilotGo/PilotGo/pkg/config" + "openeluer.org/PilotGo/PilotGo/pkg/logger" ) func main() { + conf, err := config.Load() + if err != nil { + fmt.Println("failed to load configure, exit..", err) + os.Exit(-1) + } + + logger.Init(conf) + logger.Info("Thanks to choose PilotGo!") server := &network.SocketServer{ // MessageProcesser: protocol.NewMessageProcesser(), @@ -19,7 +32,10 @@ func main() { server.Run("localhost:8879") }() - select {} + go func() { + // TODO: 此处启动 http server + network.HttpServerStart("localhost:8880") + }() + select {} } - diff --git a/pkg/app/server/network/handlers/agent.go b/pkg/app/server/network/handlers/agent.go new file mode 100644 index 0000000000000000000000000000000000000000..8cfb5532cb15f80d22bd0550eedfc7e14c1e1f77 --- /dev/null +++ b/pkg/app/server/network/handlers/agent.go @@ -0,0 +1,19 @@ +package handlers + +import ( + "net/http" + + "github.com/gin-gonic/gin" + "openeluer.org/PilotGo/PilotGo/pkg/app/server/agentmanager" +) + +func AgentInfoHandler(c *gin.Context) { + // TODO: process agent info + agent := agentmanager.GetAgentManager().GetAgent("uuid") + if agent != nil { + agent.GetInfo() + // TODO: 此处处理并返回agent信息 + } + + c.JSON(http.StatusOK, `{"status":-1}`) +} diff --git a/pkg/app/server/network/httpserver.go b/pkg/app/server/network/httpserver.go new file mode 100644 index 0000000000000000000000000000000000000000..76ca85bd67b09fb89969abfddcc219a4255495db --- /dev/null +++ b/pkg/app/server/network/httpserver.go @@ -0,0 +1,16 @@ +package network + +import ( + "github.com/gin-gonic/gin" + "openeluer.org/PilotGo/PilotGo/pkg/app/server/network/handlers" +) + +func HttpServerStart(addr string) error { + // TODO: 此处绑定 http api handler + r := gin.Default() + r.GET("/api/agent_info", handlers.AgentInfoHandler) + + // TODO: 此处绑定前端静态资源handler + + return r.Run(addr) +} diff --git a/pkg/net/http/server.go b/pkg/net/http/server.go index 9aaa9d365ba0b7ceedeea3ecb040d904c20463c9..68e1b634486987b9bafbe445152109fdc69036e3 100644 --- a/pkg/net/http/server.go +++ b/pkg/net/http/server.go @@ -68,7 +68,7 @@ func join_url_param(target_ip string, query string, start string, end string, st func EmailSender(c *gin.Context) { SrcIp := c.PostForm("ip") WarningData := c.PostForm("WarningData") - AlertApi := fmt.Sprintf("%s/api/v1/alerts", WaringData) + AlertApi := fmt.Sprintf("%s/api/v1/alerts", WarningData) jspull(SrcIp, AlertApi) }