From ee5b9e72910718843af27a5023e1a022ba7ef435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Sat, 10 Dec 2016 18:53:25 +0100 Subject: [PATCH] Configurable scan options for nmap (#4838) --- .../components/device_tracker/nmap_tracker.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/device_tracker/nmap_tracker.py b/homeassistant/components/device_tracker/nmap_tracker.py index 2e8bbc5d2a1..404492e35cf 100644 --- a/homeassistant/components/device_tracker/nmap_tracker.py +++ b/homeassistant/components/device_tracker/nmap_tracker.py @@ -25,6 +25,8 @@ _LOGGER = logging.getLogger(__name__) CONF_EXCLUDE = 'exclude' # Interval in minutes to exclude devices from a scan while they are home CONF_HOME_INTERVAL = 'home_interval' +CONF_OPTIONS = 'scan_options' +DEFAULT_OPTIONS = '-F --host-timeout 5s' MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) @@ -33,7 +35,9 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOSTS): cv.ensure_list, vol.Required(CONF_HOME_INTERVAL, default=0): cv.positive_int, vol.Optional(CONF_EXCLUDE, default=[]): - vol.All(cv.ensure_list, vol.Length(min=1)) + vol.All(cv.ensure_list, vol.Length(min=1)), + vol.Optional(CONF_OPTIONS, default=DEFAULT_OPTIONS): + cv.string }) @@ -69,8 +73,9 @@ class NmapDeviceScanner(object): self.last_results = [] self.hosts = config[CONF_HOSTS] - self.exclude = config.get(CONF_EXCLUDE, []) + self.exclude = config[CONF_EXCLUDE] minutes = config[CONF_HOME_INTERVAL] + self._options = config[CONF_OPTIONS] self.home_interval = timedelta(minutes=minutes) self.success_init = self._update_info() @@ -103,7 +108,7 @@ class NmapDeviceScanner(object): from nmap import PortScanner, PortScannerError scanner = PortScanner() - options = '-F --host-timeout 5s ' + options = self._options if self.home_interval: boundary = dt_util.now() - self.home_interval