From fc624e7e961cf283b604937dfc9ca7f8398cc2b2 Mon Sep 17 00:00:00 2001 From: GnomeZworc Date: Tue, 30 Dec 2025 21:27:35 +0100 Subject: [PATCH] f-8: code: move flags from pkg to binari #8 Signed-off-by: GnomeZworc --- cmd/metadata/main.go | 23 ++++++++++++++++++++++- internal/metadata/server.go | 24 +++++------------------- internal/metadata/struct.go | 7 +++++++ 3 files changed, 34 insertions(+), 20 deletions(-) diff --git a/cmd/metadata/main.go b/cmd/metadata/main.go index 54bae88..dc5bf29 100644 --- a/cmd/metadata/main.go +++ b/cmd/metadata/main.go @@ -1,9 +1,30 @@ package main import ( + "flag" + "log" + "git.g3e.fr/syonad/two/internal/metadata" ) +var ( + iface = flag.String("interface", "0.0.0.0", "Interface IP à écouter") + port = flag.Int("port", 8080, "Port à utiliser") + file = flag.String("file", "", "Fichier JSON contenant les données NoCloud") + netns_name = flag.String("netns", "", "Network namespace à utiliser") +) + func main() { - metadata.StartServer() + flag.Parse() + + if *file == "" { + log.Fatal("Vous devez spécifier un fichier via --file") + } + + metadata.StartServer(metadata.Config{ + Netns: *netns_name, + File: *file, + Iface: *iface, + Port: *port, + }) } diff --git a/internal/metadata/server.go b/internal/metadata/server.go index 2e43a1a..1cb9559 100644 --- a/internal/metadata/server.go +++ b/internal/metadata/server.go @@ -2,7 +2,6 @@ package metadata import ( "encoding/json" - "flag" "fmt" "io/ioutil" "log" @@ -15,13 +14,6 @@ import ( var data NoCloudData -var ( - iface = flag.String("interface", "0.0.0.0", "Interface IP à écouter") - port = flag.Int("port", 8080, "Port à utiliser") - file = flag.String("file", "", "Fichier JSON contenant les données NoCloud") - netns_name = flag.String("netns", "", "Network namespace à utiliser") -) - func getIP(r *http.Request) string { ip, _, err := net.SplitHostPort(r.RemoteAddr) if err != nil { @@ -54,20 +46,14 @@ func rootHandler(w http.ResponseWriter, r *http.Request) { } } -func StartServer() { - flag.Parse() - - if *netns_name != "" { - if err := netns.Enter(*netns_name); err != nil { +func StartServer(config Config) { + if config.Netns != "" { + if err := netns.Enter(config.Netns); err != nil { log.Fatalf("Impossible d'entrer dans le netns: %v", err) } } - if *file == "" { - log.Fatal("Vous devez spécifier un fichier via --file") - } - - raw, err := ioutil.ReadFile(*file) + raw, err := ioutil.ReadFile(config.File) if err != nil { log.Fatalf("Erreur de lecture du fichier: %v", err) } @@ -78,7 +64,7 @@ func StartServer() { http.HandleFunc("/", rootHandler) - address := fmt.Sprintf("%s:%d", *iface, *port) + address := fmt.Sprintf("%s:%d", config.Iface, config.Port) log.Printf("Serveur NoCloud démarré sur http://%s/", address) log.Fatal(http.ListenAndServe(address, nil)) } diff --git a/internal/metadata/struct.go b/internal/metadata/struct.go index f1edf18..bbf4bd7 100644 --- a/internal/metadata/struct.go +++ b/internal/metadata/struct.go @@ -6,3 +6,10 @@ type NoCloudData struct { NetworkConfig string `json:"network-config"` VendorData string `json:"vendor-data"` } + +type Config struct { + Netns string + File string + Iface string + Port int +}