From a3f617abad45db21b3d8e188750a84d199f57ca2 Mon Sep 17 00:00:00 2001 From: Mark Wolfe Date: Tue, 25 Feb 2014 23:46:05 +1100 Subject: [PATCH] Added flags for supplying certificate/key and TLS listener option. --- cmd/droned/drone.go | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/cmd/droned/drone.go b/cmd/droned/drone.go index 177732221..9d796851a 100644 --- a/cmd/droned/drone.go +++ b/cmd/droned/drone.go @@ -34,6 +34,10 @@ var ( // driver specific connection information. In this // case, it should be the location of the SQLite file datasource string + + // optional flags for tls listener + sslcert string + sslkey string ) func main() { @@ -42,15 +46,35 @@ func main() { flag.StringVar(&port, "port", ":8080", "") flag.StringVar(&driver, "driver", "sqlite3", "") flag.StringVar(&datasource, "datasource", "drone.sqlite", "") + flag.StringVar(&sslcert, "sslcert", "", "") + flag.StringVar(&sslkey, "sslkey", "", "") flag.Parse() + // validate the TLS arguments + checkTLSFlags() + // setup database and handlers setupDatabase() setupStatic() setupHandlers() - // start the webserver on the default port. - panic(http.ListenAndServe(port, nil)) + // start webserver using HTTPS or HTTP + if sslcert != "" && sslkey != "" { + panic(http.ListenAndServeTLS(port, sslcert, sslkey, nil)) + } else { + panic(http.ListenAndServe(port, nil)) + } +} + +// checking if the TLS flags where supplied correctly. +func checkTLSFlags() { + + if sslcert != "" && sslkey == "" { + log.Fatal("invalid configuration: -sslkey unspecified, but -sslcert was specified.") + } else if sslcert == "" && sslkey != "" { + log.Fatal("invalid configuration: -sslcert unspecified, but -sslkey was specified.") + } + } // setup the database connection and register with the