Cleanup use of validation url
This commit is contained in:
parent
09a4062b23
commit
5fd4d723ca
|
|
@ -64,11 +64,9 @@ func (handler *subscriptionHandler) handleSubscription(w http.ResponseWriter, r
|
||||||
fmt.Fprint(w, "Accepted")
|
fmt.Fprint(w, "Accepted")
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
client := http.Client{}
|
|
||||||
|
|
||||||
ourChallenge := randStringBytes(12)
|
ourChallenge := randStringBytes(12)
|
||||||
|
|
||||||
validationURL := callbackURL
|
validationURL := *callbackURL
|
||||||
q := validationURL.Query()
|
q := validationURL.Query()
|
||||||
q.Add("hub.mode", "subscribe")
|
q.Add("hub.mode", "subscribe")
|
||||||
q.Add("hub.topic", topicURL.String())
|
q.Add("hub.topic", topicURL.String())
|
||||||
|
|
@ -78,24 +76,7 @@ func (handler *subscriptionHandler) handleSubscription(w http.ResponseWriter, r
|
||||||
|
|
||||||
log.Println(validationURL)
|
log.Println(validationURL)
|
||||||
|
|
||||||
req, err := http.NewRequest(http.MethodGet, callbackURL.String(), nil)
|
if validateURL(validationURL.String(), ourChallenge) {
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
res, err := client.Do(req)
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer res.Body.Close()
|
|
||||||
|
|
||||||
body, err := ioutil.ReadAll(res.Body)
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if strings.Contains(string(body), ourChallenge) {
|
|
||||||
// challenge accepted
|
// challenge accepted
|
||||||
handler.addSubscriberCallback(topicURL.String(), Subscriber{callbackURL.String(), leaseSeconds})
|
handler.addSubscriberCallback(topicURL.String(), Subscriber{callbackURL.String(), leaseSeconds})
|
||||||
}
|
}
|
||||||
|
|
@ -104,6 +85,30 @@ func (handler *subscriptionHandler) handleSubscription(w http.ResponseWriter, r
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func validateURL(url, challenge string) bool {
|
||||||
|
client := http.Client{}
|
||||||
|
|
||||||
|
req, err := http.NewRequest(http.MethodGet, url, nil)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
res, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
defer res.Body.Close()
|
||||||
|
|
||||||
|
body, err := ioutil.ReadAll(res.Body)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.Contains(string(body), challenge)
|
||||||
|
}
|
||||||
|
|
||||||
func (handler *subscriptionHandler) addSubscriberCallback(topic string, subscriber Subscriber) {
|
func (handler *subscriptionHandler) addSubscriberCallback(topic string, subscriber Subscriber) {
|
||||||
handler.Subscribers[topic] = append(handler.Subscribers[topic], subscriber)
|
handler.Subscribers[topic] = append(handler.Subscribers[topic], subscriber)
|
||||||
handler.save()
|
handler.save()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user