package acme import ( "io" "log" "net/http" "path" ) type httpSolver struct { http.Server } func NewHTTPSolver(addr string) (Solver, error) { s := &httpSolver{ Server: http.Server{Addr: addr}, } go func() { if err := s.ListenAndServe(); err != nil { log.Fatal(err) } }() return s, nil } func (s *httpSolver) Solve(ch Challenge) error { p := path.Join(WellKnown, ch.Token) log.Println("solve http", p) http.HandleFunc(p, func(w http.ResponseWriter, r *http.Request) { io.WriteString(w, ch.KeyAuthorization) }) return nil } func (httpSolver) Solved() error { return nil } func (httpSolver) Type() ChalType { return ChallengeHTTP }