aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/acme/config.go10
-rw-r--r--cmd/acme/main.go5
-rw-r--r--provider.go36
3 files changed, 24 insertions, 27 deletions
diff --git a/cmd/acme/config.go b/cmd/acme/config.go
index 0addfaf..6ad4ca5 100644
--- a/cmd/acme/config.go
+++ b/cmd/acme/config.go
@@ -37,11 +37,11 @@ type provider struct {
}
type account struct {
- Mail string
- Phone string
- KeySize int
- Key string
- pending bool
+ Mail string
+ Phone string
+ KeySize int
+ Key string
+ registered bool
*acme.Account
acme.Contacts
}
diff --git a/cmd/acme/main.go b/cmd/acme/main.go
index 882a8b6..ebe6a91 100644
--- a/cmd/acme/main.go
+++ b/cmd/acme/main.go
@@ -24,7 +24,6 @@ func prepare(conf *Config) error {
if err := acc.Account.Save(acc.Key); err != nil {
return err
}
- acc.pending = true
}
acc.Contacts.AddMail(acc.Mail)
acc.Contacts.AddPhone(acc.Phone)
@@ -53,11 +52,13 @@ func prepare(conf *Config) error {
}
func satisfice(des *desire) error {
+ if !des.account.registered {
log.Println("register acc")
if err := des.provider.Register(des.account, des.account.Contacts); err != nil {
return err
}
- log.Println("register ok")
+ des.account.registered = true
+ }
if err := des.provider.Authorize(des.account, des.Desire); err != nil {
return err
diff --git a/provider.go b/provider.go
index f2ab923..b803101 100644
--- a/provider.go
+++ b/provider.go
@@ -6,7 +6,6 @@ import (
"errors"
"log"
"net/http"
- "net/url"
"regexp"
"time"
)
@@ -46,14 +45,15 @@ func (p Provider) RoundTrip(req *http.Request) (*http.Response, error) {
}
p.nonces <- nonce
}
- // not sure if it belongs here
- /*
+ return resp, nil
+}
+
+func hasProblem(resp *http.Response) error {
if resp.Header.Get("Content-Type") == mimeProblem {
defer resp.Body.Close()
- return nil, problem(resp.Body)
+ return problem(resp.Body)
}
- */
- return resp, nil
+ return nil
}
// Nonce implements jose nonce provider
@@ -92,7 +92,14 @@ func (p *Provider) post(uri string, s Signer, v interface{}) (*http.Response, er
if err != nil {
return nil, err
}
- return p.Post(uri, mimeJose, signed)
+ resp, err := p.Post(uri, mimeJose, signed)
+ if err != nil {
+ return nil, err
+ }
+ if err := hasProblem(resp); err != nil {
+ return resp, err
+ }
+ return resp, nil
}
type nextStep struct {
@@ -140,19 +147,8 @@ func (p *Provider) Register(s Signer, c Contacts) error {
Contact: c,
}
resp, err := p.post(p.NewReg, s, req)
- if err != nil {
- switch e := err.(type) {
- case Problem:
- log.Println("problem")
- if e.Err != ErrMalformed {
- return err
- }
- case *url.Error:
- log.Println("url error")
- default:
- log.Println("other problem")
- return err
- }
+ if err != nil && err.(Problem).Err != ErrMalformed {
+ return err
}
ns := parseHeader(resp)