package main import ( "io" "net/http" "path" "dim13.org/acme" ) type httpChallenge struct { http.Server Webroot string started bool } func (c *httpChallenge) Solve(token, keyAuth string) error { if c.Webroot != "" { p := path.Join(c.Webroot, acme.WellKnown, token) fd, err := acme.CreatePubFile(p) if err != nil { return err } defer fd.Close() _, err = io.WriteString(fd, keyAuth) return err } else { if !c.started { go c.ListenAndServe() c.started = true } p := path.Join(acme.WellKnown, token) http.HandleFunc(p, func(w http.ResponseWriter, r *http.Request) { io.WriteString(w, keyAuth) }) return nil } }