added port number to the output

This commit is contained in:
Stefan Etringer 2025-05-23 14:52:50 +00:00
parent 41b0d8e355
commit 43847559ac
7 changed files with 27 additions and 14 deletions

View File

@ -39,13 +39,14 @@ type Message struct {
var conn *websocket.Conn 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 := url.Values{}
form.Add("agentId", agentId) form.Add("agentId", agentId)
form.Add("agentName", agentName) form.Add("agentName", agentName)
form.Add("agentType", agentType) form.Add("agentType", agentType)
form.Add("IPv4Address", agentIp) form.Add("IPv4Address", agentIp)
form.Add("addPort", addPort)
resp, err := http.PostForm(registerURL, form) resp, err := http.PostForm(registerURL, form)
if err != nil { if err != nil {
@ -58,7 +59,7 @@ func registerAgent(agentName, agentId, agentIp, agentType string) error {
} }
log.Printf("Agent %s successfully registered.", agentName) 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 return nil
} }

View File

@ -9,7 +9,8 @@ create table agents (
IPv4Address varchar(15), IPv4Address varchar(15),
initialContact timestamp, initialContact timestamp,
lastContact 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()); insert into agents (IPv4Address, agentId, agentName, initialContact, lastContact) values ( '127.0.0.1', 'testAgent', NOW(), NOW());

View File

@ -16,7 +16,6 @@ import (
"strconv" "strconv"
"sync" "sync"
"syscall" "syscall"
// "io"
"golang.org/x/net/html" "golang.org/x/net/html"
"gontrol/src/logger" "gontrol/src/logger"

View File

@ -19,6 +19,7 @@ type Agent struct {
LastContact string `json:"lastContact"` LastContact string `json:"lastContact"`
IPv4Address string `json:"IPv4Address"` IPv4Address string `json:"IPv4Address"`
Status string `json:"status"` Status string `json:"status"`
AddPort string `json:"addPort"`
} }
// var db *sql.DB // 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") agentId := r.FormValue("agentId")
agentType := r.FormValue("agentType") agentType := r.FormValue("agentType")
IPv4Address := r.FormValue("IPv4Address") IPv4Address := r.FormValue("IPv4Address")
addPort :=r.FormValue("addPort")
// initalContact := r.FormValue("initialContact") // initalContact := r.FormValue("initialContact")
// lastContact := r.FormValue("lastContact") // lastContact := r.FormValue("lastContact")
query := "INSERT INTO agents (agentId, agentName, agentType, IPv4Address, initialContact, lastContact) VALUES (?, ?, ?, ?, NOW(), NOW())" query := "INSERT INTO agents (agentId, agentName, agentType, IPv4Address, addPort, initialContact, lastContact) VALUES (?, ?, ?, ?, ?, NOW(), NOW())"
_, err = db.Exec(query, agentId, agentName, agentType, IPv4Address) _, err = db.Exec(query, agentId, agentName, agentType, IPv4Address, addPort)
if err != nil { if err != nil {
log.Printf("Database err is: %s", err) log.Printf("Database err is: %s", err)
http.Error(w, "Failed to create agent", http.StatusInternalServerError) 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) { 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) rows, err := db.Query(query)
if err != nil { if err != nil {
return nil, err return nil, err
@ -97,7 +99,7 @@ func GetAgents(db *sql.DB) ([]Agent, error) {
var agents []Agent var agents []Agent
for rows.Next() { for rows.Next() {
var agent Agent 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 { if err != nil {
return nil, err 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) { 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 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 { if err == sql.ErrNoRows {
http.Error(w, "Agent not found", http.StatusNotFound) http.Error(w, "Agent not found", http.StatusNotFound)
return Agent{} , err return Agent{} , err

View File

@ -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" registerURL := "http://localhost:3333/agents"
@ -56,6 +56,7 @@ func registerAgent(agentName, agentId, agentIp, agentType string) error {
form.Add("agentName", agentName) form.Add("agentName", agentName)
form.Add("agentType", agentType) form.Add("agentType", agentType)
form.Add("IPv4Address", agentIp) form.Add("IPv4Address", agentIp)
form.Add("addPort", addPort)
resp, err := http.PostForm(registerURL, form) resp, err := http.PostForm(registerURL, form)
if err != nil { if err != nil {
@ -175,6 +176,15 @@ func (wsh webSocketHandler) ServeHTTP(w http.ResponseWriter, r *http.Request){
agentId := r.URL.Query().Get("agentId") agentId := r.URL.Query().Get("agentId")
agentType := r.URL.Query().Get("agentType") agentType := r.URL.Query().Get("agentType")
agentName := "" 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() agentIds, err := getAgentIds()
if err != nil { if err != nil {
@ -184,7 +194,7 @@ func (wsh webSocketHandler) ServeHTTP(w http.ResponseWriter, r *http.Request){
if !containsId(agentIds, agentId) { if !containsId(agentIds, agentId) {
agentName = randomname.GenerateRandomName() agentName = randomname.GenerateRandomName()
registerAgent(agentName, agentId, agentIP, agentType) registerAgent(agentName, agentId, agentIP, agentType, addPort)
} else { } else {
agentDetails, _ := getAgentDetails(agentId) agentDetails, _ := getAgentDetails(agentId)
agentName = agentDetails.AgentName agentName = agentDetails.AgentName

View File

@ -108,5 +108,4 @@
</div> </div>
</div> </div>
</body> </body>
</html> </html>

View File

@ -4,8 +4,9 @@
<p>Name: {{.AgentName}}</p> <p>Name: {{.AgentName}}</p>
<p>Type: {{.AgentType}}</p> <p>Type: {{.AgentType}}</p>
<p>IP Addr: {{.IPv4Address}}</p> <p>IP Addr: {{.IPv4Address}}</p>
<p>Interactive Port: {{.AddPort}}</p>
<p>Initial Contact: {{.InitialContact}}</p> <p>Initial Contact: {{.InitialContact}}</p>
<p>Last Contact: {{.LastContact}}</p> <p>Last Contact: {{.LastContact}}</p>
<!-- <button hx-get="/proxyAgent?ip={{.IPv4Address}}" hx-target="#agentConnect" hx-swap="innerHTML">Open</button> --> <!-- <button hx-get="/proxyAgent?ip={{.IPv4Address}}" hx-target="#agentConnect" hx-swap="innerHTML">Open</button> -->
<a href="http://{{.IPv4Address}}:8080" class="btn btn-info" target="_blank">Open</a> <a href="http://{{.IPv4Address}}:{{.AddPort}}" class="btn btn-info" target="_blank">Open</a>
</div> </div>