diff --git a/homeassistant/components/notify/xmpp.py b/homeassistant/components/notify/xmpp.py index 2e609b120da..68c0ce2979f 100644 --- a/homeassistant/components/notify/xmpp.py +++ b/homeassistant/components/notify/xmpp.py @@ -10,7 +10,10 @@ from homeassistant.components.notify import ( ATTR_TITLE, DOMAIN, BaseNotificationService) from homeassistant.helpers import validate_config -REQUIREMENTS = ['sleekxmpp==1.3.1', 'dnspython3==1.12.0'] +REQUIREMENTS = ['sleekxmpp==1.3.1', + 'dnspython3==1.12.0', + 'pyasn1==0.1.9', + 'pyasn1-modules==0.0.8'] _LOGGER = logging.getLogger(__name__) @@ -22,20 +25,23 @@ def get_service(hass, config): _LOGGER): return None - return XmppNotificationService(config['sender'], - config['password'], - config['recipient']) + return XmppNotificationService( + config.get('sender'), + config.get('password'), + config.get('recipient'), + config.get('tls', True)) # pylint: disable=too-few-public-methods class XmppNotificationService(BaseNotificationService): """Implement the notification service for Jabber (XMPP).""" - def __init__(self, sender, password, recipient): + def __init__(self, sender, password, recipient, tls): """Initialize the service.""" self._sender = sender self._password = password self._recipient = recipient + self._tls = tls def send_message(self, message="", **kwargs): """Send a message to a user.""" @@ -43,10 +49,10 @@ class XmppNotificationService(BaseNotificationService): data = "{}: {}".format(title, message) if title else message send_message(self._sender + '/home-assistant', self._password, - self._recipient, data) + self._recipient, self._tls, data) -def send_message(sender, password, recipient, message): +def send_message(sender, password, recipient, use_tls, message): """Send a message over XMPP.""" import sleekxmpp @@ -59,11 +65,11 @@ def send_message(sender, password, recipient, message): logging.basicConfig(level=logging.ERROR) - self.use_tls = True + self.use_tls = use_tls self.use_ipv6 = False self.add_event_handler('failed_auth', self.check_credentials) self.add_event_handler('session_start', self.start) - self.connect() + self.connect(use_tls=self.use_tls, use_ssl=False) self.process() def start(self, event): diff --git a/requirements_all.txt b/requirements_all.txt index 6b34aad3be1..06ec08f89e0 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -177,6 +177,12 @@ py-cpuinfo==0.2.3 # homeassistant.components.rfxtrx pyRFXtrx==0.6.5 +# homeassistant.components.notify.xmpp +pyasn1-modules==0.0.8 + +# homeassistant.components.notify.xmpp +pyasn1==0.1.9 + # homeassistant.components.media_player.cast pychromecast==0.7.2