Support host tokens (#507)

* Update coresys.py

* Update bootstrap.py

* Update security.py

* fix lint

* Update bootstrap.py
This commit is contained in:
Pascal Vizeli 2018-06-15 22:10:51 +02:00 committed by GitHub
parent baa61c6aa0
commit aea31ee6dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 5 deletions

View File

@ -44,13 +44,18 @@ class SecurityMiddleware(CoreSysAttributes):
if hassio_token == self.sys_homeassistant.uuid:
_LOGGER.debug("%s access from Home-Assistant", request.path)
request[REQUEST_FROM] = 'homeassistant'
return await handler(request)
# Host
if hassio_token == self.sys_machine_id:
_LOGGER.debug("%s access from Host", request.path)
request[REQUEST_FROM] = 'host'
# Add-on
addon = self.sys_addons.from_uuid(hassio_token)
if addon:
_LOGGER.info("%s access from %s", request.path, addon.slug)
request[REQUEST_FROM] = addon.slug
return await handler(request)
raise HTTPUnauthorized()
if not request.get(REQUEST_FROM):
raise HTTPUnauthorized()
return await handler(request)

View File

@ -24,6 +24,11 @@ from .dbus import DBusManager
_LOGGER = logging.getLogger(__name__)
ENV_SHARE = 'SUPERVISOR_SHARE'
ENV_NAME = 'SUPERVISOR_NAME'
ENV_REPO = 'HOMEASSISTANT_REPOSITORY'
ENV_MACHINE = 'MACHINE_ID'
def initialize_coresys(loop):
"""Initialize HassIO coresys/objects."""
@ -46,6 +51,9 @@ def initialize_coresys(loop):
# bootstrap config
initialize_system_data(coresys)
# Set Machine/Host ID
coresys.machine_id = os.environ.get(ENV_MACHINE)
return coresys
@ -139,8 +147,7 @@ def initialize_logging():
def check_environment():
"""Check if all environment are exists."""
# check environment variables
for key in ('SUPERVISOR_SHARE', 'SUPERVISOR_NAME',
'HOMEASSISTANT_REPOSITORY'):
for key in (ENV_SHARE, ENV_NAME, ENV_REPO):
try:
os.environ[key]
except KeyError:

View File

@ -17,6 +17,7 @@ class CoreSys:
"""Initialize coresys."""
# Static attributes
self.exit_code = 0
self.machine_id = None
# External objects
self._loop = loop