Skip to content

Commit

Permalink
Merge pull request home-assistant#20794 from home-assistant/rc
Browse files Browse the repository at this point in the history
0.87.0
  • Loading branch information
balloob authored Feb 6, 2019
2 parents aa29eeb + 180689f commit c366fa0
Show file tree
Hide file tree
Showing 474 changed files with 15,853 additions and 2,790 deletions.
40 changes: 30 additions & 10 deletions .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ omit =
homeassistant/components/alarmdecoder.py
homeassistant/components/*/alarmdecoder.py

homeassistant/components/ambient_station/__init__.py
homeassistant/components/ambient_station/sensor.py

homeassistant/components/amcrest.py
homeassistant/components/*/amcrest.py

Expand Down Expand Up @@ -80,17 +83,24 @@ omit =
homeassistant/components/digital_ocean.py
homeassistant/components/*/digital_ocean.py

homeassistant/components/danfoss_air/*

homeassistant/components/dominos.py

homeassistant/components/doorbird.py
homeassistant/components/*/doorbird.py

homeassistant/components/dovado/*

homeassistant/components/dweet.py
homeassistant/components/*/dweet.py

homeassistant/components/eight_sleep.py
homeassistant/components/*/eight_sleep.py

homeassistant/components/ecoal_boiler.py
homeassistant/components/*/ecoal_boiler.py

homeassistant/components/ecobee.py
homeassistant/components/*/ecobee.py

Expand Down Expand Up @@ -163,13 +173,13 @@ omit =
homeassistant/components/hlk_sw16.py
homeassistant/components/*/hlk_sw16.py

homeassistant/components/homekit_controller/__init__.py
homeassistant/components/*/homekit_controller.py
homeassistant/components/homekit_controller/*

homeassistant/components/homematic/__init__.py
homeassistant/components/*/homematic.py

homeassistant/components/homematicip_cloud.py
homeassistant/components/homematicip_cloud/hap.py
homeassistant/components/homematicip_cloud/device.py
homeassistant/components/*/homematicip_cloud.py

homeassistant/components/homeworks.py
Expand Down Expand Up @@ -384,6 +394,9 @@ omit =

homeassistant/components/tradfri.py
homeassistant/components/*/tradfri.py

homeassistant/components/transmission.py
homeassistant/components/*/transmission.py

homeassistant/components/notify/twilio_sms.py
homeassistant/components/notify/twilio_call.py
Expand Down Expand Up @@ -443,15 +456,19 @@ omit =
homeassistant/components/zha/sensor.py
homeassistant/components/zha/switch.py
homeassistant/components/zha/api.py
homeassistant/components/zha/entities/*
homeassistant/components/zha/helpers.py
homeassistant/components/zha/entity.py
homeassistant/components/zha/device_entity.py
homeassistant/components/zha/core/helpers.py
homeassistant/components/zha/core/const.py
homeassistant/components/zha/core/device.py
homeassistant/components/zha/core/listeners.py
homeassistant/components/zha/core/gateway.py
homeassistant/components/*/zha.py

homeassistant/components/zigbee.py
homeassistant/components/*/zigbee.py

homeassistant/components/zoneminder/*
homeassistant/components/*/zoneminder.py

homeassistant/components/tuya.py
homeassistant/components/*/tuya.py
Expand All @@ -460,6 +477,7 @@ omit =
homeassistant/components/*/spider.py

homeassistant/components/air_quality/opensensemap.py
homeassistant/components/air_quality/nilu.py
homeassistant/components/alarm_control_panel/alarmdotcom.py
homeassistant/components/alarm_control_panel/canary.py
homeassistant/components/alarm_control_panel/concord232.py
Expand Down Expand Up @@ -552,6 +570,7 @@ omit =
homeassistant/components/device_tracker/sky_hub.py
homeassistant/components/device_tracker/snmp.py
homeassistant/components/device_tracker/swisscom.py
homeassistant/components/device_tracker/synology_srm.py
homeassistant/components/device_tracker/tado.py
homeassistant/components/device_tracker/thomson.py
homeassistant/components/device_tracker/tile.py
Expand All @@ -574,13 +593,15 @@ omit =
homeassistant/components/image_processing/dlib_face_identify.py
homeassistant/components/image_processing/seven_segments.py
homeassistant/components/image_processing/tensorflow.py
homeassistant/components/image_processing/qrcode.py
homeassistant/components/keyboard_remote.py
homeassistant/components/keyboard.py
homeassistant/components/light/avion.py
homeassistant/components/light/blinksticklight.py
homeassistant/components/light/blinkt.py
homeassistant/components/light/decora_wifi.py
homeassistant/components/light/decora.py
homeassistant/components/light/everlights.py
homeassistant/components/light/flux_led.py
homeassistant/components/light/futurenow.py
homeassistant/components/light/greenwave.py
Expand Down Expand Up @@ -719,7 +740,6 @@ omit =
homeassistant/components/sensor/aftership.py
homeassistant/components/sensor/airvisual.py
homeassistant/components/sensor/alpha_vantage.py
homeassistant/components/sensor/ambient_station.py
homeassistant/components/sensor/arest.py
homeassistant/components/sensor/arwn.py
homeassistant/components/sensor/bbox.py
Expand All @@ -744,7 +764,6 @@ omit =
homeassistant/components/sensor/dht.py
homeassistant/components/sensor/discogs.py
homeassistant/components/sensor/dnsip.py
homeassistant/components/sensor/dovado.py
homeassistant/components/sensor/domain_expiry.py
homeassistant/components/sensor/dte_energy_bridge.py
homeassistant/components/sensor/dublin_bus_transport.py
Expand Down Expand Up @@ -781,6 +800,7 @@ omit =
homeassistant/components/sensor/hp_ilo.py
homeassistant/components/sensor/htu21d.py
homeassistant/components/sensor/upnp.py
homeassistant/components/sensor/iliad_italy.py
homeassistant/components/sensor/imap_email_content.py
homeassistant/components/sensor/imap.py
homeassistant/components/sensor/influxdb.py
Expand Down Expand Up @@ -835,7 +855,9 @@ omit =
homeassistant/components/sensor/qnap.py
homeassistant/components/sensor/radarr.py
homeassistant/components/sensor/rainbird.py
homeassistant/components/sensor/recollect_waste.py
homeassistant/components/sensor/ripple.py
homeassistant/components/sensor/rova.py
homeassistant/components/sensor/rtorrent.py
homeassistant/components/sensor/ruter.py
homeassistant/components/sensor/scrape.py
Expand Down Expand Up @@ -874,7 +896,6 @@ omit =
homeassistant/components/sensor/time_date.py
homeassistant/components/sensor/torque.py
homeassistant/components/sensor/trafikverket_weatherstation.py
homeassistant/components/sensor/transmission.py
homeassistant/components/sensor/travisci.py
homeassistant/components/sensor/twitch.py
homeassistant/components/sensor/uber.py
Expand Down Expand Up @@ -919,7 +940,6 @@ omit =
homeassistant/components/switch/switchmate.py
homeassistant/components/switch/telnet.py
homeassistant/components/switch/tplink.py
homeassistant/components/switch/transmission.py
homeassistant/components/switch/vesync.py
homeassistant/components/telegram_bot/*
homeassistant/components/thingspeak.py
Expand Down
6 changes: 4 additions & 2 deletions CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ homeassistant/components/notify/syslog.py @fabaff
homeassistant/components/notify/xmpp.py @fabaff
homeassistant/components/notify/yessssms.py @flowolf
homeassistant/components/plant.py @ChristianKuehnel
homeassistant/components/remote/harmony.py @ehendrix23
homeassistant/components/scene/lifx_cloud.py @amelchio
homeassistant/components/sensor/airvisual.py @bachya
homeassistant/components/sensor/alpha_vantage.py @fabaff
Expand Down Expand Up @@ -152,6 +153,7 @@ homeassistant/components/weather/openweathermap.py @fabaff
homeassistant/components/xiaomi_aqara.py @danielhiversen @syssi

# A
homeassistant/components/ambient_station/* @bachya
homeassistant/components/arduino.py @fabaff
homeassistant/components/*/arduino.py @fabaff
homeassistant/components/*/arest.py @fabaff
Expand Down Expand Up @@ -234,6 +236,7 @@ homeassistant/components/*/rfxtrx.py @danielhiversen

# S
homeassistant/components/simplisafe/* @bachya
homeassistant/components/smartthings/* @andrewsayre

# T
homeassistant/components/tahoma.py @philklei
Expand Down Expand Up @@ -268,8 +271,7 @@ homeassistant/components/*/xiaomi_aqara.py @danielhiversen @syssi
homeassistant/components/*/xiaomi_miio.py @rytilahti @syssi

# Z
homeassistant/components/zoneminder/ @rohankapoorcom
homeassistant/components/*/zoneminder.py @rohankapoorcom
homeassistant/components/zoneminder/* @rohankapoorcom

# Other code
homeassistant/scripts/check_config.py @kellerza
29 changes: 25 additions & 4 deletions homeassistant/auth/providers/homeassistant.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
import base64
from collections import OrderedDict
import logging
from typing import Any, Dict, List, Optional, cast

from typing import Any, Dict, List, Optional, Set, cast # noqa: F401

import bcrypt
import voluptuous as vol
Expand Down Expand Up @@ -52,6 +53,9 @@ def __init__(self, hass: HomeAssistant) -> None:
self._store = hass.helpers.storage.Store(STORAGE_VERSION, STORAGE_KEY,
private=True)
self._data = None # type: Optional[Dict[str, Any]]
# Legacy mode will allow usernames to start/end with whitespace
# and will compare usernames case-insensitive.
# Remove in 2020 or when we launch 1.0.
self.is_legacy = False

@callback
Expand All @@ -60,7 +64,7 @@ def normalize_username(self, username: str) -> str:
if self.is_legacy:
return username

return username.strip()
return username.strip().casefold()

async def async_load(self) -> None:
"""Load stored data."""
Expand All @@ -71,17 +75,34 @@ async def async_load(self) -> None:
'users': []
}

seen = set() # type: Set[str]

for user in data['users']:
username = user['username']

# check if we have duplicates
folded = username.casefold()

if folded in seen:
self.is_legacy = True

logging.getLogger(__name__).warning(
"Home Assistant auth provider is running in legacy mode "
"because we detected usernames that are case-insensitive"
"equivalent. Please change the username: '%s'.", username)

break

seen.add(folded)

# check if we have unstripped usernames
if username != username.strip():
self.is_legacy = True

logging.getLogger(__name__).warning(
"Home Assistant auth provider is running in legacy mode "
"because we detected usernames that start or end in a "
"space. Please change the username.")
"space. Please change the username: '%s'.", username)

break

Expand All @@ -103,7 +124,7 @@ def validate_login(self, username: str, password: str) -> None:

# Compare all users to avoid timing attacks.
for user in self.users:
if username == user['username']:
if self.normalize_username(user['username']) == username:
found = user

if found is None:
Expand Down
4 changes: 2 additions & 2 deletions homeassistant/components/air_quality/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

ATTR_AQI = 'air_quality_index'
ATTR_ATTRIBUTION = 'attribution'
ATTR_C02 = 'carbon_dioxide'
ATTR_CO2 = 'carbon_dioxide'
ATTR_CO = 'carbon_monoxide'
ATTR_N2O = 'nitrogen_oxide'
ATTR_NO = 'nitrogen_monoxide'
Expand All @@ -35,7 +35,7 @@
PROP_TO_ATTR = {
'air_quality_index': ATTR_AQI,
'attribution': ATTR_ATTRIBUTION,
'carbon_dioxide': ATTR_C02,
'carbon_dioxide': ATTR_CO2,
'carbon_monoxide': ATTR_CO,
'nitrogen_oxide': ATTR_N2O,
'nitrogen_monoxide': ATTR_NO,
Expand Down
Loading

0 comments on commit c366fa0

Please sign in to comment.