aboutsummaryrefslogtreecommitdiff
path: root/examples/auth.go
diff options
context:
space:
mode:
authorAdnan Maolood <[email protected]>2021-02-20 18:30:49 -0500
committerAdnan Maolood <[email protected]>2021-02-20 18:30:49 -0500
commit0baa66a4e70a2302c044fbd9eb7ee4eb5e3bb03e (patch)
treeecae9eabd20c6691b79a34ecf62f5e7c25128617 /examples/auth.go
parentcertificate.Store: Support "*" wildcard pattern (diff)
downloadgo-gemini-0baa66a4e70a2302c044fbd9eb7ee4eb5e3bb03e.tar.xz
go-gemini-0baa66a4e70a2302c044fbd9eb7ee4eb5e3bb03e.zip
Update examples
Diffstat (limited to 'examples/auth.go')
-rw-r--r--examples/auth.go33
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