diff options
| author | adnano <[email protected]> | 2020-09-21 18:25:31 -0400 |
|---|---|---|
| committer | adnano <[email protected]> | 2020-09-21 18:25:31 -0400 |
| commit | 0b6d3d8633d9770e5692bb54dfe81d4b8ea72bb0 (patch) | |
| tree | 7b78b4d9b537abf8a2aa4cd6608bd651e48367c9 /example | |
| parent | Add support for client-side certificates (diff) | |
| download | go-gemini-0b6d3d8633d9770e5692bb54dfe81d4b8ea72bb0.tar.xz go-gemini-0b6d3d8633d9770e5692bb54dfe81d4b8ea72bb0.zip | |
Rename example directory to examples
Diffstat (limited to 'example')
| -rw-r--r-- | example/client/.gitignore | 2 | ||||
| -rw-r--r-- | example/client/client.go | 73 | ||||
| -rw-r--r-- | example/server/.gitignore | 2 | ||||
| -rw-r--r-- | example/server/server.go | 41 |
4 files changed, 0 insertions, 118 deletions
diff --git a/example/client/.gitignore b/example/client/.gitignore deleted file mode 100644 index 37278c1..0000000 --- a/example/client/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -client.crt -client.key diff --git a/example/client/client.go b/example/client/client.go deleted file mode 100644 index 0dac61b..0000000 --- a/example/client/client.go +++ /dev/null @@ -1,73 +0,0 @@ -// +build example - -package main - -import ( - "bufio" - "crypto/tls" - "fmt" - "log" - "os" - - "git.sr.ht/~adnano/go-gemini" -) - -var client gemini.Client - -func init() { - // Configure a client side certificate. - // To generate a certificate, run: - // - // openssl genrsa -out client.key 2048 - // openssl ecparam -genkey -name secp384r1 -out client.key - // openssl req -new -x509 -sha256 -key client.key -out client.crt -days 3650 - // - config := tls.Config{} - cert, err := tls.LoadX509KeyPair("example/client/client.crt", "example/client/client.key") - if err != nil { - log.Fatal(err) - } - config.Certificates = append(config.Certificates, cert) - client.TLSConfig = config -} - -func makeRequest(url string) { - resp, err := client.Request(url) - if err != nil { - log.Fatal(err) - } - - fmt.Println("Status code:", resp.Status) - fmt.Println("Meta:", resp.Meta) - - switch resp.Status / 10 { - case gemini.StatusClassInput: - scanner := bufio.NewScanner(os.Stdin) - fmt.Printf("%s: ", resp.Meta) - scanner.Scan() - query := scanner.Text() - makeRequest(url + "?" + query) - return - case gemini.StatusClassSuccess: - fmt.Print("Body:\n", string(resp.Body)) - case gemini.StatusClassRedirect: - log.Print("Redirecting to ", resp.Meta) - makeRequest(resp.Meta) - return - case gemini.StatusClassTemporaryFailure: - log.Fatal("Temporary failure") - case gemini.StatusClassPermanentFailure: - log.Fatal("Permanent failure") - case gemini.StatusClassClientCertificateRequired: - log.Fatal("Client Certificate Required") - default: - log.Fatal("Protocol Error") - } -} - -func main() { - if len(os.Args) < 2 { - log.Fatalf("usage: %s gemini://...", os.Args[0]) - } - makeRequest(os.Args[1]) -} diff --git a/example/server/.gitignore b/example/server/.gitignore deleted file mode 100644 index 10cdeb2..0000000 --- a/example/server/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -server.crt -server.key diff --git a/example/server/server.go b/example/server/server.go deleted file mode 100644 index dbb23a0..0000000 --- a/example/server/server.go +++ /dev/null @@ -1,41 +0,0 @@ -// +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() -} |