ailistener

git clone git://archive.git.mtrnord.blog/OpenHomeAuto/ailistener.git
Log | Files | Refs | LICENSE

commit 3b8668d1445c426519d4aeea96477f3c80d75bf3
parent 2b619bf79c52c657103b0ee724d80f6ffd7f270d
Author: MTRNord <mtrnord1@gmail.com>
Date:   Thu, 28 Jun 2018 20:06:56 +0200

Make letsencrypt work

Diffstat:
M.idea/usage.statistics.xml | 16++++++++++++++--
Mcmd/root.go | 3++-
Mpkg/util/vars.go | 2++
Mpkg/webhook/webhook.go | 25++++++++++++++++++++-----
4 files changed, 38 insertions(+), 8 deletions(-)

diff --git a/.idea/usage.statistics.xml b/.idea/usage.statistics.xml @@ -38,12 +38,24 @@ <session id="958628364"> <usages-collector id="statistics.file.extensions.edit"> <counts> - <entry key="go" value="4" /> + <entry key="go" value="39" /> + <entry key="txt" value="8" /> </counts> </usages-collector> <usages-collector id="statistics.file.types.edit"> <counts> - <entry key="Go" value="4" /> + <entry key="Go" value="39" /> + <entry key="PLAIN_TEXT" value="8" /> + </counts> + </usages-collector> + <usages-collector id="statistics.file.extensions.open"> + <counts> + <entry key="go" value="1" /> + </counts> + </usages-collector> + <usages-collector id="statistics.file.types.open"> + <counts> + <entry key="Go" value="1" /> </counts> </usages-collector> </session> diff --git a/cmd/root.go b/cmd/root.go @@ -53,5 +53,6 @@ func Execute() { func init() { util.ServiceAccountFilePath = rootCmd.Flags().String("serviceAccountJson", "", "Enter a Path to the exported json file from your service account") - util.HTTPSPort = rootCmd.Flags().Int("port", 8888, "Define the Port to listen on") + util.HTTPSPort = rootCmd.Flags().Int("https-port", 8888, "Define the SSL Port to listen on") + util.HTTPPort = rootCmd.Flags().Int("http-port", 8884, "Define the HTTP Port to listen on") } diff --git a/pkg/util/vars.go b/pkg/util/vars.go @@ -3,3 +3,5 @@ package util var ServiceAccountFilePath *string var HTTPSPort *int + +var HTTPPort *int diff --git a/pkg/webhook/webhook.go b/pkg/webhook/webhook.go @@ -1,6 +1,7 @@ package webhook import ( + "crypto/rand" "crypto/tls" "encoding/json" "fmt" @@ -9,6 +10,7 @@ import ( "github.com/gorilla/mux" df "github.com/leboncoin/dialogflow-go-webhook" "golang.org/x/crypto/acme/autocert" + "golang.org/x/net/http2" "log" "net/http" "strconv" @@ -31,7 +33,12 @@ func Start() { var r = mux.NewRouter() r.HandleFunc("/webhook", MessagesEndPoint).Methods("POST") - server := makeServerFromMux(r) + httpserver := makeServerFromMux(r) + httpsserver := makeServerFromMux(r) + + httpsserver.Addr = ":" + strconv.Itoa(*util.HTTPPort) + + go httpserver.ListenAndServe() dataDir := "." m = &autocert.Manager{ @@ -39,11 +46,19 @@ func Start() { Cache: autocert.DirCache(dataDir), } - server.Addr = ":" + strconv.Itoa(*util.HTTPSPort) - server.TLSConfig = &tls.Config{GetCertificate: m.GetCertificate} + tlsConfig := &tls.Config{ + Rand: rand.Reader, + Time: time.Now, + NextProtos: []string{http2.NextProtoTLS, "http/1.1"}, + MinVersion: tls.VersionTLS12, + GetCertificate: m.GetCertificate, + } + + httpsserver.Addr = ":" + strconv.Itoa(*util.HTTPSPort) + httpsserver.TLSConfig = tlsConfig - fmt.Printf("Starting HTTPS server on %s\n", server.Addr) - err := server.ListenAndServeTLS("", "") + fmt.Printf("Starting HTTPS server on %s\n", httpsserver.Addr) + err := httpsserver.ListenAndServeTLS("", "") if err != nil { log.Fatalf("httpsSrv.ListendAndServeTLS() failed with %s", err) }