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.go30
1 files changed, 29 insertions, 1 deletions
diff --git a/cmd/acme/solve_http.go b/cmd/acme/solve_http.go
index 7d0572b..31f3974 100644
--- a/cmd/acme/solve_http.go
+++ b/cmd/acme/solve_http.go
@@ -3,18 +3,46 @@ package main
import (
"log"
"net/http"
+ "os"
+ "path"
+
+ "dim13.org/acme"
)
type httpChallenge struct {
http.Server
- Addr string
+ Webroot string
+ file string
}
func (c *httpChallenge) Solve(token, keyAuth string) error {
log.Println("solver", c)
+ if c.Webroot != "" {
+ return c.solveWebroot(token, keyAuth)
+ }
return nil
}
func (c *httpChallenge) Finish() error {
+ if c.Webroot != "" {
+ return c.finishWebroot()
+ }
return nil
}
+
+func (c *httpChallenge) solveWebroot(token, keyAuth string) error {
+ log.Println("Solve WebRoot")
+ c.file = path.Join(c.Webroot, acme.WellKnown, token)
+ fd, err := acme.CreatePubFile(c.file)
+ if err != nil {
+ return err
+ }
+ defer fd.Close()
+ _, err = fd.Write([]byte(keyAuth))
+ return err
+}
+
+func (c *httpChallenge) finishWebroot() error {
+ log.Println("Cleanup WebRoot")
+ return os.Remove(c.file)
+}