mirror of
https://github.com/status-im/consul.git
synced 2025-02-16 15:47:21 +00:00
URL-encode/decode resource names for HTTP API part 3 (#12103)
This commit is contained in:
parent
295ef2e023
commit
759dd93544
@ -6,7 +6,6 @@ import (
|
||||
"io"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/hashicorp/consul/acl"
|
||||
@ -21,7 +20,11 @@ func (s *HTTPHandlers) EventFire(resp http.ResponseWriter, req *http.Request) (i
|
||||
s.parseDC(req, &dc)
|
||||
|
||||
event := &UserEvent{}
|
||||
event.Name = strings.TrimPrefix(req.URL.Path, "/v1/event/fire/")
|
||||
var err error
|
||||
event.Name, err = getPathSuffixUnescaped(req.URL.Path, "/v1/event/fire/")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if event.Name == "" {
|
||||
resp.WriteHeader(http.StatusBadRequest)
|
||||
fmt.Fprint(resp, "Missing name")
|
||||
|
@ -2,14 +2,16 @@ package agent
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/hashicorp/consul/agent/structs"
|
||||
)
|
||||
|
||||
// GET /v1/internal/federation-state/<datacenter>
|
||||
func (s *HTTPHandlers) FederationStateGet(resp http.ResponseWriter, req *http.Request) (interface{}, error) {
|
||||
datacenterName := strings.TrimPrefix(req.URL.Path, "/v1/internal/federation-state/")
|
||||
datacenterName, err := getPathSuffixUnescaped(req.URL.Path, "/v1/internal/federation-state/")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if datacenterName == "" {
|
||||
return nil, BadRequestError{Reason: "Missing datacenter name"}
|
||||
}
|
||||
|
@ -30,7 +30,11 @@ func (s *HTTPHandlers) HealthChecksInState(resp http.ResponseWriter, req *http.R
|
||||
}
|
||||
|
||||
// Pull out the service name
|
||||
args.State = strings.TrimPrefix(req.URL.Path, "/v1/health/state/")
|
||||
var err error
|
||||
args.State, err = getPathSuffixUnescaped(req.URL.Path, "/v1/health/state/")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if args.State == "" {
|
||||
resp.WriteHeader(http.StatusBadRequest)
|
||||
fmt.Fprint(resp, "Missing check state")
|
||||
|
@ -486,7 +486,10 @@ func parseIntentionStringComponent(input string, entMeta *structs.EnterpriseMeta
|
||||
// IntentionSpecific handles the endpoint for /v1/connect/intentions/:id.
|
||||
// Deprecated: use IntentionExact.
|
||||
func (s *HTTPHandlers) IntentionSpecific(resp http.ResponseWriter, req *http.Request) (interface{}, error) {
|
||||
id := strings.TrimPrefix(req.URL.Path, "/v1/connect/intentions/")
|
||||
id, err := getPathSuffixUnescaped(req.URL.Path, "/v1/connect/intentions/")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
switch req.Method {
|
||||
case "GET":
|
||||
|
@ -6,7 +6,6 @@ import (
|
||||
"io"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/hashicorp/consul/agent/structs"
|
||||
"github.com/hashicorp/consul/api"
|
||||
@ -20,7 +19,11 @@ func (s *HTTPHandlers) KVSEndpoint(resp http.ResponseWriter, req *http.Request)
|
||||
}
|
||||
|
||||
// Pull out the key name, validation left to each sub-handler
|
||||
args.Key = strings.TrimPrefix(req.URL.Path, "/v1/kv/")
|
||||
var err error
|
||||
args.Key, err = getPathSuffixUnescaped(req.URL.Path, "/v1/kv/")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Check for a key list
|
||||
keyList := false
|
||||
|
@ -319,7 +319,10 @@ func (s *HTTPHandlers) PreparedQuerySpecific(resp http.ResponseWriter, req *http
|
||||
}
|
||||
|
||||
path := req.URL.Path
|
||||
id := strings.TrimPrefix(path, "/v1/query/")
|
||||
id, err := getPathSuffixUnescaped(path, "/v1/query/")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
switch {
|
||||
case strings.HasSuffix(path, "/execute"):
|
||||
|
@ -3,7 +3,6 @@ package agent
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/hashicorp/consul/agent/structs"
|
||||
@ -72,7 +71,11 @@ func (s *HTTPHandlers) SessionDestroy(resp http.ResponseWriter, req *http.Reques
|
||||
}
|
||||
|
||||
// Pull out the session id
|
||||
args.Session.ID = strings.TrimPrefix(req.URL.Path, "/v1/session/destroy/")
|
||||
var err error
|
||||
args.Session.ID, err = getPathSuffixUnescaped(req.URL.Path, "/v1/session/destroy/")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if args.Session.ID == "" {
|
||||
resp.WriteHeader(http.StatusBadRequest)
|
||||
fmt.Fprint(resp, "Missing session")
|
||||
@ -97,7 +100,11 @@ func (s *HTTPHandlers) SessionRenew(resp http.ResponseWriter, req *http.Request)
|
||||
}
|
||||
|
||||
// Pull out the session id
|
||||
args.SessionID = strings.TrimPrefix(req.URL.Path, "/v1/session/renew/")
|
||||
var err error
|
||||
args.SessionID, err = getPathSuffixUnescaped(req.URL.Path, "/v1/session/renew/")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
args.Session = args.SessionID
|
||||
if args.SessionID == "" {
|
||||
resp.WriteHeader(http.StatusBadRequest)
|
||||
@ -128,7 +135,11 @@ func (s *HTTPHandlers) SessionGet(resp http.ResponseWriter, req *http.Request) (
|
||||
}
|
||||
|
||||
// Pull out the session id
|
||||
args.SessionID = strings.TrimPrefix(req.URL.Path, "/v1/session/info/")
|
||||
var err error
|
||||
args.SessionID, err = getPathSuffixUnescaped(req.URL.Path, "/v1/session/info/")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
args.Session = args.SessionID
|
||||
if args.SessionID == "" {
|
||||
resp.WriteHeader(http.StatusBadRequest)
|
||||
@ -183,7 +194,11 @@ func (s *HTTPHandlers) SessionsForNode(resp http.ResponseWriter, req *http.Reque
|
||||
}
|
||||
|
||||
// Pull out the node name
|
||||
args.Node = strings.TrimPrefix(req.URL.Path, "/v1/session/node/")
|
||||
var err error
|
||||
args.Node, err = getPathSuffixUnescaped(req.URL.Path, "/v1/session/node/")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if args.Node == "" {
|
||||
resp.WriteHeader(http.StatusBadRequest)
|
||||
fmt.Fprint(resp, "Missing node name")
|
||||
|
Loading…
x
Reference in New Issue
Block a user