7
7
"os"
8
8
"time"
9
9
10
+ "gopkg.in/macaron.v1"
11
+
10
12
"golang.org/x/sync/errgroup"
11
13
12
14
"github.com/grafana/grafana/pkg/api"
@@ -89,7 +91,7 @@ func (g *GrafanaServerImpl) startHttpServer() {
89
91
case setting .HTTP :
90
92
err = http .ListenAndServe (listenAddr , m )
91
93
case setting .HTTPS :
92
- err = http . ListenAndServeTLS (listenAddr , setting .CertFile , setting .KeyFile , m )
94
+ err = ListenAndServeTLS (listenAddr , setting .CertFile , setting .KeyFile , m )
93
95
default :
94
96
g .log .Error ("Invalid protocol" , "protocol" , setting .Protocol )
95
97
g .Shutdown (1 , "Startup failed" )
@@ -113,6 +115,26 @@ func (g *GrafanaServerImpl) Shutdown(code int, reason string) {
113
115
os .Exit (code )
114
116
}
115
117
118
+ func ListenAndServeTLS (listenAddr , certfile , keyfile string , m * macaron.Macaron ) error {
119
+ if certfile == "" {
120
+ return fmt .Errorf ("cert_file cannot be empty when using HTTPS" )
121
+ }
122
+
123
+ if keyfile == "" {
124
+ return fmt .Errorf ("cert_key cannot be empty when using HTTPS" )
125
+ }
126
+
127
+ if _ , err := os .Stat (setting .CertFile ); os .IsNotExist (err ) {
128
+ return fmt .Errorf (`Cannot find SSL cert_file at %v` , setting .CertFile )
129
+ }
130
+
131
+ if _ , err := os .Stat (setting .KeyFile ); os .IsNotExist (err ) {
132
+ return fmt .Errorf (`Cannot find SSL key_file at %v` , setting .KeyFile )
133
+ }
134
+
135
+ return http .ListenAndServeTLS (listenAddr , setting .CertFile , setting .KeyFile , m )
136
+ }
137
+
116
138
// implement context.Context
117
139
func (g * GrafanaServerImpl ) Deadline () (deadline time.Time , ok bool ) {
118
140
return g .context .Deadline ()
0 commit comments