aboutsummaryrefslogtreecommitdiff
path: root/example/server/server.go
diff options
context:
space:
mode:
authoradnano <[email protected]>2020-09-21 17:23:51 -0400
committeradnano <[email protected]>2020-09-21 17:23:51 -0400
commite20b8a0a5e8474b14b0c6702ffc1fdc7df76756e (patch)
tree84f25b510874740a2d568b5be3f160256f04743e /example/server/server.go
parentAdd LICENSE (diff)
downloadgo-gemini-e20b8a0a5e8474b14b0c6702ffc1fdc7df76756e.tar.xz
go-gemini-e20b8a0a5e8474b14b0c6702ffc1fdc7df76756e.zip
Add examples
Diffstat (limited to 'example/server/server.go')
-rw-r--r--example/server/server.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/example/server/server.go b/example/server/server.go
new file mode 100644
index 0000000..3f0a3e3
--- /dev/null
+++ b/example/server/server.go
@@ -0,0 +1,41 @@
+// +build example
+
+package main
+
+import (
+ "crypto/tls"
+ "git.sr.ht/~adnano/go-gemini"
+ "log"
+ "net/url"
+)
+
+func main() {
+ // Load a TLS key pair.
+ // To generate a TLS key pair, run:
+ //
+ // openssl genrsa -out server.key 2048
+ // openssl ecparam -genkey -name secp384r1 -out server.key
+ // openssl req -new -x509 -sha256 -key server.key -out server.crt -days 3650
+ //
+ config := &tls.Config{}
+ cert, err := tls.LoadX509KeyPair("example/server/server.crt", "example/server/server.key")
+ if err != nil {
+ log.Fatal(err)
+ }
+ config.Certificates = append(config.Certificates, cert)
+
+ mux := &gemini.Mux{}
+ mux.HandleFunc("/", func(url *url.URL) *gemini.Response {
+ return &gemini.Response{
+ Status: gemini.StatusSuccess,
+ Meta: "text/gemini",
+ Body: []byte("You requested " + url.String()),
+ }
+ })
+
+ server := gemini.Server{
+ TLSConfig: config,
+ Handler: mux,
+ }
+ server.ListenAndServe()
+}