Browse Source

chore(web): Improve error message for invalid SSL configuration

bergquist 9 năm trước cách đây
mục cha
commit
36f0bf0e1e
1 tập tin đã thay đổi với 23 bổ sung1 xóa
  1. 23 1
      pkg/cmd/grafana-server/server.go

+ 23 - 1
pkg/cmd/grafana-server/server.go

@@ -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()