From 5932d612c3c4b8668655d5521b4cca2efda279f8 Mon Sep 17 00:00:00 2001 From: julien Date: Wed, 18 Jun 2025 16:03:38 +0200 Subject: [PATCH] up --- main.go | 174 +++++++++++++++++++++++++++----------------------------- 1 file changed, 85 insertions(+), 89 deletions(-) diff --git a/main.go b/main.go index aaaf06e..231cd5f 100644 --- a/main.go +++ b/main.go @@ -9,10 +9,6 @@ import ( "net" "net/http" "time" - - "github.com/huin/goupnp/dcps/internetgateway1" - "github.com/jackpal/gateway" - "github.com/jackpal/go-nat-pmp" "github.com/gorilla/mux" ) @@ -37,7 +33,7 @@ func main() { protected.Use(handlers.AuthMiddleware) // 6. Enregistrer les routes protégées sur ce sous-routeur route.RoutesProtected(protected, bd) - setupPortMappingWithFallback(4000, 4000) + //setupPortMappingWithFallback(4000, 4000) // 6.5. Exposer le dossier upload fs := http.StripPrefix("/upload/", http.FileServer(http.Dir("/app/upload"))) r.PathPrefix("/upload/").Handler(fs) @@ -48,99 +44,99 @@ func main() { } // Fonction principale à appeler dans main() -func setupPortMappingWithFallback(internalPort, externalPort uint16) { - success := setupUPnPWithRenewal(internalPort, externalPort) - if !success { - log.Println("🔁 UPnP indisponible, tentative NAT-PMP...") - setupNATPMP(internalPort, externalPort) - } -} +// func setupPortMappingWithFallback(internalPort, externalPort uint16) { +// success := setupUPnPWithRenewal(internalPort, externalPort) +// if !success { +// log.Println("🔁 UPnP indisponible, tentative NAT-PMP...") +// setupNATPMP(internalPort, externalPort) +// } +// } -// UPnP avec renouvellement automatique -func setupUPnPWithRenewal(internalPort, externalPort uint16) bool { - clients, _, err := internetgateway1.NewWANIPConnection1Clients() - if err != nil { - log.Println("Erreur découverte UPnP :", err) - return false - } - if len(clients) == 0 { - log.Println("Aucun client UPnP détecté.") - return false - } +// // UPnP avec renouvellement automatique +// func setupUPnPWithRenewal(internalPort, externalPort uint16) bool { +// clients, _, err := internetgateway1.NewWANIPConnection1Clients() +// if err != nil { +// log.Println("Erreur découverte UPnP :", err) +// return false +// } +// if len(clients) == 0 { +// log.Println("Aucun client UPnP détecté.") +// return false +// } - localIP := getLocalIP() - log.Println("IP locale détectée :", localIP) - if localIP == "" { - log.Println("Impossible d’obtenir l’IP locale") - return false - } +// localIP := getLocalIP() +// log.Println("IP locale détectée :", localIP) +// if localIP == "" { +// log.Println("Impossible d’obtenir l’IP locale") +// return false +// } - client := clients[0] - protocol := "TCP" - description := "GoAutoExposition" - duration := uint32(3600) +// client := clients[0] +// protocol := "TCP" +// description := "GoAutoExposition" +// duration := uint32(3600) - mapPort := func() error { - err := client.AddPortMapping("", externalPort, protocol, internalPort, localIP, true, description, duration) - if err != nil { - log.Println("UPnP mapping échoué :", err) - return err - } - log.Printf("✅ [UPnP] Port %d externe redirigé vers %s:%d", externalPort, localIP, internalPort) - return nil - } +// mapPort := func() error { +// err := client.AddPortMapping("", externalPort, protocol, internalPort, localIP, true, description, duration) +// if err != nil { +// log.Println("UPnP mapping échoué :", err) +// return err +// } +// log.Printf("✅ [UPnP] Port %d externe redirigé vers %s:%d", externalPort, localIP, internalPort) +// return nil +// } - // Premier essai - if err := mapPort(); err != nil { - return false - } +// // Premier essai +// if err := mapPort(); err != nil { +// return false +// } - // Renouvellement - go func() { - for { - time.Sleep(55 * time.Minute) - mapPort() - } - }() +// // Renouvellement +// go func() { +// for { +// time.Sleep(55 * time.Minute) +// mapPort() +// } +// }() - return true -} +// return true +// } -// NAT-PMP fallback -func setupNATPMP(internalPort, externalPort uint16) { - gatewayIP := getGatewayIP() - if gatewayIP == "" { - log.Println("Impossible d’obtenir la gateway pour NAT-PMP") - return - } +// // NAT-PMP fallback +// func setupNATPMP(internalPort, externalPort uint16) { +// gatewayIP := getGatewayIP() +// if gatewayIP == "" { +// log.Println("Impossible d’obtenir la gateway pour NAT-PMP") +// return +// } - client := natpmp.NewClient(net.ParseIP(gatewayIP)) - _, err := client.AddPortMapping("tcp", int(internalPort), int(externalPort), 3600) - if err != nil { - log.Println("NAT-PMP mapping échoué :", err) - } else { - log.Printf("✅ [NAT-PMP] Port %d externe redirigé vers local :%d via NAT-PMP", externalPort, internalPort) - } -} +// client := natpmp.NewClient(net.ParseIP(gatewayIP)) +// _, err := client.AddPortMapping("tcp", int(internalPort), int(externalPort), 3600) +// if err != nil { +// log.Println("NAT-PMP mapping échoué :", err) +// } else { +// log.Printf("✅ [NAT-PMP] Port %d externe redirigé vers local :%d via NAT-PMP", externalPort, internalPort) +// } +// } -// Obtenir IP locale -func getLocalIP() string { - conn, err := net.Dial("udp", "8.8.8.8:80") - if err != nil { - return "" - } - defer conn.Close() - localAddr := conn.LocalAddr().(*net.UDPAddr) - return localAddr.IP.String() -} +// // Obtenir IP locale +// func getLocalIP() string { +// conn, err := net.Dial("udp", "8.8.8.8:80") +// if err != nil { +// return "" +// } +// defer conn.Close() +// localAddr := conn.LocalAddr().(*net.UDPAddr) +// return localAddr.IP.String() +// } -// Obtenir IP de la passerelle (gateway) locale -func getGatewayIP() string { - ip, err := gateway.DiscoverGateway() - if err != nil { - log.Println("Erreur récupération gateway réelle :", err) - return "" - } - return ip.String() -} +// // Obtenir IP de la passerelle (gateway) locale +// func getGatewayIP() string { +// ip, err := gateway.DiscoverGateway() +// if err != nil { +// log.Println("Erreur récupération gateway réelle :", err) +// return "" +// } +// return ip.String() +// }