66 lines
2.2 KiB
Go
66 lines
2.2 KiB
Go
package main
|
|
|
|
import "net/http"
|
|
|
|
// addTLSALPN01 handles an HTTP POST request to add a new TLS-ALPN-01 challenge
|
|
// response certificate for a given host.
|
|
//
|
|
// The POST body is expected to have two non-empty parameters:
|
|
// "host" - the hostname to add the challenge response certificate for.
|
|
// "content" - the key authorization value to use to construct the TLS-ALPN-01
|
|
// challenge response certificate.
|
|
//
|
|
// A successful POST will write http.StatusOK to the client.
|
|
func (srv *managementServer) addTLSALPN01(w http.ResponseWriter, r *http.Request) {
|
|
// Unmarshal the request body JSON as a request object
|
|
var request struct {
|
|
Host string
|
|
Content string
|
|
}
|
|
if err := mustParsePOST(&request, r); err != nil {
|
|
http.Error(w, err.Error(), http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
// If the request has an empty host or content it's a bad request
|
|
if request.Host == "" || request.Content == "" {
|
|
w.WriteHeader(http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
// Add the TLS-ALPN-01 challenge to the challenge server
|
|
srv.challSrv.AddTLSALPNChallenge(request.Host, request.Content)
|
|
srv.log.Printf("Added TLS-ALPN-01 challenge for host %q - key auth %q\n",
|
|
request.Host, request.Content)
|
|
w.WriteHeader(http.StatusOK)
|
|
}
|
|
|
|
// delTLSALPN01 handles an HTTP POST request to delete an existing TLS-ALPN-01
|
|
// challenge response for a given host.
|
|
//
|
|
// The POST body is expected to have one non-empty parameter:
|
|
// "host" - the hostname to remove the TLS-ALPN-01 challenge response for.
|
|
//
|
|
// A successful POST will write http.StatusOK to the client.
|
|
func (srv *managementServer) delTLSALPN01(w http.ResponseWriter, r *http.Request) {
|
|
// Unmarshal the request body JSON as a request object
|
|
var request struct {
|
|
Host string
|
|
}
|
|
if err := mustParsePOST(&request, r); err != nil {
|
|
http.Error(w, err.Error(), http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
// If the request has an empty host it's a bad request
|
|
if request.Host == "" {
|
|
w.WriteHeader(http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
// Delete the TLS-ALPN-01 challenge for the given host from the challenge server
|
|
srv.challSrv.DeleteTLSALPNChallenge(request.Host)
|
|
srv.log.Printf("Removed TLS-ALPN-01 challenge for host %q\n", request.Host)
|
|
w.WriteHeader(http.StatusOK)
|
|
}
|