package main import ( "log" "net/http" "os" "path" "dim13.org/acme" ) type httpChallenge struct { http.Server 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) }