Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-01-07 19:37:59 +0300
committerKamil Trzcinski <ayufan@ayufan.eu>2016-01-07 19:37:59 +0300
commitd7dc7ed7201437a3f450bd783800386e01d62661 (patch)
tree8053829c7ba64208917aaf599a912483a4509b95 /server.go
parent61debe70052f5da9e32acdb4d695ccf56991df9f (diff)
Add simple GitLab Pages daemon with custom CNAME and TLS support
Diffstat (limited to 'server.go')
-rw-r--r--server.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/server.go b/server.go
new file mode 100644
index 00000000..62647c89
--- /dev/null
+++ b/server.go
@@ -0,0 +1,42 @@
+package main
+
+import (
+ "crypto/tls"
+ "golang.org/x/net/http2"
+ "net/http"
+)
+
+type TLSHandler interface {
+ http.Handler
+ ServeTLS(*tls.ClientHelloInfo) (*tls.Certificate, error)
+}
+
+func ListenAndServe(addr string, handler http.Handler) error {
+ // create server
+ server := &http.Server{Addr: addr, Handler: handler}
+
+ if *http2proto {
+ err := http2.ConfigureServer(server, &http2.Server{})
+ if err != nil {
+ return err
+ }
+ }
+
+ return server.ListenAndServe()
+}
+
+func ListenAndServeTLS(addr string, certFile, keyFile string, handler TLSHandler) error {
+ // create server
+ server := &http.Server{Addr: addr, Handler: handler}
+ server.TLSConfig = &tls.Config{}
+ server.TLSConfig.GetCertificate = handler.ServeTLS
+
+ if *http2proto {
+ err := http2.ConfigureServer(server, &http2.Server{})
+ if err != nil {
+ return err
+ }
+ }
+
+ return server.ListenAndServeTLS(certFile, keyFile)
+}