From ae870e2238178ef86a68818171cb1ef0eeb9d5d1 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sun, 10 Jan 2016 20:16:59 +0100 Subject: HTTP Solver --- cmd/acme/docker.toml | 2 +- cmd/acme/main.go | 1 + cmd/acme/solve_http.go | 23 +++++++++++++++-------- 3 files changed, 17 insertions(+), 9 deletions(-) (limited to 'cmd') diff --git a/cmd/acme/docker.toml b/cmd/acme/docker.toml index d9f54ca..bd1c359 100644 --- a/cmd/acme/docker.toml +++ b/cmd/acme/docker.toml @@ -1,6 +1,6 @@ [defaults] gracetime = "168h" # 1 week -listen = ":8080" +listen = "localhost:8080" basedir = ".acme" # usually "/etc/ssl" provider = "les" account = "webmaster" diff --git a/cmd/acme/main.go b/cmd/acme/main.go index 1dbc496..dffeda0 100644 --- a/cmd/acme/main.go +++ b/cmd/acme/main.go @@ -88,6 +88,7 @@ func main() { }, Webroot: des.Webroot, } + hs.Init() acme.RegisterSolver(acme.ChallengeHTTP, hs) wg.Add(1) 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 -} -- cgit v1.2.3