aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorGravatar Aliaksandr Valialkin <valyala@gmail.com> 2016-01-08 15:23:09 +0200
committerGravatar Aliaksandr Valialkin <valyala@gmail.com> 2016-01-08 15:23:09 +0200
commit4326e27e9ab1211d9dd7649ed9b1f8a8a0c829de (patch)
tree75ff9e02c1408b53e7d075e021d5b148e9e6770e /examples
parentAdded FormFile and FormValue helpers to RequestCtx in order to be on par with... (diff)
downloadfasthttp-4326e27e9ab1211d9dd7649ed9b1f8a8a0c829de.tar.gz
fasthttp-4326e27e9ab1211d9dd7649ed9b1f8a8a0c829de.tar.bz2
fasthttp-4326e27e9ab1211d9dd7649ed9b1f8a8a0c829de.zip
Added TLS support to example fileserver
Diffstat (limited to 'examples')
-rw-r--r--examples/fileserver/README.md1
-rw-r--r--examples/fileserver/fileserver.go24
-rw-r--r--examples/fileserver/ssl-cert-snakeoil.key28
-rw-r--r--examples/fileserver/ssl-cert-snakeoil.pem17
4 files changed, 68 insertions, 2 deletions
diff --git a/examples/fileserver/README.md b/examples/fileserver/README.md
index 8b9a19c..5f28a45 100644
--- a/examples/fileserver/README.md
+++ b/examples/fileserver/README.md
@@ -4,6 +4,7 @@
* Supports transparent response compression.
* Supports byte range responses.
* Generates directory index pages.
+* Supports TLS (aka SSL or HTTPS).
# How to build
diff --git a/examples/fileserver/fileserver.go b/examples/fileserver/fileserver.go
index cf28c72..a28480d 100644
--- a/examples/fileserver/fileserver.go
+++ b/examples/fileserver/fileserver.go
@@ -10,10 +10,13 @@ import (
var (
addr = flag.String("addr", ":8080", "TCP address to listen to")
+ addrTLS = flag.String("addrTLS", "", "TCP address to listen to TLS (aka SSL or HTTPS) requests. Leave empty for disabling TLS")
byteRange = flag.Bool("byteRange", false, "Enables byte range requests if set to true")
+ certFile = flag.String("certFile", "./ssl-cert-snakeoil.pem", "Path to TLS certificate file")
compress = flag.Bool("compress", false, "Enables transparent response compression if set to true")
dir = flag.String("dir", "/usr/share/nginx/html", "Directory to serve static files from")
generateIndexPages = flag.Bool("generateIndexPages", true, "Whether to generate directory index pages")
+ keyFile = flag.String("keyFile", "./ssl-cert-snakeoil.key", "Path to TLS key file")
)
func main() {
@@ -28,7 +31,24 @@ func main() {
}
h := fs.NewRequestHandler()
- if err := fasthttp.ListenAndServe(*addr, h); err != nil {
- log.Fatalf("error in ListenAndServe: %s", err)
+ // Start HTTP server.
+ if len(*addr) > 0 {
+ go func() {
+ if err := fasthttp.ListenAndServe(*addr, h); err != nil {
+ log.Fatalf("error in ListenAndServe: %s", err)
+ }
+ }()
}
+
+ // Start HTTPS server.
+ if len(*addrTLS) > 0 {
+ go func() {
+ if err := fasthttp.ListenAndServeTLS(*addrTLS, *certFile, *keyFile, h); err != nil {
+ log.Fatalf("error in ListenAndServeTLS: %s", err)
+ }
+ }()
+ }
+
+ // Wait forever.
+ select {}
}
diff --git a/examples/fileserver/ssl-cert-snakeoil.key b/examples/fileserver/ssl-cert-snakeoil.key
new file mode 100644
index 0000000..00a79a3
--- /dev/null
+++ b/examples/fileserver/ssl-cert-snakeoil.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD4IQusAs8PJdnG
+3mURt/AXtgC+ceqLOatJ49JJE1VPTkMAy+oE1f1XvkMrYsHqmDf6GWVzgVXryL4U
+wq2/nJSm56ddhN55nI8oSN3dtywUB8/ShelEN73nlN77PeD9tl6NksPwWaKrqxq0
+FlabRPZSQCfmgZbhDV8Sa8mfCkFU0G0lit6kLGceCKMvmW+9Bz7ebsYmVdmVMxmf
+IJStFD44lWFTdUc65WISKEdW2ELcUefb0zOLw+0PCbXFGJH5x5ktksW8+BBk2Hkg
+GeQRL/qPCccthbScO0VgNj3zJ3ZZL0ObSDAbvNDG85joeNjDNq5DT/BAZ0bOSbEF
+sh+f9BAzAgMBAAECggEBAJWv2cq7Jw6MVwSRxYca38xuD6TUNBopgBvjREixURW2
+sNUaLuMb9Omp7fuOaE2N5rcJ+xnjPGIxh/oeN5MQctz9gwn3zf6vY+15h97pUb4D
+uGvYPRDaT8YVGS+X9NMZ4ZCmqW2lpWzKnCFoGHcy8yZLbcaxBsRdvKzwOYGoPiFb
+K2QuhXZ/1UPmqK9i2DFKtj40X6vBszTNboFxOVpXrPu0FJwLVSDf2hSZ4fMM0DH3
+YqwKcYf5te+hxGKgrqRA3tn0NCWii0in6QIwXMC+kMw1ebg/tZKqyDLMNptAK8J+
+DVw9m5X1seUHS5ehU/g2jrQrtK5WYn7MrFK4lBzlRwECgYEA/d1TeANYECDWRRDk
+B0aaRZs87Rwl/J9PsvbsKvtU/bX+OfSOUjOa9iQBqn0LmU8GqusEET/QVUfocVwV
+Bggf/5qDLxz100Rj0ags/yE/kNr0Bb31kkkKHFMnCT06YasR7qKllwrAlPJvQv9x
+IzBKq+T/Dx08Wep9bCRSFhzRCnsCgYEA+jdeZXTDr/Vz+D2B3nAw1frqYFfGnEVY
+wqmoK3VXMDkGuxsloO2rN+SyiUo3JNiQNPDub/t7175GH5pmKtZOlftePANsUjBj
+wZ1D0rI5Bxu/71ibIUYIRVmXsTEQkh/ozoh3jXCZ9+bLgYiYx7789IUZZSokFQ3D
+FICUT9KJ36kCgYAGoq9Y1rWJjmIrYfqj2guUQC+CfxbbGIrrwZqAsRsSmpwvhZ3m
+tiSZxG0quKQB+NfSxdvQW5ulbwC7Xc3K35F+i9pb8+TVBdeaFkw+yu6vaZmxQLrX
+fQM/pEjD7A7HmMIaO7QaU5SfEAsqdCTP56Y8AftMuNXn/8IRfo2KuGwaWwKBgFpU
+ILzJoVdlad9E/Rw7LjYhZfkv1uBVXIyxyKcfrkEXZSmozDXDdxsvcZCEfVHM6Ipk
+K/+7LuMcqp4AFEAEq8wTOdq6daFaHLkpt/FZK6M4TlruhtpFOPkoNc3e45eM83OT
+6mziKINJC1CQ6m65sQHpBtjxlKMRG8rL/D6wx9s5AoGBAMRlqNPMwglT3hvDmsAt
+9Lf9pdmhERUlHhD8bj8mDaBj2Aqv7f6VRJaYZqP403pKKQexuqcn80mtjkSAPFkN
+Cj7BVt/RXm5uoxDTnfi26RF9F6yNDEJ7UU9+peBr99aazF/fTgW/1GcMkQnum8uV
+c257YgaWmjK9uB0Y2r2VxS0G
+-----END PRIVATE KEY-----
diff --git a/examples/fileserver/ssl-cert-snakeoil.pem b/examples/fileserver/ssl-cert-snakeoil.pem
new file mode 100644
index 0000000..93e77cd
--- /dev/null
+++ b/examples/fileserver/ssl-cert-snakeoil.pem
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE-----
+MIICujCCAaKgAwIBAgIJAMbXnKZ/cikUMA0GCSqGSIb3DQEBCwUAMBUxEzARBgNV
+BAMTCnVidW50dS5uYW4wHhcNMTUwMjA0MDgwMTM5WhcNMjUwMjAxMDgwMTM5WjAV
+MRMwEQYDVQQDEwp1YnVudHUubmFuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEA+CELrALPDyXZxt5lEbfwF7YAvnHqizmrSePSSRNVT05DAMvqBNX9V75D
+K2LB6pg3+hllc4FV68i+FMKtv5yUpuenXYTeeZyPKEjd3bcsFAfP0oXpRDe955Te
++z3g/bZejZLD8Fmiq6satBZWm0T2UkAn5oGW4Q1fEmvJnwpBVNBtJYrepCxnHgij
+L5lvvQc+3m7GJlXZlTMZnyCUrRQ+OJVhU3VHOuViEihHVthC3FHn29Mzi8PtDwm1
+xRiR+ceZLZLFvPgQZNh5IBnkES/6jwnHLYW0nDtFYDY98yd2WS9Dm0gwG7zQxvOY
+6HjYwzauQ0/wQGdGzkmxBbIfn/QQMwIDAQABow0wCzAJBgNVHRMEAjAAMA0GCSqG
+SIb3DQEBCwUAA4IBAQBQjKm/4KN/iTgXbLTL3i7zaxYXFLXsnT1tF+ay4VA8aj98
+L3JwRTciZ3A5iy/W4VSCt3eASwOaPWHKqDBB5RTtL73LoAqsWmO3APOGQAbixcQ2
+45GXi05OKeyiYRi1Nvq7Unv9jUkRDHUYVPZVSAjCpsXzPhFkmZoTRxmx5l0ZF7Li
+K91lI5h+eFq0dwZwrmlPambyh1vQUi70VHv8DNToVU29kel7YLbxGbuqETfhrcy6
+X+Mha6RYITkAn5FqsZcKMsc9eYGEF4l3XV+oS7q6xfTxktYJMFTI18J0lQ2Lv/CI
+whdMnYGntDQBE/iFCrJEGNsKGc38796GBOb5j+zd
+-----END CERTIFICATE-----