Skip to content

Commit

Permalink
Register with FQDN in URL
Browse files Browse the repository at this point in the history
This replaces having the FQDN in the body in order to make client
certificate validation easier.

The proxy will continue to work with older clients as we still keep the
old endpoint. However any calls to `/poll/*` will use the FQDN provided
in the URL for registration.
  • Loading branch information
Linus Wallgren committed Sep 2, 2020
1 parent 753361c commit 5552f95
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
2 changes: 1 addition & 1 deletion cmd/client/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ func loop(c Coordinator, client *http.Client) error {
level.Error(c.logger).Log("msg", "Error parsing url:", "err", err)
return errors.Wrap(err, "error parsing url")
}
u, err := url.Parse("poll")
u, err := url.Parse("poll/" + *myFqdn)
if err != nil {
level.Error(c.logger).Log("msg", "Error parsing url:", "err", err)
return errors.Wrap(err, "error parsing url poll")
Expand Down
13 changes: 12 additions & 1 deletion cmd/proxy/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ func newHTTPHandler(logger log.Logger, coordinator *Coordinator, mux *http.Serve
handlers := map[string]http.HandlerFunc{
"/push": h.handlePush,
"/poll": h.handlePoll,
"/poll/": h.handlePollWithPath,
"/clients": h.handleListClients,
"/metrics": promhttp.Handler().ServeHTTP,
}
Expand Down Expand Up @@ -144,7 +145,17 @@ func (h *httpHandler) handlePush(w http.ResponseWriter, r *http.Request) {
// handlePoll handles clients registering and asking for scrapes.
func (h *httpHandler) handlePoll(w http.ResponseWriter, r *http.Request) {
fqdn, _ := ioutil.ReadAll(r.Body)
request, err := h.coordinator.WaitForScrapeInstruction(strings.TrimSpace(string(fqdn)))
h.pollWithFQDN(string(fqdn), w)
}

// handlePoll handles clients registering and asking for scrapes.
func (h *httpHandler) handlePollWithPath(w http.ResponseWriter, r *http.Request) {
fqdn := r.URL.Path[len("/poll/"):]
h.pollWithFQDN(fqdn, w)
}

func (h *httpHandler) pollWithFQDN(fqdn string, w http.ResponseWriter) {
request, err := h.coordinator.WaitForScrapeInstruction(strings.TrimSpace(fqdn))
if err != nil {
level.Info(h.logger).Log("msg", "Error WaitForScrapeInstruction:", "err", err)
http.Error(w, fmt.Sprintf("Error WaitForScrapeInstruction: %s", err.Error()), 408)
Expand Down

0 comments on commit 5552f95

Please sign in to comment.