Add support for keys to HTTP component

This commit is contained in:
Paulus Schoutsen 2015-12-06 14:19:25 -08:00
parent b33e9fe6d9
commit 9d8e077acc

View File

@ -37,7 +37,8 @@ CONF_API_PASSWORD = "api_password"
CONF_SERVER_HOST = "server_host" CONF_SERVER_HOST = "server_host"
CONF_SERVER_PORT = "server_port" CONF_SERVER_PORT = "server_port"
CONF_DEVELOPMENT = "development" CONF_DEVELOPMENT = "development"
CONF_CERTIFICATE = 'certificate' CONF_SSL_CERTIFICATE = 'ssl_certificate'
CONF_SSL_KEY = 'ssl_key'
DATA_API_PASSWORD = 'api_password' DATA_API_PASSWORD = 'api_password'
@ -59,12 +60,13 @@ def setup(hass, config):
server_host = conf.get(CONF_SERVER_HOST, '0.0.0.0') server_host = conf.get(CONF_SERVER_HOST, '0.0.0.0')
server_port = conf.get(CONF_SERVER_PORT, SERVER_PORT) server_port = conf.get(CONF_SERVER_PORT, SERVER_PORT)
development = str(conf.get(CONF_DEVELOPMENT, "")) == "1" development = str(conf.get(CONF_DEVELOPMENT, "")) == "1"
certificate = conf.get(CONF_CERTIFICATE) ssl_certificate = conf.get(CONF_SSL_CERTIFICATE)
ssl_key = conf.get(CONF_SSL_KEY)
try: try:
server = HomeAssistantHTTPServer( server = HomeAssistantHTTPServer(
(server_host, server_port), RequestHandler, hass, api_password, (server_host, server_port), RequestHandler, hass, api_password,
development, certificate) development, ssl_certificate, ssl_key)
except OSError: except OSError:
# If address already in use # If address already in use
_LOGGER.exception("Error setting up HTTP server") _LOGGER.exception("Error setting up HTTP server")
@ -77,7 +79,7 @@ def setup(hass, config):
hass.http = server hass.http = server
hass.config.api = rem.API(util.get_local_ip(), api_password, server_port, hass.config.api = rem.API(util.get_local_ip(), api_password, server_port,
certificate is not None) ssl_certificate is not None)
return True return True
@ -92,7 +94,7 @@ class HomeAssistantHTTPServer(ThreadingMixIn, HTTPServer):
# pylint: disable=too-many-arguments # pylint: disable=too-many-arguments
def __init__(self, server_address, request_handler_class, def __init__(self, server_address, request_handler_class,
hass, api_password, development, certificate): hass, api_password, development, ssl_certificate, ssl_key):
super().__init__(server_address, request_handler_class) super().__init__(server_address, request_handler_class)
self.server_address = server_address self.server_address = server_address
@ -108,8 +110,11 @@ class HomeAssistantHTTPServer(ThreadingMixIn, HTTPServer):
if development: if development:
_LOGGER.info("running http in development mode") _LOGGER.info("running http in development mode")
if certificate is not None: if ssl_certificate is not None:
self.socket = ssl.wrap_socket(self.socket, certfile=certificate) wrap_kwargs = {'certfile': ssl_certificate}
if ssl_key is not None:
wrap_kwargs['keyfile'] = ssl_key
self.socket = ssl.wrap_socket(self.socket, **wrap_kwargs)
def start(self): def start(self):
""" Starts the HTTP server. """ """ Starts the HTTP server. """