|
|
|
|
@ -7,6 +7,8 @@ import ( |
|
|
|
|
"os" |
|
|
|
|
"time" |
|
|
|
|
|
|
|
|
|
"gopkg.in/macaron.v1" |
|
|
|
|
|
|
|
|
|
"golang.org/x/sync/errgroup" |
|
|
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/api" |
|
|
|
|
@ -89,7 +91,7 @@ func (g *GrafanaServerImpl) startHttpServer() { |
|
|
|
|
case setting.HTTP: |
|
|
|
|
err = http.ListenAndServe(listenAddr, m) |
|
|
|
|
case setting.HTTPS: |
|
|
|
|
err = http.ListenAndServeTLS(listenAddr, setting.CertFile, setting.KeyFile, m) |
|
|
|
|
err = ListenAndServeTLS(listenAddr, setting.CertFile, setting.KeyFile, m) |
|
|
|
|
default: |
|
|
|
|
g.log.Error("Invalid protocol", "protocol", setting.Protocol) |
|
|
|
|
g.Shutdown(1, "Startup failed") |
|
|
|
|
@ -113,6 +115,26 @@ func (g *GrafanaServerImpl) Shutdown(code int, reason string) { |
|
|
|
|
os.Exit(code) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func ListenAndServeTLS(listenAddr, certfile, keyfile string, m *macaron.Macaron) error { |
|
|
|
|
if certfile == "" { |
|
|
|
|
return fmt.Errorf("cert_file cannot be empty when using HTTPS") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if keyfile == "" { |
|
|
|
|
return fmt.Errorf("cert_key cannot be empty when using HTTPS") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if _, err := os.Stat(setting.CertFile); os.IsNotExist(err) { |
|
|
|
|
return fmt.Errorf(`Cannot find SSL cert_file at %v`, setting.CertFile) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if _, err := os.Stat(setting.KeyFile); os.IsNotExist(err) { |
|
|
|
|
return fmt.Errorf(`Cannot find SSL key_file at %v`, setting.KeyFile) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return http.ListenAndServeTLS(listenAddr, setting.CertFile, setting.KeyFile, m) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// implement context.Context
|
|
|
|
|
func (g *GrafanaServerImpl) Deadline() (deadline time.Time, ok bool) { |
|
|
|
|
return g.context.Deadline() |
|
|
|
|
|