aboutsummaryrefslogtreecommitdiff
path: root/solver.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-01-20 16:47:51 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-01-20 16:47:51 +0100
commit8fea5f9b0168880c927517d0d9634947ef158d43 (patch)
treefb06df8fd93f4072f394f88f21691b8149492216 /solver.go
parent20f2531b9acbe40e9f8ebda4f9127ab65530c789 (diff)
Extend solver interface
Diffstat (limited to 'solver.go')
-rw-r--r--solver.go17
1 files changed, 12 insertions, 5 deletions
diff --git a/solver.go b/solver.go
index 65d8d24..7080b79 100644
--- a/solver.go
+++ b/solver.go
@@ -3,6 +3,7 @@ package acme
import (
"io"
"net/http"
+ "os"
"path"
)
@@ -12,6 +13,7 @@ const WellKnown = `/.well-known/acme-challenge/`
// Solver decribes a solving interface
type Solver interface {
Solve(token, keyAuth string) error
+ Solved() error
}
type httpSolver struct {
@@ -25,7 +27,7 @@ func NewHTTPSolver(addr string) Solver {
return &s
}
-func (s httpSolver) Solve(token, keyAuth string) error {
+func (s *httpSolver) Solve(token, keyAuth string) error {
p := path.Join(WellKnown, token)
http.HandleFunc(p, func(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, keyAuth)
@@ -33,17 +35,20 @@ func (s httpSolver) Solve(token, keyAuth string) error {
return nil
}
+func (s *httpSolver) Solved() error { return nil }
+
type webRootSolver struct {
webroot string
+ file string
}
func NewWebRootSolver(webroot string) Solver {
- return &webRootSolver{webroot}
+ return &webRootSolver{webroot: webroot}
}
-func (s webRootSolver) Solve(token, keyAuth string) error {
- p := path.Join(s.webroot, WellKnown, token)
- fd, err := CreatePubFile(p)
+func (s *webRootSolver) Solve(token, keyAuth string) error {
+ s.file = path.Join(s.webroot, WellKnown, token)
+ fd, err := CreatePubFile(s.file)
if err != nil {
return err
}
@@ -52,6 +57,8 @@ func (s webRootSolver) Solve(token, keyAuth string) error {
return err
}
+func (s *webRootSolver) Solved() error { return os.Remove(s.file) }
+
type tlsSolver struct {
http.Server
}