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.

Signed-off-by: Linus Wallgren <[email protected]>
  • Loading branch information
Linus Wallgren authored and Linus Wallgren committed Jan 11, 2021
1 parent a68733f commit 75fc114
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 3 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
4 changes: 3 additions & 1 deletion cmd/proxy/coordinator.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ import (
"github.com/go-kit/kit/log"
"github.com/go-kit/kit/log/level"
"github.com/google/uuid"
"github.com/prometheus-community/pushprox/util"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
"github.com/prometheus-community/pushprox/util"
)

var (
Expand Down Expand Up @@ -114,6 +114,8 @@ func (c *Coordinator) DoScrape(ctx context.Context, r *http.Request) (*http.Resp
return nil, err
}
level.Info(c.logger).Log("msg", "DoScrape", "scrape_id", id, "url", r.URL.String())
// It is important this id is cryptographically generated as it is relied
// upon to match the request and the response.
r.Header.Add("Id", id)
select {
case <-ctx.Done():
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 75fc114

Please sign in to comment.