From 04ee6b3076da106540d7041cf0e30abe999a6c25 Mon Sep 17 00:00:00 2001 From: Gzx1999 Date: Tue, 7 Dec 2021 00:23:01 +0800 Subject: [PATCH] add http server framework --- pkg/app/server/agentmanager/agent.go | 15 ++++++++----- pkg/app/server/agentmanager/agentmanager.go | 8 +++++-- pkg/app/server/main.go | 24 +++++++++++++++++---- pkg/app/server/network/handlers/agent.go | 19 ++++++++++++++++ pkg/app/server/network/httpserver.go | 16 ++++++++++++++ pkg/net/http/server.go | 2 +- 6 files changed, 72 insertions(+), 12 deletions(-) create mode 100644 pkg/app/server/network/handlers/agent.go create mode 100644 pkg/app/server/network/httpserver.go diff --git a/pkg/app/server/agentmanager/agent.go b/pkg/app/server/agentmanager/agent.go index 700e2c98..0b838d1d 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 05fce5af..b5186adb 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 1e4b15bd..012cb1a1 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 00000000..8cfb5532 --- /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 00000000..76ca85bd --- /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 9aaa9d36..68e1b634 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) } -- Gitee