From 650415dbf290bc8f4dc0d475da05e30619574153 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 23 Dec 2015 17:05:03 +0100 Subject: Add webroot solver --- client.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'client.go') diff --git a/client.go b/client.go index 4be5bdf..84906b5 100644 --- a/client.go +++ b/client.go @@ -228,31 +228,40 @@ func (c *Client) Authorize(a *Account, domain []string) error { _, err = c.post(ch.URI, a, ans) switch ch.Type { case ChallengeHTTP: - httpChallenge{Addr: ":80", Challenge: *ans}.Solve() + httpChallenge{Addr: ":8080", Challenge: *ans}.Solve() } } } for { - az, err := c.Status(ns.Location.String()) + az, ra, err := c.Status(ns.Location.String()) if err != nil { return err } log.Println(az) - time.Sleep(time.Second) + log.Println(ra) + for _, ch := range az.Challenges { + switch ch.Status { + case StatusPending, StatusProcessing: + default: + return nil + } + } + time.Sleep(ra) } } return err } -func (c *Client) Status(url string) (*Authorization, error) { +func (c *Client) Status(url string) (*Authorization, time.Duration, error) { r := &Authorization{} resp, err := http.Get(url) if err != nil { - return nil, err + return nil, time.Second, err } defer resp.Body.Close() defer c.replyNonce(resp) - return r, json.NewDecoder(resp.Body).Decode(r) + ns := parseHeader(resp) + return r, ns.RetryAfter, json.NewDecoder(resp.Body).Decode(r) } //////////////////////////////////////////////////////////////////////// -- cgit v1.2.3