in pkg/proxy/proxy.go [156:189]
func (p *proxy) defaultPathHandler(w http.ResponseWriter, r *http.Request) {
client := &http.Client{}
req, err := http.NewRequest(r.Method, r.URL.String(), r.Body)
if err != nil || req == nil {
p.logger.Error("failed to create new request", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
host := fmt.Sprintf("%s:%d", metadataIPAddress, metadataPort)
req.Host = host
req.URL.Host = host
req.URL.Scheme = "http"
if r.Header != nil {
copyHeader(req.Header, r.Header)
}
resp, err := client.Do(req)
if err != nil {
p.logger.Error("failed executing request", err, "url", req.URL.String())
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
p.logger.Error("failed to read response body", err, "url", req.URL.String())
http.Error(w, err.Error(), http.StatusInternalServerError)
}
p.logger.Info("received response from IMDS", "method", r.Method, "uri", r.RequestURI, "status", resp.StatusCode)
copyHeader(w.Header(), resp.Header)
w.WriteHeader(resp.StatusCode)
_, _ = w.Write(body)
}