Skip to content

Commit 16ce22b

Browse files
committed
tls
1 parent 764515d commit 16ce22b

File tree

1 file changed

+27
-4
lines changed

1 file changed

+27
-4
lines changed

ebird/server/server.go

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"context"
5+
"crypto/tls"
56
"encoding/json"
67
"flag"
78
"fmt"
@@ -12,6 +13,7 @@ import (
1213

1314
"crawshaw.io/sqlite"
1415
"crawshaw.io/sqlite/sqlitex"
16+
"golang.org/x/crypto/acme/autocert"
1517
)
1618

1719
func obsHandler(w http.ResponseWriter, r *http.Request) {
@@ -46,6 +48,7 @@ func speciesHandler(w http.ResponseWriter, r *http.Request) {
4648
}
4749
c := pool.Get(context.Background())
4850
defer pool.Put(c)
51+
var stmt *sqlite.Stmt
4952
stmt := c.Prep(`SELECT
5053
common_name,
5154
age_sex,
@@ -138,9 +141,29 @@ func main() {
138141
mux := &http.ServeMux{}
139142
mux.HandleFunc("/obs", obsHandler)
140143
mux.HandleFunc("/species", speciesHandler)
141-
go func() {
142-
fmt.Println("open your browser to http://127.0.0.1" + *flagAddr)
143-
}()
144144
uptime = time.Now()
145-
log.Fatal(http.ListenAndServe(*flagAddr, mux))
145+
srv := &http.Server{
146+
Addr: *flagAddr,
147+
ReadTimeout: 5 * time.Second,
148+
WriteTimeout: 10 * time.Second,
149+
IdleTimeout: 120 * time.Second,
150+
Handler: mux,
151+
}
152+
if *flagAddr == ":443" || *flagAddr == ":https" {
153+
m := &autocert.Manager{
154+
Cache: autocert.DirCache("/opt/acme/"),
155+
Prompt: autocert.AcceptTOS,
156+
HostPolicy: autocert.HostWhitelist("wright-lxt-01.boisestate.edu"),
157+
}
158+
go func() {
159+
log.Fatal(http.ListenAndServe(":http", m.HTTPHandler(nil)))
160+
}()
161+
srv.TLSConfig = &tls.Config{GetCertificate: m.GetCertificate}
162+
log.Fatal(srv.ListenAndServeTLS(*flagAddr, ""))
163+
} else {
164+
go func() {
165+
fmt.Println("open your browser to http://127.0.0.1" + *flagAddr)
166+
}()
167+
log.Fatal(srv.ListenAndServe())
168+
}
146169
}

0 commit comments

Comments
 (0)