added hostname parameter
This commit is contained in:
parent
380ff26eef
commit
20afb2f216
4
main.go
4
main.go
|
@ -491,7 +491,7 @@ func handler(w http.ResponseWriter, r *http.Request) {
|
||||||
tmpl.Execute(w, data)
|
tmpl.Execute(w, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
func startMainServer() (int, net.Listener) {
|
func startInteractiveServer() (int, net.Listener) {
|
||||||
|
|
||||||
http.HandleFunc("/", handler)
|
http.HandleFunc("/", handler)
|
||||||
http.HandleFunc("/upload", fileUploadHandler)
|
http.HandleFunc("/upload", fileUploadHandler)
|
||||||
|
@ -529,7 +529,7 @@ func main() {
|
||||||
// log.Println("Using port:", listener.Addr().(*net.TCPAddr).Port)
|
// log.Println("Using port:", listener.Addr().(*net.TCPAddr).Port)
|
||||||
// log.Fatal(http.Serve(listener, nil))
|
// log.Fatal(http.Serve(listener, nil))
|
||||||
|
|
||||||
port, listener := startMainServer()
|
port, listener := startInteractiveServer()
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
wg.Add(2)
|
wg.Add(2)
|
||||||
|
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"os"
|
||||||
"time"
|
"time"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"math"
|
"math"
|
||||||
|
@ -30,6 +31,7 @@ type Agent struct {
|
||||||
InitialContact string `json:"initialContact"`
|
InitialContact string `json:"initialContact"`
|
||||||
LastContact string `json:"lastContact"`
|
LastContact string `json:"lastContact"`
|
||||||
AddPort string `json:"addPort"`
|
AddPort string `json:"addPort"`
|
||||||
|
HostName string `json:"HostName"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Message struct {
|
type Message struct {
|
||||||
|
@ -39,7 +41,7 @@ type Message struct {
|
||||||
|
|
||||||
var conn *websocket.Conn
|
var conn *websocket.Conn
|
||||||
|
|
||||||
func registerAgent(agentName, agentId, agentIp, agentType, addPort string) error {
|
func registerAgent(agentName, agentId, agentIp, agentType, addPort, hostname string) error {
|
||||||
|
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Add("agentId", agentId)
|
form.Add("agentId", agentId)
|
||||||
|
@ -47,6 +49,7 @@ func registerAgent(agentName, agentId, agentIp, agentType, addPort string) error
|
||||||
form.Add("agentType", agentType)
|
form.Add("agentType", agentType)
|
||||||
form.Add("IPv4Address", agentIp)
|
form.Add("IPv4Address", agentIp)
|
||||||
form.Add("addPort", addPort)
|
form.Add("addPort", addPort)
|
||||||
|
form.Add("hostname", hostname)
|
||||||
|
|
||||||
resp, err := http.PostForm(registerURL, form)
|
resp, err := http.PostForm(registerURL, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -62,8 +65,17 @@ func registerAgent(agentName, agentId, agentIp, agentType, addPort string) error
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func connectToWebSocket(agentName, agentId, agentIp, agentType, addPort string) error {
|
func connectToWebSocket(agentName, agentId, agentIp, agentType, addPort, hostname string) error {
|
||||||
wsURL := fmt.Sprintf("ws://%s/data?agentName=%s&agentId=%s&IPv4Address=%s&agentType=%s&addPort=%s", webSocketAddr, url.QueryEscape(agentName), url.QueryEscape(agentId), url.QueryEscape(agentIp), url.QueryEscape(agentType), url.QueryEscape(addPort))
|
wsURL := fmt.Sprintf(
|
||||||
|
"ws://%s/data?agentName=%s&agentId=%s&IPv4Address=%s&agentType=%s&addPort=%s&hostname=%s",
|
||||||
|
webSocketAddr,
|
||||||
|
url.QueryEscape(agentName),
|
||||||
|
url.QueryEscape(agentId),
|
||||||
|
url.QueryEscape(agentIp),
|
||||||
|
url.QueryEscape(agentType),
|
||||||
|
url.QueryEscape(addPort),
|
||||||
|
url.QueryEscape(hostname),
|
||||||
|
)
|
||||||
var err error
|
var err error
|
||||||
for {
|
for {
|
||||||
conn, _, err = websocket.DefaultDialer.Dial(wsURL, nil)
|
conn, _, err = websocket.DefaultDialer.Dial(wsURL, nil)
|
||||||
|
@ -78,13 +90,13 @@ func connectToWebSocket(agentName, agentId, agentIp, agentType, addPort string)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func reconnectToWebSocket(agentName, agentId, agentIp, agentType, addPort string) error {
|
func reconnectToWebSocket(agentName, agentId, agentIp, agentType, addPort, hostname string) error {
|
||||||
backoff := 2 * time.Second
|
backoff := 2 * time.Second
|
||||||
maxBackoff := 1 * time.Minute
|
maxBackoff := 1 * time.Minute
|
||||||
|
|
||||||
for {
|
for {
|
||||||
log.Println("Attempting to reconnect to WebSocket...")
|
log.Println("Attempting to reconnect to WebSocket...")
|
||||||
err := connectToWebSocket(agentName, agentId, agentIp, agentType, addPort)
|
err := connectToWebSocket(agentName, agentId, agentIp, agentType, addPort, hostname)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
log.Println("Reconnection succesful.")
|
log.Println("Reconnection succesful.")
|
||||||
return nil
|
return nil
|
||||||
|
@ -100,14 +112,14 @@ func reconnectToWebSocket(agentName, agentId, agentIp, agentType, addPort string
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func listenForCommands(agentName, agentId, agentIp, agentType, addPort string) {
|
func listenForCommands(agentName, agentId, agentIp, agentType, addPort, hostname string) {
|
||||||
defer conn.Close()
|
defer conn.Close()
|
||||||
|
|
||||||
for {
|
for {
|
||||||
_, rawMessage, err := conn.ReadMessage()
|
_, rawMessage, err := conn.ReadMessage()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Connection lost: %v", err)
|
log.Printf("Connection lost: %v", err)
|
||||||
if reconnectErr := reconnectToWebSocket(agentName, agentId, agentIp, agentType, addPort); reconnectErr != nil {
|
if reconnectErr := reconnectToWebSocket(agentName, agentId, agentIp, agentType, addPort, hostname); reconnectErr != nil {
|
||||||
log.Printf("Critical error during reconnection: %v", reconnectErr)
|
log.Printf("Critical error during reconnection: %v", reconnectErr)
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
|
@ -165,6 +177,7 @@ func StartServer(agentInteractivePort int){
|
||||||
agentIp := "127.0.0.1"
|
agentIp := "127.0.0.1"
|
||||||
agentType := "Interactive"
|
agentType := "Interactive"
|
||||||
addPort := strconv.Itoa(agentInteractivePort)
|
addPort := strconv.Itoa(agentInteractivePort)
|
||||||
|
hostname, _ := os.Hostname()
|
||||||
|
|
||||||
log.Printf("AgentId: %s", agentId)
|
log.Printf("AgentId: %s", agentId)
|
||||||
|
|
||||||
|
@ -174,9 +187,9 @@ func StartServer(agentInteractivePort int){
|
||||||
// log.Fatalf("Agent registration failed: %v", err)
|
// log.Fatalf("Agent registration failed: %v", err)
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if err := connectToWebSocket(agentName, agentId, agentIp, agentType, addPort); err != nil {
|
if err := connectToWebSocket(agentName, agentId, agentIp, agentType, addPort, hostname); err != nil {
|
||||||
log.Fatalf("Websocket connection failed: %v", err)
|
log.Fatalf("Websocket connection failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
listenForCommands(agentName, agentId, agentIp, agentType, addPort)
|
listenForCommands(agentName, agentId, agentIp, agentType, addPort, hostname)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue