diff --git a/.env b/.env index 21de03d..29b888b 100644 --- a/.env +++ b/.env @@ -1,7 +1,7 @@ #!/usr/bin/env sh -export DB_HOST="172.17.0.2" +export DB_HOST="127.0.0.1" export DB_PORT=3306 -export DB_USERNAME="root" -export DB_PASSWORD="root" +export DB_USERNAME="mysql" +export DB_PASSWORD="mysql" export DB_NAME="gomatic" diff --git a/.gitignore b/.gitignore index ee46fee..5f9b08d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.env gontrol bin/* build/ diff --git a/src/server/websocket/websocketServer.go b/src/server/websocket/websocketServer.go index 8cb7666..0399620 100644 --- a/src/server/websocket/websocketServer.go +++ b/src/server/websocket/websocketServer.go @@ -165,10 +165,24 @@ func Server() (*http.Server) { }, } + corsMiddleware := func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Access-Control-Allow-Origin", "*") // Allow the WebUI origin + w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS") + w.Header().Set("Access-Control-Allow-Headers", "Content-Type, HX-Current-URL, HX-Request, HX-Target, HX-Trigger, HX-Trigger-Name") + if r.Method == "OPTIONS" { + // Handle preflight requests + w.WriteHeader(http.StatusOK) + return + } + next.ServeHTTP(w, r) + }) + } + webSocketMux := http.NewServeMux() webSocketMux.Handle("/data", webSocketHandler) - webSocketMux.Handle("/executeCommand", executeCommand) - webSocketMux.Handle("/agentNames", getAgentNames) + webSocketMux.Handle("/executeCommand", corsMiddleware(http.HandlerFunc(executeCommand))) + webSocketMux.Handle("/agentNames", corsMiddleware(http.HandlerFunc(getAgentNames))) websocketServer := &http.Server{ Addr: ":5555", Handler: webSocketMux, diff --git a/templates/index.html b/templates/index.html index 7d96b00..649f620 100644 --- a/templates/index.html +++ b/templates/index.html @@ -31,6 +31,23 @@ }); }) .catch(error => console.error('Error fetching agent names:', error)); + + const socket = new WebSocket("ws://localhost:5555/data"); + socket.onmessage = (event) => { + const message = JSON.parse(event.data); + if (message.type === 'response') { + const output = document.getElementById('commandOutput'); + output.textContent = message.payload; + } + }; + + socket.onerror = (error) => { + console.error("Websocket error:", error); + }; + + socket.onclose = () => { + console.warn('Websocket connection closed.'); + }; }); @@ -45,7 +62,7 @@