* Telegram_bot: Allow fetching data from unverified SSL endpoints (#22067) This patch adds an extra option to the payload that describes the resource to send to disable the SSL server verification when polling data from URLs. * Use the boolean interpretation of the variable directly Co-Authored-By: nbarrientos <nacho@criptonita.com>
This commit is contained in:
parent
53b204347d
commit
42265036ff
2 changed files with 18 additions and 1 deletions
|
@ -48,6 +48,7 @@ ATTR_TEXT = 'text'
|
||||||
ATTR_URL = 'url'
|
ATTR_URL = 'url'
|
||||||
ATTR_USER_ID = 'user_id'
|
ATTR_USER_ID = 'user_id'
|
||||||
ATTR_USERNAME = 'username'
|
ATTR_USERNAME = 'username'
|
||||||
|
ATTR_VERIFY_SSL = 'verify_ssl'
|
||||||
|
|
||||||
CONF_ALLOWED_CHAT_IDS = 'allowed_chat_ids'
|
CONF_ALLOWED_CHAT_IDS = 'allowed_chat_ids'
|
||||||
CONF_PROXY_URL = 'proxy_url'
|
CONF_PROXY_URL = 'proxy_url'
|
||||||
|
@ -108,6 +109,7 @@ SERVICE_SCHEMA_SEND_FILE = BASE_SERVICE_SCHEMA.extend({
|
||||||
vol.Optional(ATTR_USERNAME): cv.string,
|
vol.Optional(ATTR_USERNAME): cv.string,
|
||||||
vol.Optional(ATTR_PASSWORD): cv.string,
|
vol.Optional(ATTR_PASSWORD): cv.string,
|
||||||
vol.Optional(ATTR_AUTHENTICATION): cv.string,
|
vol.Optional(ATTR_AUTHENTICATION): cv.string,
|
||||||
|
vol.Optional(ATTR_VERIFY_SSL): cv.boolean,
|
||||||
})
|
})
|
||||||
|
|
||||||
SERVICE_SCHEMA_SEND_LOCATION = BASE_SERVICE_SCHEMA.extend({
|
SERVICE_SCHEMA_SEND_LOCATION = BASE_SERVICE_SCHEMA.extend({
|
||||||
|
@ -164,7 +166,7 @@ SERVICE_MAP = {
|
||||||
|
|
||||||
|
|
||||||
def load_data(hass, url=None, filepath=None, username=None, password=None,
|
def load_data(hass, url=None, filepath=None, username=None, password=None,
|
||||||
authentication=None, num_retries=5):
|
authentication=None, num_retries=5, verify_ssl=None):
|
||||||
"""Load data into ByteIO/File container from a source."""
|
"""Load data into ByteIO/File container from a source."""
|
||||||
try:
|
try:
|
||||||
if url is not None:
|
if url is not None:
|
||||||
|
@ -175,6 +177,8 @@ def load_data(hass, url=None, filepath=None, username=None, password=None,
|
||||||
params["auth"] = HTTPDigestAuth(username, password)
|
params["auth"] = HTTPDigestAuth(username, password)
|
||||||
else:
|
else:
|
||||||
params["auth"] = HTTPBasicAuth(username, password)
|
params["auth"] = HTTPBasicAuth(username, password)
|
||||||
|
if verify_ssl:
|
||||||
|
params["verify"] = verify_ssl
|
||||||
retry_num = 0
|
retry_num = 0
|
||||||
while retry_num < num_retries:
|
while retry_num < num_retries:
|
||||||
req = requests.get(url, **params)
|
req = requests.get(url, **params)
|
||||||
|
@ -536,6 +540,7 @@ class TelegramNotificationService:
|
||||||
username=kwargs.get(ATTR_USERNAME),
|
username=kwargs.get(ATTR_USERNAME),
|
||||||
password=kwargs.get(ATTR_PASSWORD),
|
password=kwargs.get(ATTR_PASSWORD),
|
||||||
authentication=kwargs.get(ATTR_AUTHENTICATION),
|
authentication=kwargs.get(ATTR_AUTHENTICATION),
|
||||||
|
verify_ssl=kwargs.get(ATTR_VERIFY_SSL),
|
||||||
)
|
)
|
||||||
if file_content:
|
if file_content:
|
||||||
for chat_id in self._get_target_chat_ids(target):
|
for chat_id in self._get_target_chat_ids(target):
|
||||||
|
|
|
@ -52,6 +52,9 @@ send_photo:
|
||||||
disable_notification:
|
disable_notification:
|
||||||
description: Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.
|
description: Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.
|
||||||
example: true
|
example: true
|
||||||
|
verify_ssl:
|
||||||
|
description: Enable or disable SSL certificate verification. Set to false if you're downloading the file from a URL and you don't want to validate the SSL certificate of the server.
|
||||||
|
example: false
|
||||||
keyboard:
|
keyboard:
|
||||||
description: List of rows of commands, comma-separated, to make a custom keyboard.
|
description: List of rows of commands, comma-separated, to make a custom keyboard.
|
||||||
example: '["/command1, /command2", "/command3"]'
|
example: '["/command1, /command2", "/command3"]'
|
||||||
|
@ -80,6 +83,9 @@ send_sticker:
|
||||||
disable_notification:
|
disable_notification:
|
||||||
description: Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.
|
description: Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.
|
||||||
example: true
|
example: true
|
||||||
|
verify_ssl:
|
||||||
|
description: Enable or disable SSL certificate verification. Set to false if you're downloading the file from a URL and you don't want to validate the SSL certificate of the server.
|
||||||
|
example: false
|
||||||
keyboard:
|
keyboard:
|
||||||
description: List of rows of commands, comma-separated, to make a custom keyboard.
|
description: List of rows of commands, comma-separated, to make a custom keyboard.
|
||||||
example: '["/command1, /command2", "/command3"]'
|
example: '["/command1, /command2", "/command3"]'
|
||||||
|
@ -111,6 +117,9 @@ send_video:
|
||||||
disable_notification:
|
disable_notification:
|
||||||
description: Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.
|
description: Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.
|
||||||
example: true
|
example: true
|
||||||
|
verify_ssl:
|
||||||
|
description: Enable or disable SSL certificate verification. Set to false if you're downloading the file from a URL and you don't want to validate the SSL certificate of the server.
|
||||||
|
example: false
|
||||||
keyboard:
|
keyboard:
|
||||||
description: List of rows of commands, comma-separated, to make a custom keyboard.
|
description: List of rows of commands, comma-separated, to make a custom keyboard.
|
||||||
example: '["/command1, /command2", "/command3"]'
|
example: '["/command1, /command2", "/command3"]'
|
||||||
|
@ -142,6 +151,9 @@ send_document:
|
||||||
disable_notification:
|
disable_notification:
|
||||||
description: Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.
|
description: Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.
|
||||||
example: true
|
example: true
|
||||||
|
verify_ssl:
|
||||||
|
description: Enable or disable SSL certificate verification. Set to false if you're downloading the file from a URL and you don't want to validate the SSL certificate of the server.
|
||||||
|
example: false
|
||||||
keyboard:
|
keyboard:
|
||||||
description: List of rows of commands, comma-separated, to make a custom keyboard.
|
description: List of rows of commands, comma-separated, to make a custom keyboard.
|
||||||
example: '["/command1, /command2", "/command3"]'
|
example: '["/command1, /command2", "/command3"]'
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue