From 43847559ace4042ff16c34ced480db54a02cee80 Mon Sep 17 00:00:00 2001 From: Stefan Etringer Date: Fri, 23 May 2025 14:52:50 +0000 Subject: [PATCH] added port number to the output --- agents/agent.go | 5 +++-- gomatic.sql | 3 ++- main.go | 1 - src/server/api/agentApi.go | 14 ++++++++------ src/server/websocket/websocketServer.go | 14 ++++++++++++-- templates/index.html | 1 - templates/partials/agent_detail.html | 3 ++- 7 files changed, 27 insertions(+), 14 deletions(-) diff --git a/agents/agent.go b/agents/agent.go index 8d7f819..2f04dd3 100644 --- a/agents/agent.go +++ b/agents/agent.go @@ -39,13 +39,14 @@ type Message struct { var conn *websocket.Conn -func registerAgent(agentName, agentId, agentIp, agentType string) error { +func registerAgent(agentName, agentId, agentIp, agentType, addPort string) error { form := url.Values{} form.Add("agentId", agentId) form.Add("agentName", agentName) form.Add("agentType", agentType) form.Add("IPv4Address", agentIp) + form.Add("addPort", addPort) resp, err := http.PostForm(registerURL, form) if err != nil { @@ -58,7 +59,7 @@ func registerAgent(agentName, agentId, agentIp, agentType string) error { } log.Printf("Agent %s successfully registered.", agentName) - logger.LogEntries = append(logger.LogEntries, fmt.Sprintf("%s Agent successfully registered.", time.Now().Format(time.RFC3339))) + // append(logger.LogEntries, fmt.Sprintf("%s Agent successfully registered.", time.Now().Format(time.RFC3339))) return nil } diff --git a/gomatic.sql b/gomatic.sql index fb896a0..dd7c6f3 100644 --- a/gomatic.sql +++ b/gomatic.sql @@ -9,7 +9,8 @@ create table agents ( IPv4Address varchar(15), initialContact timestamp, lastContact timestamp, - status Boolean + status Boolean, + addPort varchar(255) ); insert into agents (IPv4Address, agentId, agentName, initialContact, lastContact) values ( '127.0.0.1', 'testAgent', NOW(), NOW()); diff --git a/main.go b/main.go index 7d87bdd..2b7a74a 100644 --- a/main.go +++ b/main.go @@ -16,7 +16,6 @@ import ( "strconv" "sync" "syscall" - // "io" "golang.org/x/net/html" "gontrol/src/logger" diff --git a/src/server/api/agentApi.go b/src/server/api/agentApi.go index db1394f..752534c 100644 --- a/src/server/api/agentApi.go +++ b/src/server/api/agentApi.go @@ -19,6 +19,7 @@ type Agent struct { LastContact string `json:"lastContact"` IPv4Address string `json:"IPv4Address"` Status string `json:"status"` + AddPort string `json:"addPort"` } // var db *sql.DB @@ -50,11 +51,12 @@ func CreateAgent(db *sql.DB, w http.ResponseWriter, r * http.Request) (http.Resp agentId := r.FormValue("agentId") agentType := r.FormValue("agentType") IPv4Address := r.FormValue("IPv4Address") + addPort :=r.FormValue("addPort") // initalContact := r.FormValue("initialContact") // lastContact := r.FormValue("lastContact") - query := "INSERT INTO agents (agentId, agentName, agentType, IPv4Address, initialContact, lastContact) VALUES (?, ?, ?, ?, NOW(), NOW())" - _, err = db.Exec(query, agentId, agentName, agentType, IPv4Address) + query := "INSERT INTO agents (agentId, agentName, agentType, IPv4Address, addPort, initialContact, lastContact) VALUES (?, ?, ?, ?, ?, NOW(), NOW())" + _, err = db.Exec(query, agentId, agentName, agentType, IPv4Address, addPort) if err != nil { log.Printf("Database err is: %s", err) http.Error(w, "Failed to create agent", http.StatusInternalServerError) @@ -87,7 +89,7 @@ func UpdateAgent(db *sql.DB, w http.ResponseWriter, r *http.Request, agentId str } func GetAgents(db *sql.DB) ([]Agent, error) { - query := "SELECT agentId, agentName, agentType, IPv4Address, initialContact, lastContact FROM agents" + query := "SELECT agentId, agentName, agentType, IPv4Address, addPort, initialContact, lastContact FROM agents" rows, err := db.Query(query) if err != nil { return nil, err @@ -97,7 +99,7 @@ func GetAgents(db *sql.DB) ([]Agent, error) { var agents []Agent for rows.Next() { var agent Agent - err := rows.Scan(&agent.AgentID, &agent.AgentName, &agent.AgentType, &agent.IPv4Address, &agent.InitialContact, &agent.LastContact) + err := rows.Scan(&agent.AgentID, &agent.AgentName, &agent.AgentType, &agent.IPv4Address, &agent.AddPort, &agent.InitialContact, &agent.LastContact) if err != nil { return nil, err } @@ -107,9 +109,9 @@ func GetAgents(db *sql.DB) ([]Agent, error) { } func GetAgent(db *sql.DB, w http.ResponseWriter, r *http.Request, agentId string) (Agent, error) { - query := "Select agentId, agentName, agentType, IPv4Address, initialContact, lastContact from agents where agentId = ?" + query := "Select agentId, agentName, agentType, IPv4Address, addPort, initialContact, lastContact from agents where agentId = ?" var agent Agent - err := db.QueryRow(query, agentId).Scan(&agent.AgentID, &agent.AgentName, &agent.AgentType,&agent.IPv4Address, &agent.InitialContact, &agent.LastContact) + err := db.QueryRow(query, agentId).Scan(&agent.AgentID, &agent.AgentName, &agent.AgentType, &agent.IPv4Address, &agent.AddPort, &agent.InitialContact, &agent.LastContact) if err == sql.ErrNoRows { http.Error(w, "Agent not found", http.StatusNotFound) return Agent{} , err diff --git a/src/server/websocket/websocketServer.go b/src/server/websocket/websocketServer.go index 14c8349..c612165 100644 --- a/src/server/websocket/websocketServer.go +++ b/src/server/websocket/websocketServer.go @@ -47,7 +47,7 @@ var getAgentNames http.HandlerFunc = func(w http.ResponseWriter, r *http.Request } -func registerAgent(agentName, agentId, agentIp, agentType string) error { +func registerAgent(agentName, agentId, agentIp, agentType, addPort string) error { registerURL := "http://localhost:3333/agents" @@ -56,6 +56,7 @@ func registerAgent(agentName, agentId, agentIp, agentType string) error { form.Add("agentName", agentName) form.Add("agentType", agentType) form.Add("IPv4Address", agentIp) + form.Add("addPort", addPort) resp, err := http.PostForm(registerURL, form) if err != nil { @@ -175,6 +176,15 @@ func (wsh webSocketHandler) ServeHTTP(w http.ResponseWriter, r *http.Request){ agentId := r.URL.Query().Get("agentId") agentType := r.URL.Query().Get("agentType") agentName := "" + log.Println("addPort is the following") + log.Println(r.URL.Query().Get("addPort")) + + addPort := "" + if len(r.URL.Query().Get("addPort")) > 0 { + addPort = r.URL.Query().Get("addPort") + } else { + addPort = "None" + } agentIds, err := getAgentIds() if err != nil { @@ -184,7 +194,7 @@ func (wsh webSocketHandler) ServeHTTP(w http.ResponseWriter, r *http.Request){ if !containsId(agentIds, agentId) { agentName = randomname.GenerateRandomName() - registerAgent(agentName, agentId, agentIP, agentType) + registerAgent(agentName, agentId, agentIP, agentType, addPort) } else { agentDetails, _ := getAgentDetails(agentId) agentName = agentDetails.AgentName diff --git a/templates/index.html b/templates/index.html index 20d4241..5cdd538 100644 --- a/templates/index.html +++ b/templates/index.html @@ -108,5 +108,4 @@ - diff --git a/templates/partials/agent_detail.html b/templates/partials/agent_detail.html index 154eec3..7dfb50c 100644 --- a/templates/partials/agent_detail.html +++ b/templates/partials/agent_detail.html @@ -4,8 +4,9 @@

Name: {{.AgentName}}

Type: {{.AgentType}}

IP Addr: {{.IPv4Address}}

+

Interactive Port: {{.AddPort}}

Initial Contact: {{.InitialContact}}

Last Contact: {{.LastContact}}

- Open + Open