mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 20:27:08 +00:00
Add login_method config option to fix login issue with RouterOS Version > 6.43 (#25194)
* added login_method config option to fix login issue with RouterOS Version > 6.43 * minor changes so that users don't have to change their config * removed default config value to make the fallback without config change work as expected
This commit is contained in:
parent
8bae7a45a5
commit
21f68b80ea
@ -16,6 +16,10 @@ _LOGGER = logging.getLogger(__name__)
|
||||
MTK_DEFAULT_API_PORT = '8728'
|
||||
MTK_DEFAULT_API_SSL_PORT = '8729'
|
||||
|
||||
CONF_LOGIN_METHOD = 'login_method'
|
||||
MTK_LOGIN_PLAIN = 'plain'
|
||||
MTK_LOGIN_TOKEN = 'token'
|
||||
|
||||
CONF_ENCODING = 'encoding'
|
||||
DEFAULT_ENCODING = 'utf-8'
|
||||
|
||||
@ -24,6 +28,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
vol.Required(CONF_USERNAME): cv.string,
|
||||
vol.Required(CONF_PASSWORD): cv.string,
|
||||
vol.Optional(CONF_METHOD): cv.string,
|
||||
vol.Optional(CONF_LOGIN_METHOD):
|
||||
vol.Any(MTK_LOGIN_PLAIN, MTK_LOGIN_TOKEN),
|
||||
vol.Optional(CONF_PORT): cv.port,
|
||||
vol.Optional(CONF_SSL, default=False): cv.boolean,
|
||||
vol.Optional(CONF_ENCODING, default=DEFAULT_ENCODING): cv.string,
|
||||
@ -54,6 +60,7 @@ class MikrotikScanner(DeviceScanner):
|
||||
self.port = MTK_DEFAULT_API_PORT
|
||||
self.username = config[CONF_USERNAME]
|
||||
self.password = config[CONF_PASSWORD]
|
||||
self.login_method = config.get(CONF_LOGIN_METHOD)
|
||||
self.method = config.get(CONF_METHOD)
|
||||
self.encoding = config[CONF_ENCODING]
|
||||
|
||||
@ -72,11 +79,22 @@ class MikrotikScanner(DeviceScanner):
|
||||
def connect_to_device(self):
|
||||
"""Connect to Mikrotik method."""
|
||||
import librouteros
|
||||
from librouteros.login import login_plain, login_token
|
||||
|
||||
if self.login_method == MTK_LOGIN_PLAIN:
|
||||
login_method = (login_plain,)
|
||||
elif self.login_method == MTK_LOGIN_TOKEN:
|
||||
login_method = (login_token,)
|
||||
else:
|
||||
login_method = (login_plain, login_token)
|
||||
|
||||
try:
|
||||
kwargs = {
|
||||
'port': self.port,
|
||||
'encoding': self.encoding
|
||||
'encoding': self.encoding,
|
||||
'login_methods': login_method
|
||||
}
|
||||
|
||||
if self.ssl:
|
||||
ssl_context = ssl.create_default_context()
|
||||
ssl_context.check_hostname = False
|
||||
|
Loading…
x
Reference in New Issue
Block a user