mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 02:28:09 +00:00 
			
		
		
		
	 e0bfb73815
			
		
	
	e0bfb73815
	
	
	
		
			
			* Customizing HTTP headers in the config file * Add changelog, fix bad imports * fixing some bugs * fixing interaction of custom headers and /ui * Defining a member in core to set custom response headers * missing additional file * Some refactoring * Adding automated tests for the feature * Changing some error messages based on some recommendations * Incorporating custom response headers struct into the request context * removing some unused references * fixing a test * changing some error messages, removing a default header value from /ui * fixing a test * wrapping ResponseWriter to set the custom headers * adding a new test * some cleanup * removing some extra lines * Addressing comments * fixing some agent tests * skipping custom headers from agent listener config, removing two of the default headers as they cause issues with Vault in UI mode Adding X-Content-Type-Options to the ui default headers Let Content-Type be set as before * Removing default custom headers, and renaming some function varibles * some refacotring * Refactoring and addressing comments * removing a function and fixing comments
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package http
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"net/http"
 | |
| 
 | |
| 	"github.com/hashicorp/vault/helper/metricsutil"
 | |
| 	"github.com/hashicorp/vault/sdk/logical"
 | |
| 	"github.com/hashicorp/vault/vault"
 | |
| )
 | |
| 
 | |
| func handleMetricsUnauthenticated(core *vault.Core) http.Handler {
 | |
| 	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 | |
| 		req := &logical.Request{Headers: r.Header}
 | |
| 
 | |
| 		switch r.Method {
 | |
| 		case "GET":
 | |
| 		default:
 | |
| 			respondError(w, http.StatusMethodNotAllowed, nil)
 | |
| 			return
 | |
| 		}
 | |
| 
 | |
| 		// Parse form
 | |
| 		if err := r.ParseForm(); err != nil {
 | |
| 			respondError(w, http.StatusBadRequest, err)
 | |
| 			return
 | |
| 		}
 | |
| 
 | |
| 		format := r.Form.Get("format")
 | |
| 		if format == "" {
 | |
| 			format = metricsutil.FormatFromRequest(req)
 | |
| 		}
 | |
| 
 | |
| 		// Define response
 | |
| 		resp := core.MetricsHelper().ResponseForFormat(format)
 | |
| 
 | |
| 		// Manually extract the logical response and send back the information
 | |
| 		status := resp.Data[logical.HTTPStatusCode].(int)
 | |
| 		w.Header().Set("Content-Type", resp.Data[logical.HTTPContentType].(string))
 | |
| 		switch v := resp.Data[logical.HTTPRawBody].(type) {
 | |
| 		case string:
 | |
| 			w.WriteHeader(status)
 | |
| 			w.Write([]byte(v))
 | |
| 		case []byte:
 | |
| 			w.WriteHeader(status)
 | |
| 			w.Write(v)
 | |
| 		default:
 | |
| 			respondError(w, http.StatusInternalServerError, fmt.Errorf("wrong response returned"))
 | |
| 		}
 | |
| 	})
 | |
| }
 |