mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Remove fortigate integration (#34586)
This commit is contained in:
parent
fd1edf1bb6
commit
2af961513d
@ -265,7 +265,6 @@ omit =
|
|||||||
homeassistant/components/folder_watcher/*
|
homeassistant/components/folder_watcher/*
|
||||||
homeassistant/components/foobot/sensor.py
|
homeassistant/components/foobot/sensor.py
|
||||||
homeassistant/components/fortios/device_tracker.py
|
homeassistant/components/fortios/device_tracker.py
|
||||||
homeassistant/components/fortigate/*
|
|
||||||
homeassistant/components/foscam/camera.py
|
homeassistant/components/foscam/camera.py
|
||||||
homeassistant/components/foscam/const.py
|
homeassistant/components/foscam/const.py
|
||||||
homeassistant/components/foursquare/*
|
homeassistant/components/foursquare/*
|
||||||
|
@ -134,7 +134,6 @@ homeassistant/components/flock/* @fabaff
|
|||||||
homeassistant/components/flume/* @ChrisMandich @bdraco
|
homeassistant/components/flume/* @ChrisMandich @bdraco
|
||||||
homeassistant/components/flunearyou/* @bachya
|
homeassistant/components/flunearyou/* @bachya
|
||||||
homeassistant/components/forked_daapd/* @uvjustin
|
homeassistant/components/forked_daapd/* @uvjustin
|
||||||
homeassistant/components/fortigate/* @kifeo
|
|
||||||
homeassistant/components/fortios/* @kimfrellsen
|
homeassistant/components/fortios/* @kimfrellsen
|
||||||
homeassistant/components/foscam/* @skgsergio
|
homeassistant/components/foscam/* @skgsergio
|
||||||
homeassistant/components/foursquare/* @robbiet480
|
homeassistant/components/foursquare/* @robbiet480
|
||||||
|
@ -1,79 +0,0 @@
|
|||||||
"""Fortigate integration."""
|
|
||||||
import logging
|
|
||||||
|
|
||||||
from pyFGT.fortigate import FGTConnectionError, FortiGate
|
|
||||||
import voluptuous as vol
|
|
||||||
|
|
||||||
from homeassistant.const import (
|
|
||||||
CONF_API_KEY,
|
|
||||||
CONF_DEVICES,
|
|
||||||
CONF_HOST,
|
|
||||||
CONF_USERNAME,
|
|
||||||
EVENT_HOMEASSISTANT_STOP,
|
|
||||||
)
|
|
||||||
from homeassistant.helpers import config_validation as cv
|
|
||||||
from homeassistant.helpers.discovery import async_load_platform
|
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
DOMAIN = "fortigate"
|
|
||||||
|
|
||||||
DATA_FGT = DOMAIN
|
|
||||||
|
|
||||||
CONFIG_SCHEMA = vol.Schema(
|
|
||||||
vol.All(
|
|
||||||
cv.deprecated(DOMAIN, invalidation_version="0.112.0"),
|
|
||||||
{
|
|
||||||
DOMAIN: vol.Schema(
|
|
||||||
{
|
|
||||||
vol.Required(CONF_HOST): cv.string,
|
|
||||||
vol.Required(CONF_USERNAME): cv.string,
|
|
||||||
vol.Required(CONF_API_KEY): cv.string,
|
|
||||||
vol.Optional(CONF_DEVICES, default=[]): vol.All(
|
|
||||||
cv.ensure_list, [cv.string]
|
|
||||||
),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
},
|
|
||||||
),
|
|
||||||
extra=vol.ALLOW_EXTRA,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
async def async_setup(hass, config):
|
|
||||||
"""Start the Fortigate component."""
|
|
||||||
conf = config[DOMAIN]
|
|
||||||
|
|
||||||
host = conf[CONF_HOST]
|
|
||||||
user = conf[CONF_USERNAME]
|
|
||||||
api_key = conf[CONF_API_KEY]
|
|
||||||
devices = conf[CONF_DEVICES]
|
|
||||||
|
|
||||||
is_success = await async_setup_fortigate(hass, config, host, user, api_key, devices)
|
|
||||||
|
|
||||||
return is_success
|
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_fortigate(hass, config, host, user, api_key, devices):
|
|
||||||
"""Start up the Fortigate component platforms."""
|
|
||||||
fgt = FortiGate(host, user, apikey=api_key, disable_request_warnings=True)
|
|
||||||
|
|
||||||
try:
|
|
||||||
fgt.login()
|
|
||||||
except FGTConnectionError:
|
|
||||||
_LOGGER.error("Failed to connect to Fortigate")
|
|
||||||
return False
|
|
||||||
|
|
||||||
hass.data[DATA_FGT] = {"fgt": fgt, "devices": devices}
|
|
||||||
|
|
||||||
hass.async_create_task(
|
|
||||||
async_load_platform(hass, "device_tracker", DOMAIN, {}, config)
|
|
||||||
)
|
|
||||||
|
|
||||||
async def close_fgt(event):
|
|
||||||
"""Close Fortigate connection on HA Stop."""
|
|
||||||
fgt.logout()
|
|
||||||
|
|
||||||
hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, close_fgt)
|
|
||||||
|
|
||||||
return True
|
|
@ -1,89 +0,0 @@
|
|||||||
"""Device tracker for Fortigate firewalls."""
|
|
||||||
from collections import namedtuple
|
|
||||||
import logging
|
|
||||||
|
|
||||||
from homeassistant.components.device_tracker import DeviceScanner
|
|
||||||
|
|
||||||
from . import DATA_FGT
|
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
DETECTED_DEVICES = "/monitor/user/detected-device"
|
|
||||||
|
|
||||||
|
|
||||||
async def async_get_scanner(hass, config):
|
|
||||||
"""Validate the configuration and return a Fortigate scanner."""
|
|
||||||
scanner = FortigateDeviceScanner(hass.data[DATA_FGT])
|
|
||||||
await scanner.async_connect()
|
|
||||||
return scanner if scanner.success_init else None
|
|
||||||
|
|
||||||
|
|
||||||
Device = namedtuple("Device", ["hostname", "mac"])
|
|
||||||
|
|
||||||
|
|
||||||
def _build_device(device_dict):
|
|
||||||
"""Return a Device from data."""
|
|
||||||
return Device(device_dict["hostname"], device_dict["mac"])
|
|
||||||
|
|
||||||
|
|
||||||
class FortigateDeviceScanner(DeviceScanner):
|
|
||||||
"""Query the Fortigate firewall."""
|
|
||||||
|
|
||||||
def __init__(self, hass_data):
|
|
||||||
"""Initialize the scanner."""
|
|
||||||
self.last_results = {}
|
|
||||||
self.success_init = False
|
|
||||||
self.connection = hass_data["fgt"]
|
|
||||||
self.devices = hass_data["devices"]
|
|
||||||
|
|
||||||
def get_results(self):
|
|
||||||
"""Get the results from the Fortigate."""
|
|
||||||
results = self.connection.get(DETECTED_DEVICES, "vdom=root")[1]["results"]
|
|
||||||
|
|
||||||
ret = []
|
|
||||||
for result in results:
|
|
||||||
if "hostname" not in result:
|
|
||||||
continue
|
|
||||||
|
|
||||||
ret.append(result)
|
|
||||||
|
|
||||||
return ret
|
|
||||||
|
|
||||||
async def async_connect(self):
|
|
||||||
"""Initialize connection to the router."""
|
|
||||||
# Test if the firewall is accessible
|
|
||||||
data = self.get_results()
|
|
||||||
self.success_init = data is not None
|
|
||||||
|
|
||||||
async def async_scan_devices(self):
|
|
||||||
"""Scan for new devices and return a list with found device MACs."""
|
|
||||||
await self.async_update_info()
|
|
||||||
return [device.mac for device in self.last_results]
|
|
||||||
|
|
||||||
def get_device_name(self, device):
|
|
||||||
"""Return the name of the given device or None if we don't know."""
|
|
||||||
name = next(
|
|
||||||
(result.hostname for result in self.last_results if result.mac == device),
|
|
||||||
None,
|
|
||||||
)
|
|
||||||
return name
|
|
||||||
|
|
||||||
async def async_update_info(self):
|
|
||||||
"""Ensure the information from the Fortigate firewall is up to date."""
|
|
||||||
_LOGGER.debug("Checking devices")
|
|
||||||
|
|
||||||
hosts = self.get_results()
|
|
||||||
|
|
||||||
all_results = [_build_device(device) for device in hosts if device["is_online"]]
|
|
||||||
|
|
||||||
# If the 'devices' configuration field is filled
|
|
||||||
if self.devices is not None:
|
|
||||||
last_results = [
|
|
||||||
device for device in all_results if device.hostname in self.devices
|
|
||||||
]
|
|
||||||
_LOGGER.debug(last_results)
|
|
||||||
# If the 'devices' configuration field is not filled
|
|
||||||
else:
|
|
||||||
last_results = all_results
|
|
||||||
|
|
||||||
self.last_results = last_results
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"domain": "fortigate",
|
|
||||||
"name": "FortiGate",
|
|
||||||
"documentation": "https://www.home-assistant.io/integrations/fortigate",
|
|
||||||
"codeowners": ["@kifeo"],
|
|
||||||
"requirements": ["pyfgt==0.5.1"]
|
|
||||||
}
|
|
@ -1323,9 +1323,6 @@ pyeverlights==0.1.0
|
|||||||
# homeassistant.components.ezviz
|
# homeassistant.components.ezviz
|
||||||
pyezviz==0.1.5
|
pyezviz==0.1.5
|
||||||
|
|
||||||
# homeassistant.components.fortigate
|
|
||||||
pyfgt==0.5.1
|
|
||||||
|
|
||||||
# homeassistant.components.fido
|
# homeassistant.components.fido
|
||||||
pyfido==2.1.1
|
pyfido==2.1.1
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user