aboutsummaryrefslogtreecommitdiff
path: root/cmd/acme/solve_http.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/acme/solve_http.go')
-rw-r--r--cmd/acme/solve_http.go23
1 files changed, 15 insertions, 8 deletions
diff --git a/cmd/acme/solve_http.go b/cmd/acme/solve_http.go
index 8c8c7bc..f9ab400 100644
--- a/cmd/acme/solve_http.go
+++ b/cmd/acme/solve_http.go
@@ -1,9 +1,9 @@
package main
import (
+ "io"
"log"
"net/http"
- "os"
"path"
"dim13.org/acme"
@@ -13,12 +13,26 @@ type httpChallenge struct {
http.Server
Webroot string
file string
+ started bool
+}
+
+func (c *httpChallenge) Init() error {
+ if !c.started {
+ go c.ListenAndServe()
+ c.started = true
+ }
+ return nil
}
func (c *httpChallenge) Solve(token, keyAuth string) error {
log.Println("solver", c)
if c.Webroot != "" {
return c.solveWebroot(token, keyAuth)
+ } else {
+ p := path.Join(acme.WellKnown, token)
+ http.HandleFunc(p, func(w http.ResponseWriter, r *http.Request) {
+ io.WriteString(w, keyAuth)
+ })
}
return nil
}
@@ -34,10 +48,3 @@ func (c *httpChallenge) solveWebroot(token, keyAuth string) error {
_, err = fd.Write([]byte(keyAuth))
return err
}
-
-func (c *httpChallenge) Finish() error {
- if c.Webroot != "" {
- return os.Remove(c.file)
- }
- return nil
-}