From 021c4393dd6883202362950ccae130d4813086e3 Mon Sep 17 00:00:00 2001 From: qiaofeng1227 <76487013@qq.com> Date: Wed, 18 Oct 2023 22:15:10 +0800 Subject: [PATCH] Update environment.go --- docker/deployment/environment.go | 266 ++++++++++++++++--------------- 1 file changed, 135 insertions(+), 131 deletions(-) diff --git a/docker/deployment/environment.go b/docker/deployment/environment.go index b90e4e89..849884ee 100644 --- a/docker/deployment/environment.go +++ b/docker/deployment/environment.go @@ -1,136 +1,140 @@ -// package main - -// import ( -// "bytes" -// "encoding/json" -// "fmt" -// "io/ioutil" -// "net/http" -// "os" -// "time" -// ) - -// const ( -// AdminUser = "admin" -// EndpointURL = "http://localhost:8888/api/endpoints" -// AuthURL = "http://localhost:8888/api/auth" -// CredentialLoc = "/root/credential" -// ) - -// type Endpoint struct { -// Name string `json:"Name"` -// URL string `json:"URL"` -// } - -// type AuthResponse struct { -// Jwt string `json:"jwt"` -// } - -// func main() { -// var password string - -// for { -// if _, err := os.Stat(CredentialLoc); os.IsNotExist(err) { -// fmt.Printf("%s does not exist, waiting for 3 seconds...\n", CredentialLoc) -// time.Sleep(3 * time.Second) -// } else { -// fmt.Printf("%s exists, proceeding...\n", CredentialLoc) -// data, err := ioutil.ReadFile(CredentialLoc) -// if err != nil { -// fmt.Println("Failed to read file:", err) -// return -// } -// password = string(data) -// break -// } -// } - -// client := &http.Client{} -// req, err := http.NewRequest("GET", AuthURL, nil) -// req.SetBasicAuth(AdminUser, password) -// resp, err := client.Do(req) -// if err != nil { -// fmt.Println("Failed to make request:", err) -// return -// } -// defer resp.Body.Close() - -// body, err := ioutil.ReadAll(resp.Body) -// if err != nil { -// fmt.Println("Failed to read response:", err) -// return -// } - -// fmt.Printf("Received body: %s\n", string(body)) - -// var authResponse AuthResponse -// err = json.Unmarshal(body, &authResponse) -// if err != nil { -// fmt.Println("Failed to parse JSON:", err) -// return -// } - -// fmt.Printf("Received JWT: %s\n", authResponse.Jwt) - -// req, err = http.NewRequest("GET", EndpointURL, nil) -// req.Header.Set("Authorization", "Bearer "+authResponse.Jwt) -// resp, err = client.Do(req) -// if err != nil { -// fmt.Println("Failed to make request:", err) -// return -// } -// defer resp.Body.Close() - -// body, err = ioutil.ReadAll(resp.Body) -// if err != nil { -// fmt.Println("Failed to read response:", err) -// return -// } - -// var endpoints []Endpoint -// err = json.Unmarshal(body, &endpoints) -// if err != nil { -// fmt.Println("Failed to parse JSON:", err) -// return -// } - -// for _, endpoint := range endpoints { -// if endpoint.Name == "local" && endpoint.URL == "/var/run/docker.sock" { -// fmt.Println("Endpoint exists, exiting...") -// return -// } -// } - -// fmt.Println("Endpoint does not exist, creating...") -// endpoint := Endpoint{ -// Name: "local", -// URL: "/var/run/docker.sock", -// } -// data, err := json.Marshal(endpoint) -// if err != nil { -// fmt.Println("Failed to encode JSON:", err) -// return -// } - -// req, err = http.NewRequest("POST", EndpointURL, bytes.NewBuffer(data)) -// req.Header.Set("Authorization", "Bearer "+authResponse.Jwt) -// resp, err = client.Do(req) -// if err != nil { -// fmt.Println("Failed to make request:", err) -// return -// } - -// if resp.StatusCode != http.StatusCreated { -// fmt.Println("Failed to create endpoint:", resp.Status) -// } else { -// fmt.Println("Endpoint created successfully") -// } -// } - package main -import "fmt" +import ( + "bytes" + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "os" + "time" +) + +const ( + AdminUser = "admin" + EndpointURL = "http://localhost:8888/api/endpoints" + AuthURL = "http://localhost:8888/api/auth" + CredentialLoc = "/data/credential" +) + +type Endpoint struct { + Name string `json:"Name"` + URL string `json:"URL"` +} + +type AuthResponse struct { + Jwt string `json:"jwt"` +} + +type Credentials struct { + Username string `json:"Username"` + Password string `json:"Password"` +} func main() { - fmt.Println("Hello World") + var password string + + for { + if _, err := os.Stat(CredentialLoc); os.IsNotExist(err) { + fmt.Printf("%s does not exist, waiting for 3 seconds...\n", CredentialLoc) + time.Sleep(3 * time.Second) + } else { + fmt.Printf("%s exists, proceeding...\n", CredentialLoc) + data, err := ioutil.ReadFile(CredentialLoc) + if err != nil { + fmt.Println("Failed to read file:", err) + return + } + password = string(data) + break + } + } + + client := &http.Client{} + credentials := Credentials{Username: AdminUser, Password: password} + credentialsJson, err := json.Marshal(credentials) + if err != nil { + fmt.Println("Failed to encode JSON:", err) + return + } + + req, err := http.NewRequest("POST", AuthURL, bytes.NewBuffer(credentialsJson)) + req.Header.Set("Content-Type", "application/json") + resp, err := client.Do(req) + if err != nil { + fmt.Println("Failed to make request:", err) + return + } + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + fmt.Println("Failed to read response:", err) + return + } + + fmt.Printf("Received body: %s\n", string(body)) + + var authResponse AuthResponse + err = json.Unmarshal(body, &authResponse) + if err != nil { + fmt.Println("Failed to parse JSON:", err) + return + } + + fmt.Printf("Received JWT: %s\n", authResponse.Jwt) + + req, err = http.NewRequest("GET", EndpointURL, nil) + req.Header.Set("Authorization", "Bearer "+authResponse.Jwt) + resp, err = client.Do(req) + if err != nil { + fmt.Println("Failed to make request:", err) + return + } + defer resp.Body.Close() + + body, err = ioutil.ReadAll(resp.Body) + if err != nil { + fmt.Println("Failed to read response:", err) + return + } + + var endpoints []Endpoint + err = json.Unmarshal(body, &endpoints) + if err != nil { + fmt.Println("Failed to parse JSON:", err) + return + } + + for _, endpoint := range endpoints { + if endpoint.Name == "local" { + fmt.Println("Endpoint exists, exiting...") + return + } + } + + fmt.Println("Endpoint does not exist, creating...") + endpoint := Endpoint{ + Name: "local", + URL: "/var/run/docker.sock", + } + data, err := json.Marshal(endpoint) + if err != nil { + fmt.Println("Failed to encode JSON:", err) + return + } + + req, err = http.NewRequest("POST", EndpointURL, bytes.NewBuffer(data)) + req.Header.Set("Authorization", "Bearer "+authResponse.Jwt) + resp, err = client.Do(req) + if err != nil { + fmt.Println("Failed to make request:", err) + return + } + + if resp.StatusCode != http.StatusCreated { + fmt.Println("Failed to create endpoint:", resp.Status) + } else { + fmt.Println("Endpoint created successfully") + } }