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
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
}

View File

@ -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());

View File

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

View File

@ -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

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"
@ -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

View File

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

View File

@ -4,8 +4,9 @@
<p>Name: {{.AgentName}}</p>
<p>Type: {{.AgentType}}</p>
<p>IP Addr: {{.IPv4Address}}</p>
<p>Interactive Port: {{.AddPort}}</p>
<p>Initial Contact: {{.InitialContact}}</p>
<p>Last Contact: {{.LastContact}}</p>
<!-- <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>