aboutsummaryrefslogtreecommitdiff
path: root/solver.go
diff options
context:
space:
mode:
Diffstat (limited to 'solver.go')
-rw-r--r--solver.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/solver.go b/solver.go
new file mode 100644
index 0000000..5bc7f85
--- /dev/null
+++ b/solver.go
@@ -0,0 +1,45 @@
+package acme
+
+import (
+ "io"
+ "net/http"
+ "path"
+)
+
+type httpSolver struct {
+ http.Server
+}
+
+func NewHTTPSolver(addr string) Solver {
+ var s httpSolver
+ s.Server = http.Server{Addr: addr}
+ go s.ListenAndServe()
+ return &s
+}
+
+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)
+ })
+ return nil
+}
+
+type webRootSolver struct {
+ webroot string
+}
+
+func NewWebRootSolver(webroot string) Solver {
+ return &webRootSolver{webroot}
+}
+
+func (s webRootSolver) Solve(token, keyAuth string) error {
+ p := path.Join(s.webroot, WellKnown, token)
+ fd, err := CreatePubFile(p)
+ if err != nil {
+ return err
+ }
+ defer fd.Close()
+ _, err = io.WriteString(fd, keyAuth)
+ return err
+}