feature-8 #9
3 changed files with 34 additions and 20 deletions
f-8: code: move flags from pkg to binari #8
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
commit
fc624e7e96
|
|
@ -1,9 +1,30 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
|
"log"
|
||||||
|
|
||||||
"git.g3e.fr/syonad/two/internal/metadata"
|
"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() {
|
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,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package metadata
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"flag"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
|
|
@ -15,13 +14,6 @@ import (
|
||||||
|
|
||||||
var data NoCloudData
|
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 {
|
func getIP(r *http.Request) string {
|
||||||
ip, _, err := net.SplitHostPort(r.RemoteAddr)
|
ip, _, err := net.SplitHostPort(r.RemoteAddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -54,20 +46,14 @@ func rootHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func StartServer() {
|
func StartServer(config Config) {
|
||||||
flag.Parse()
|
if config.Netns != "" {
|
||||||
|
if err := netns.Enter(config.Netns); err != nil {
|
||||||
if *netns_name != "" {
|
|
||||||
if err := netns.Enter(*netns_name); err != nil {
|
|
||||||
log.Fatalf("Impossible d'entrer dans le netns: %v", err)
|
log.Fatalf("Impossible d'entrer dans le netns: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if *file == "" {
|
raw, err := ioutil.ReadFile(config.File)
|
||||||
log.Fatal("Vous devez spécifier un fichier via --file")
|
|
||||||
}
|
|
||||||
|
|
||||||
raw, err := ioutil.ReadFile(*file)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Erreur de lecture du fichier: %v", err)
|
log.Fatalf("Erreur de lecture du fichier: %v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -78,7 +64,7 @@ func StartServer() {
|
||||||
|
|
||||||
http.HandleFunc("/", rootHandler)
|
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.Printf("Serveur NoCloud démarré sur http://%s/", address)
|
||||||
log.Fatal(http.ListenAndServe(address, nil))
|
log.Fatal(http.ListenAndServe(address, nil))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,3 +6,10 @@ type NoCloudData struct {
|
||||||
NetworkConfig string `json:"network-config"`
|
NetworkConfig string `json:"network-config"`
|
||||||
VendorData string `json:"vendor-data"`
|
VendorData string `json:"vendor-data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
Netns string
|
||||||
|
File string
|
||||||
|
Iface string
|
||||||
|
Port int
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue