examples/server: Use certificate.Store

This commit is contained in:
Adnan Maolood 2021-02-19 18:45:19 -05:00
parent 66e03ef1e4
commit 69674fcdd5

View File

@ -16,13 +16,8 @@ import (
)
func main() {
var server gemini.Server
server.ReadTimeout = 30 * time.Second
server.WriteTimeout = 1 * time.Minute
if err := server.Certificates.Load("/var/lib/gemini/certs"); err != nil {
log.Fatal(err)
}
server.GetCertificate = func(hostname string) (tls.Certificate, error) {
certificates := &certificate.Store{
CreateCertificate: func(hostname string) (tls.Certificate, error) {
return certificate.Create(certificate.CreateOptions{
Subject: pkix.Name{
CommonName: hostname,
@ -30,11 +25,22 @@ func main() {
DNSNames: []string{hostname},
Duration: 365 * 24 * time.Hour,
})
},
}
certificates.Register("localhost")
if err := certificates.Load("/var/lib/gemini/certs"); err != nil {
log.Fatal(err)
}
var mux gemini.ServeMux
mux.Handle("localhost", gemini.FileServer(os.DirFS("/var/www")))
server.Handler = &mux
mux := &gemini.ServeMux{}
mux.Handle("/", gemini.FileServer(os.DirFS("/var/www")))
server := &gemini.Server{
Handler: mux,
ReadTimeout: 30 * time.Second,
WriteTimeout: 1 * time.Minute,
GetCertificate: certificates.GetCertificate,
}
if err := server.ListenAndServe(); err != nil {
log.Fatal(err)