diff options
| author | Adnan Maolood <[email protected]> | 2021-02-20 18:30:49 -0500 |
|---|---|---|
| committer | Adnan Maolood <[email protected]> | 2021-02-20 18:30:49 -0500 |
| commit | 0baa66a4e70a2302c044fbd9eb7ee4eb5e3bb03e (patch) | |
| tree | ecae9eabd20c6691b79a34ecf62f5e7c25128617 /examples/auth.go | |
| parent | certificate.Store: Support "*" wildcard pattern (diff) | |
| download | go-gemini-0baa66a4e70a2302c044fbd9eb7ee4eb5e3bb03e.tar.xz go-gemini-0baa66a4e70a2302c044fbd9eb7ee4eb5e3bb03e.zip | |
Update examples
Diffstat (limited to 'examples/auth.go')
| -rw-r--r-- | examples/auth.go | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/examples/auth.go b/examples/auth.go index 447ab17..831c7fc 100644 --- a/examples/auth.go +++ b/examples/auth.go @@ -3,10 +3,9 @@ package main import ( + "context" "crypto/sha512" - "crypto/tls" "crypto/x509" - "crypto/x509/pkix" "fmt" "log" "time" @@ -25,24 +24,22 @@ var ( ) func main() { - var mux gemini.ServeMux + certificates := &certificate.Store{} + certificates.Register("localhost") + if err := certificates.Load("/var/lib/gemini/certs"); err != nil { + log.Fatal(err) + } + + mux := &gemini.ServeMux{} mux.HandleFunc("/", profile) mux.HandleFunc("/username", changeUsername) - var server gemini.Server - if err := server.Certificates.Load("/var/lib/gemini/certs"); err != nil { - log.Fatal(err) - } - server.GetCertificate = func(hostname string) (tls.Certificate, error) { - return certificate.Create(certificate.CreateOptions{ - Subject: pkix.Name{ - CommonName: hostname, - }, - DNSNames: []string{hostname}, - Duration: time.Hour, - }) + server := &gemini.Server{ + Handler: mux, + ReadTimeout: 30 * time.Second, + WriteTimeout: 1 * time.Minute, + GetCertificate: certificates.GetCertificate, } - server.Handler = &mux if err := server.ListenAndServe(); err != nil { log.Fatal(err) @@ -54,7 +51,7 @@ func fingerprint(cert *x509.Certificate) string { return string(b[:]) } -func profile(w gemini.ResponseWriter, r *gemini.Request) { +func profile(ctx context.Context, w gemini.ResponseWriter, r *gemini.Request) { if len(r.TLS.PeerCertificates) == 0 { w.WriteHeader(gemini.StatusCertificateRequired, "Certificate required") return @@ -69,7 +66,7 @@ func profile(w gemini.ResponseWriter, r *gemini.Request) { fmt.Fprintln(w, "=> /username Change username") } -func changeUsername(w gemini.ResponseWriter, r *gemini.Request) { +func changeUsername(ctx context.Context, w gemini.ResponseWriter, r *gemini.Request) { if len(r.TLS.PeerCertificates) == 0 { w.WriteHeader(gemini.StatusCertificateRequired, "Certificate required") return |