From 4d77ff3ff1f12ce6b64927de606a9be3d885c4c3 Mon Sep 17 00:00:00 2001 From: xfilo Date: Mon, 24 Feb 2025 00:51:44 +0100 Subject: [PATCH] New plugin for Omada SDN import using OpenAPI --- .../omada_sdn_openapi_import/README.md | 75 ++ .../omada_sdn_openapi_import/config.json | 669 ++++++++++++++++++ .../omada_sdn_openapi_import_settings.png | Bin 0 -> 179883 bytes .../omada_sdn_openapi_import/script.py | 489 +++++++++++++ 4 files changed, 1233 insertions(+) create mode 100755 front/plugins/omada_sdn_openapi_import/README.md create mode 100755 front/plugins/omada_sdn_openapi_import/config.json create mode 100644 front/plugins/omada_sdn_openapi_import/omada_sdn_openapi_import_settings.png create mode 100755 front/plugins/omada_sdn_openapi_import/script.py diff --git a/front/plugins/omada_sdn_openapi_import/README.md b/front/plugins/omada_sdn_openapi_import/README.md new file mode 100755 index 00000000..79853bae --- /dev/null +++ b/front/plugins/omada_sdn_openapi_import/README.md @@ -0,0 +1,75 @@ +## šŸ” Overview + +- This plugin imports online devices and clients from the Omada SDN (Omada Controller) through the provided OpenAPI. + +### ✨ Features + +1. Import online devices (gateways, switches, and access points) compatible with Omada SDN and send them to NetAlertX. +2. Import online clients (e.g., computers and smartphones) and send them to NetAlertX. + +### šŸ“Œ Requirements + +- Omada Controller with Open API support. + +#### āœ… Officially supported controllers - [Source](https://community.tp-link.com/en/business/forum/topic/590430) + - All Omada Pro versions support Open API + - Omada Software/Hardware Controller support Open API since Controller v5.12 + +### āš™ļø Setup guide & settings + +1. Login to your **Omada Controller**. +2. In the **Global Dashboard**, navigate to **Settings**, select **Platform Integration**, then click on **Open API**. +3. Create new credentials by clicking **Add New App**. + - The `App Name` can be anything. + - Set the `Mode` to `Client`. + - Set the `Role` to `Viewer` or `Administrator`. + - For `Site Privileges`, choose `All (Including all new-created sites)` or select specific site(s). + - Click `Apply` to create the application. +4. From the created application, you will need the following fields. + - `Omada ID` - visible by clicking the **eye** icon next to the **edit** and **delete** buttons. + - `Client ID` + - `Client Secret` +5. Open **NetAlertX's Settings**, head to **Omada SDN using OpenAPI** `(OMDSDNOPENAPI)` and configure the plugin. + - `OMDSDNOPENAPI_RUN` - When the scan should run, good option is `schedule`. + - `OMDSDNOPENAPI_host` - Specify the host URL of your **Omada Controller**, including the protocol, e.g., `https://example.com:1234`. + - `OMDSDNOPENAPI_omada_id` - Enter the **Omada ID** obtained in the previous step. + - `OMDSDNOPENAPI_client_id` - Enter the **Client ID** obtained in the previous step. + - `OMDSDNOPENAPI_client_secret` - Enter the **Client Secret** obtained in the previous step. + - `OMDSDNOPENAPI_sites` (optional) - You can enter either the **site name** or **site ID**. If an invalid value is provided or neither is specified, the plugin will default to the first accessible site using the supplied credentials. + - `OMDSDNOPENAPI_verify_ssl` - Check this option to enable SSL verification for requests to your Omada Controller's OpenAPI. If unchecked, SSL verification will be disabled. + +### šŸ“‹ Data populated by the plugin + +- This table outlines the data fields populated by the plugin, their conditions, descriptions, and where they are visible. + +| šŸ”¹ Field | šŸ”„ Population Condition | šŸ“– Description | šŸ‘€ Visibility | +|---|---|---|---| +| **MAC** | Always populated | The device's unique MAC address | Device details | +| **Last IP** | Always populated | The device's assigned IP address | Device details | +| **Name** | Always populated | The device name retrieved from Omada | Device details | +| **Parent Node** | Only if available | MAC address of the parent device (switch, AP, or gateway) | Device details | +| **Parent Node Port** | Only if available | The port number used to connect to the parent device | Device details | +| **SSID** | Only if available | The SSID through which the device is connected | Device details | +| **Device Type** | Only if available | Detected device type (e.g., iPhone, PC, Android) | Device details | +| **Last Seen** | Always populated | Last recorded time the device was active on the network | Plugin details | +| **Omada Site** | Always populated | Omada site to which the device is assigned | Device details | +| **VLAN ID** | Only if available | VLAN ID assigned to the device | Plugin details | + + +### āš ļø Limitations and warnings + +- The plugin can fetch up to 1000 devices and 1000 clients from the Omada Controller. +- Using non-Omada SDN compatible devices (e.g., switches, APs) may result in incomplete or inaccurate data. + +### šŸ–¼ļø Examples + +- Settings: + +- ![settings_example](/front/plugins/omada_sdn_openapi_import/omada_sdn_openapi_import_settings.png) + +### ā„¹ļø Other info + +- Version: 1.0 +- Author : [xfilo](https://github.com/xfilo) +- Release Date: 24-February-2025 +- Omada Open API documentation: https://use1-omada-northbound.tplinkcloud.com/doc.html#/home (may take a moment to load) diff --git a/front/plugins/omada_sdn_openapi_import/config.json b/front/plugins/omada_sdn_openapi_import/config.json new file mode 100755 index 00000000..062a6d91 --- /dev/null +++ b/front/plugins/omada_sdn_openapi_import/config.json @@ -0,0 +1,669 @@ +{ + "code_name": "omada_sdn_openapi_import", + "unique_prefix": "OMDSDNOPENAPI", + "plugin_type": "device_scanner", + "execution_order" : "Layer_0", + "enabled": true, + "data_source": "script", + "mapped_to_table": "CurrentScan", + "data_filters": [ + { + "compare_column": "Object_PrimaryID", + "compare_operator": "==", + "compare_field_id": "txtMacFilter", + "compare_js_template": "'{value}'.toString()", + "compare_use_quotes": true + } + ], + "show_ui": true, + "localized": ["display_name", "description", "icon"], + "display_name": [ + { + "language_code": "en_us", + "string": "Omada SDN using OpenAPI" + } + ], + "description": [ + { + "language_code": "en_us", + "string": "This plugin imports devices and clients from the Omada SDN (Omada Controller) through the provided OpenAPI." + } + ], + "icon": [ + { + "language_code": "en_us", + "string": "" + } + ], + "params": [], + "settings": [ + { + "function": "RUN", + "events": ["run"], + "type": { + "dataType": "string", + "elements": [ + { "elementType": "select", "elementOptions": [], "transformers": [] } + ] + }, + + "default_value": "disabled", + "options": ["disabled", "once", "schedule", "always_after_scan"], + "localized": ["name", "description"], + "name": [ + { + "language_code": "en_us", + "string": "When to run" + } + ], + "description": [ + { + "language_code": "en_us", + "string": "When the scan should run, good option is schedule." + } + ] + }, + { + "function": "RUN_SCHD", + "type": { + "dataType": "string", + "elements": [ + { + "elementType": "span", + "elementOptions": [ + { + "cssClasses": "input-group-addon validityCheck" + }, + { + "getStringKey": "Gen_ValidIcon" + } + ], + "transformers": [] + }, + { + "elementType": "input", + "elementOptions": [ + { + "onChange": "validateRegex(this)" + }, + { + "base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlsxLTldfFsxMl1bMC05XXwzWzAxXXxbMC05XSstWzAtOV0rfFwqL1swLTldKykpXHMrKD86XCp8KD86WzEtOV18MVswLTJdfFswLTldKy1bMC05XSt8XCovWzAtOV0rKSlccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XXxcKi9bMC05XSspKSQ=" + } + ], + "transformers": [] + } + ] + }, + + "default_value": "*/5 * * * *", + "options": [], + "localized": ["name", "description"], + "name": [ + { + "language_code": "en_us", + "string": "Schedule" + } + ], + "description": [ + { + "language_code": "en_us", + "string": "Only enabled if you select schedule in the OMDSDNOPENAPI_RUN setting. Make sure you enter the schedule in the correct cron-like format (e.g. validate at crontab.guru). For example entering 0 4 * * * will run the scan after 4 am in the selected TIMEZONE. Will be run NEXT time the time passes." + } + ] + }, + { + "function": "host", + "type": { + "dataType": "string", + "elements": [ + { "elementType": "input", "elementOptions": [], "transformers": [] } + ] + }, + "maxLength": 100, + "default_value": "", + "options": [], + "localized": ["name", "description"], + "name": [ + { + "language_code": "en_us", + "string": "Host URL" + } + ], + "description": [ + { + "language_code": "en_us", + "string": "Specify the host URL of your Omada Controller, including the protocol, eg. https://example.com:1234." + } + ] + }, + { + "function": "omada_id", + "type": { + "dataType": "string", + "elements": [ + { "elementType": "input", "elementOptions": [], "transformers": [] } + ] + }, + "maxLength": 100, + "default_value": "", + "options": [], + "localized": ["name", "description"], + "name": [ + { + "language_code": "en_us", + "string": "Omada ID" + } + ], + "description": [ + { + "language_code": "en_us", + "string": "Provide your Omada ID, which can be found in the OpenAPI section of your Omada Controller." + } + ] + }, + { + "function": "client_id", + "type": { + "dataType": "string", + "elements": [ + { "elementType": "input", "elementOptions": [], "transformers": [] } + ] + }, + "maxLength": 100, + "default_value": "", + "options": [], + "localized": ["name", "description"], + "name": [ + { + "language_code": "en_us", + "string": "Client ID" + } + ], + "description": [ + { + "language_code": "en_us", + "string": "Enter the Client ID generated by your Omada Controller in the OpenAPI section." + } + ] + }, + { + "function": "client_secret", + "type": { + "dataType": "string", + "elements": [ + { + "elementType": "input", + "elementOptions": [{ "type": "password" }], + "transformers": [] + } + ] + }, + "maxLength": 100, + "default_value": "", + "options": [], + "localized": ["name", "description"], + "name": [ + { + "language_code": "en_us", + "string": "Client Secret" + } + ], + "description": [ + { + "language_code": "en_us", + "string": "Input the Client Secret obtained from the OpenAPI section of your Omada Controller." + } + ] + }, + { + "function": "sites", + "type": { + "dataType": "array", + "elements": [ + { + "elementType": "input", + "elementOptions": [ + { "placeholder": "Enter value" }, + { "suffix": "_in" }, + { "cssClasses": "col-sm-10" }, + { "prefillValue": "null" } + ], + "transformers": [] + }, + { + "elementType": "button", + "elementOptions": [ + { "sourceSuffixes": ["_in"] }, + { "separator": "" }, + { "cssClasses": "col-xs-12" }, + { "onClick": "addList(this, false)" }, + { "getStringKey": "Gen_Add" } + ], + "transformers": [] + }, + { + "elementType": "select", + "elementHasInputValue": 1, + "elementOptions": [ + { "multiple": "true" }, + { "readonly": "true" }, + { "editable": "true" } + ], + "transformers": [] + }, + { + "elementType": "button", + "elementOptions": [ + { "sourceSuffixes": [] }, + { "separator": "" }, + { "cssClasses": "col-xs-6" }, + { "onClick": "removeAllOptions(this)" }, + { "getStringKey": "Gen_Remove_All" } + ], + "transformers": [] + }, + { + "elementType": "button", + "elementOptions": [ + { "sourceSuffixes": [] }, + { "separator": "" }, + { "cssClasses": "col-xs-6" }, + { "onClick": "removeFromList(this)" }, + { "getStringKey": "Gen_Remove_Last" } + ], + "transformers": [] + } + ] + }, + "default_value": [], + "options": [], + "localized": ["name", "description"], + "name": [ + { + "language_code": "en_us", + "string": "Omada Sites" + } + ], + "description": [ + { + "language_code": "en_us", + "string": "You can enter either the site name or site ID. If an invalid value is provided or neither is specified, the plugin will default to the first accessible site using the supplied credentials." + } + ] + }, + { + "function": "verify_ssl", + "type": { + "dataType": "boolean", + "elements": [ + { + "elementType": "input", + "elementOptions": [{ "type": "checkbox" }], + "transformers": [] + } + ] + }, + "default_value": true, + "options": [], + "localized": ["name", "description"], + "name": [ + { + "language_code": "en_us", + "string": "Verify SSL" + } + ], + "description": [ + { + "language_code": "en_us", + "string": "Check this option to enable SSL verification for requests to your Omada Controller's OpenAPI. If unchecked, SSL verification will be disabled." + } + ] + }, + { + "function": "CMD", + "type": { + "dataType": "string", + "elements": [ + { + "elementType": "input", + "elementOptions": [{ "readonly": "true" }], + "transformers": [] + } + ] + }, + "default_value": "python3 /app/front/plugins/omada_sdn_openapi_import/script.py", + "options": [], + "localized": ["name", "description"], + "name": [ + { + "language_code": "en_us", + "string": "Command" + } + ], + "description": [ + { + "language_code": "en_us", + "string": "Command to run. This can not be changed." + } + ] + }, + { + "function": "RUN_TIMEOUT", + "type": { + "dataType": "integer", + "elements": [ + { + "elementType": "input", + "elementOptions": [{ "type": "number" }], + "transformers": [] + } + ] + }, + "default_value": 30, + "options": [], + "localized": ["name", "description"], + "name": [ + { + "language_code": "en_us", + "string": "Run timeout" + } + ], + "description": [ + { + "language_code": "en_us", + "string": "Maximum time in seconds to wait for the script to finish. If this time is exceeded the script is aborted." + } + ] + }, + { + "default_value": [], + "description": [ + { + "language_code": "en_us", + "string": "Send a notification if selected values change. Use CTRL + Click to select/deselect. " + } + ], + "function": "WATCH", + "localized": ["name", "description"], + "name": [ + { + "language_code": "en_us", + "string": "Watched" + } + ], + "options": [ + "Watched_Value1", + "Watched_Value2", + "Watched_Value3", + "Watched_Value4" + ], + "type": { + "dataType": "array", + "elements": [ + { + "elementType": "select", + "elementOptions": [{ "multiple": "true" }], + "transformers": [] + } + ] + } + }, + { + "default_value": ["new", "watched-changed"], + "description": [ + { + "language_code": "en_us", + "string": "Send a notification only on these statuses. new means a new unique (unique combination of PrimaryId and SecondaryId) object was discovered. watched-changed means that selected Watched_ValueN columns changed." + } + ], + "function": "REPORT_ON", + "localized": ["name", "description"], + "name": [ + { + "language_code": "en_us", + "string": "Report on" + } + ], + "options": [ + "new", + "watched-changed", + "watched-not-changed", + "missing-in-last-scan" + ], + "type": { + "dataType": "array", + "elements": [ + { + "elementType": "select", + "elementOptions": [{ "multiple": "true" }], + "transformers": [] + } + ] + } + } + ], + "database_column_definitions": [ + { + "column": "Index", + "css_classes": "col-sm-2", + "show": true, + "type": "none", + "default_value": "", + "options": [], + "localized": ["name"], + "name": [ + { + "language_code": "en_us", + "string": "Index" + } + ] + }, + { + "column": "Object_PrimaryID", + "mapped_to_column": "cur_MAC", + "css_classes": "col-sm-3", + "show": true, + "type": "device_name_mac", + "default_value": "", + "options": [], + "localized": ["name"], + "name": [ + { + "language_code": "en_us", + "string": "MAC Address" + } + ] + }, + { + "column": "Object_SecondaryID", + "mapped_to_column": "cur_IP", + "css_classes": "col-sm-2", + "show": true, + "type": "device_ip", + "default_value": "", + "options": [], + "localized": ["name"], + "name": [ + { + "language_code": "en_us", + "string": "IP Address" + } + ] + }, + { + "column": "Watched_Value1", + "mapped_to_column": "cur_Name", + "css_classes": "col-sm-2", + "show": true, + "type": "label", + "default_value": "", + "options": [], + "localized": ["name"], + "name": [ + { + "language_code": "en_us", + "string": "Device Name" + } + ] + }, + { + "column": "Watched_Value2", + "mapped_to_column": "cur_NetworkNodeMAC", + "css_classes": "col-sm-2", + "show": true, + "type": "device_name_mac", + "default_value": "", + "options": [], + "localized": ["name"], + "name": [ + { + "language_code": "en_us", + "string": "Parent Node MAC" + } + ] + }, + { + "column": "Watched_Value3", + "mapped_to_column": "cur_PORT", + "css_classes": "col-sm-2", + "show": true, + "type": "label", + "default_value": "", + "options": [], + "localized": ["name"], + "name": [ + { + "language_code": "en_us", + "string": "Parent Node Port" + } + ] + }, + { + "column": "Watched_Value4", + "mapped_to_column": "cur_SSID", + "css_classes": "col-sm-2", + "show": true, + "type": "label", + "default_value": "", + "options": [], + "localized": ["name"], + "name": [ + { + "language_code": "en_us", + "string": "Parent Node SSID" + } + ] + }, + { + "column": "Extra", + "mapped_to_column": "cur_Type", + "css_classes": "col-sm-2", + "show": false, + "type": "label", + "default_value": "", + "options": [], + "localized": ["name"], + "name": [ + { + "language_code": "en_us", + "string": "Device Type" + } + ] + }, + { + "column": "Dummy", + "mapped_to_column": "cur_ScanMethod", + "mapped_to_column_data": { + "value": "OMDSDNOPENAPI" + }, + "css_classes": "col-sm-2", + "show": false, + "type": "label", + "default_value": "", + "options": [], + "localized": ["name"], + "name": [ + { + "language_code": "en_us", + "string": "Scan method" + } + ] + }, + { + "column": "DateTimeCreated", + "css_classes": "col-sm-2", + "show": true, + "type": "label", + "default_value": "", + "options": [], + "localized": ["name"], + "name": [ + { + "language_code": "en_us", + "string": "Created" + } + ] + }, + { + "column": "DateTimeChanged", + "css_classes": "col-sm-2", + "show": false, + "type": "label", + "default_value": "", + "options": [], + "localized": ["name"], + "name": [ + { + "language_code": "en_us", + "string": "Changed" + } + ] + }, + { + "column": "HelpVal1", + "css_classes": "col-sm-2", + "show": true, + "type": "label", + "default_value": "", + "options": [], + "localized": ["name"], + "name": [ + { + "language_code": "en_us", + "string": "Last Seen" + } + ] + }, + { + "column": "HelpVal2", + "mapped_to_column": "cur_NetworkSite", + "css_classes": "col-sm-2", + "show": true, + "type": "label", + "default_value": "", + "options": [], + "localized": ["name"], + "name": [ + { + "language_code": "en_us", + "string": "Omada Site" + } + ] + }, + { + "column": "HelpVal3", + "css_classes": "col-sm-2", + "show": true, + "type": "label", + "default_value": "", + "options": [], + "localized": ["name"], + "name": [ + { + "language_code": "en_us", + "string": "VLAN ID" + } + ] + } + ] +} diff --git a/front/plugins/omada_sdn_openapi_import/omada_sdn_openapi_import_settings.png b/front/plugins/omada_sdn_openapi_import/omada_sdn_openapi_import_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..1fc775a13b3aa3858f4b9403c4d0a02d1ec4e8fc GIT binary patch literal 179883 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 z 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 literal 0 HcmV?d00001 diff --git a/front/plugins/omada_sdn_openapi_import/script.py b/front/plugins/omada_sdn_openapi_import/script.py new file mode 100755 index 00000000..00e64288 --- /dev/null +++ b/front/plugins/omada_sdn_openapi_import/script.py @@ -0,0 +1,489 @@ +#!/usr/bin/env python + +""" +This plugin imports devices and clients from Omada Controller using their OpenAPI. + +It was inspired by the 'omada_sdn_imp/omada_sdn.py' plugin, +which relied on the 'tplink_omada_client' library instead of OpenAPI. +However, I found that approach somewhat unstable, so I decided +to give it a shot and create a new plugin with the goal of providing +same, but more reliable results. + +Please note that this is my first plugin, and I’m not a Python developer. +Any comments, bug fixes, or contributions are greatly appreciated. + +Author: https://github.com/xfilo +""" + +__author__ = "xfilo" +__version__ = 0.1 # Initial version + +import os +import sys +import urllib3 +import requests +import time +import datetime +import pytz + +from datetime import datetime +from typing import Literal, Any, Dict + +# Define the installation path and extend the system path for plugin imports +INSTALL_PATH = "/app" +sys.path.extend([f"{INSTALL_PATH}/front/plugins", f"{INSTALL_PATH}/server"]) + +from plugin_helper import Plugin_Objects, is_typical_router_ip, is_mac +from logger import mylog, Logger +from const import logPath +from helper import get_setting_value +import conf + +# Make sure the TIMEZONE for logging is correct +conf.tz = pytz.timezone(get_setting_value('TIMEZONE')) + +# Make sure log level is initialized correctly +Logger(get_setting_value('LOG_LEVEL')) + +pluginName = 'OMDSDNOPENAPI' + +# Define the current path and log file paths +LOG_PATH = logPath + '/plugins' +LOG_FILE = os.path.join(LOG_PATH, f'script.{pluginName}.log') +RESULT_FILE = os.path.join(LOG_PATH, f'last_result.{pluginName}.log') + +# Disable insecure request warning +urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + + +class OmadaHelper: + @staticmethod + def log(message: str, level: Literal["minimal", "verbose", "debug", "trace"] = "minimal") -> None: + mylog(level, [f"[{pluginName}] {message}"]) + + @staticmethod + def debug(message: str) -> None: + return OmadaHelper.log(message, "debug") + + @staticmethod + def verbose(message: str) -> None: + return OmadaHelper.log(message, "verbose") + + @staticmethod + def minimal(message: str) -> None: + return OmadaHelper.log(message, "minimal") + + @staticmethod + def response(response_type: str, response_message: str, response_result: Any = None) -> Dict[str, Any]: + return {"response_type": response_type, "response_message": response_message, + "response_result": response_result} + + @staticmethod + def timestamp_to_datetime(ms: int, timezone: str) -> Dict[str, Any]: + """Returns datetime from millisecond timestamp with required timezone.""" + try: + if not ms or not isinstance(ms, (str, int)): + raise ValueError(f"Value '{ms}' is not a valid timestamp") + + timestamp = ms / 1000 + tz = pytz.timezone("UTC") + utc_datetime = datetime.fromtimestamp(timestamp, tz=tz) + target_timezone = pytz.timezone(timezone) + local_datetime = utc_datetime.astimezone(target_timezone) + result = local_datetime.strftime("%Y-%m-%d %H:%M:%S") + + msg = f"Converted timestamp {ms} to datetime {result} with timezone {timezone}" + OmadaHelper.debug(msg) + return OmadaHelper.response("success", msg, result) + except pytz.UnknownTimeZoneError: + msg = f"Failed to convert timestamp - unknown timezone: {timezone}" + OmadaHelper.verbose(msg) + return OmadaHelper.response("error", msg) + except Exception as ex: + msg = f"Failed to convert timestamp - error: {str(ex)}" + OmadaHelper.verbose(msg) + return OmadaHelper.response("error", msg) + + @staticmethod + def normalize_mac(mac: str) -> Dict[str, Any]: + """Returns a normalized version of MAC address.""" + try: + if not mac or not isinstance(mac, str) or mac is None: + raise Exception(f"Value '{mac}' is not a valid MAC address") + + result = mac.lower().replace("-", ":") + msg = f"Normalized MAC address from {mac} to {result}" + OmadaHelper.debug(msg) + return OmadaHelper.response("success", msg, result) + except Exception as ex: + msg = f"Failed to normalize MAC address '{mac}' - error: {str(ex)}" + OmadaHelper.verbose(msg) + return OmadaHelper.response("error", msg) + + @staticmethod + def normalize_data(input_data: list, input_type: str, site_name: str, timezone: str) -> Dict[str, Any]: + """Returns a normalized dictionary of input data (clients, devices).""" + try: + if not isinstance(input_data, list): + raise Exception(f"Expected a list, but got '{type(input_data)}'.") + + OmadaHelper.verbose(f"Starting normalization of {len(input_data)} {input_type}(s) from site {site_name}") + default_entry = { + "mac_address": "", + "ip_address": "", + "name": "", + "last_seen": "", + "site_name": site_name, + "parent_node_mac_address": "", + "parent_node_port": "", + "parent_node_ssid": "", + "vlan_id": "", + } + + result = [] + for data in input_data: + + mac = OmadaHelper.normalize_mac(data.get("mac")) + if not isinstance(mac, dict) or mac.get("response_type") != "success": + continue + mac = mac.get("response_result") + + if not is_mac(mac): + OmadaHelper.debug(f"Skipping {input_type}, not a MAC address: {mac}") + continue + + entry = default_entry.copy() + entry["mac_address"] = mac + entry["ip_address"] = data.get("ip", "") + entry["name"] = data.get("name", "") + + last_seen = OmadaHelper.timestamp_to_datetime(data.get("lastSeen", 0), timezone) + entry["last_seen"] = last_seen.get("response_result") if isinstance(last_seen, dict) and last_seen.get( + "response_type") == "success" else "" + + if input_type == "device": + entry["device_type"] = data.get("type") + if data.get("type", "") != "gateway": + parent_mac = OmadaHelper.normalize_mac(data.get("uplinkDeviceMac")) + parent_mac = parent_mac.get("response_result") if isinstance(parent_mac, + dict) and parent_mac.get( + "response_type") == "success" else "" + entry["parent_node_mac_address"] = parent_mac + + if input_type == "client": + entry["vlan_id"] = data.get("vid") + entry["device_type"] = data.get("deviceType") + if data.get("connectDevType", "") == "gateway": + parent_mac = OmadaHelper.normalize_mac(data.get("gatewayMac")) + entry["parent_node_mac_address"] = parent_mac.get("response_result") if isinstance(parent_mac, + dict) and parent_mac.get( + "response_type") == "success" else "" + entry["parent_node_port"] = data.get("port", "") + elif data.get("connectDevType", "") == "switch": + parent_mac = OmadaHelper.normalize_mac(data.get("switchMac")) + entry["parent_node_mac_address"] = parent_mac.get("response_result") if isinstance(parent_mac, + dict) and parent_mac.get( + "response_type") == "success" else "" + entry["parent_node_port"] = data.get("port", "") + elif data.get("connectDevType", "") == "ap": + parent_mac = OmadaHelper.normalize_mac(data.get("apMac")) + entry["parent_node_mac_address"] = parent_mac.get("response_result") if isinstance(parent_mac, + dict) and parent_mac.get( + "response_type") == "success" else "" + entry["parent_node_ssid"] = data.get("ssid", "") + + result.append(entry) + OmadaHelper.debug(f"Processed {input_type} entry: {entry}") + + msg = f"Successfully normalized {len(result)} {input_type}(s) from site: {site_name}" + OmadaHelper.verbose(msg) + final_result = OmadaHelper.response("success", msg, result) + except Exception as ex: + msg = f"Failed normalizing {input_type}(s) from site '{site_name}' - error: {str(ex)}" + OmadaHelper.verbose(msg) + final_result = OmadaHelper.response("error", msg) + + return final_result + + +class OmadaAPI: + def __init__(self, options: dict): + OmadaHelper.debug("Initializing OmadaAPI with provided options") + + # Define parameters: required, optional, and default values + params = { + "host": {"type": str, "required": True}, + "omada_id": {"type": str, "required": True}, + "client_id": {"type": str, "required": True}, + "client_secret": {"type": str, "required": True}, + "verify_ssl": {"type": bool, "required": False, "default": True}, + "page_size": {"type": int, "required": False, "default": 1000}, + "sites": {"type": list, "required": False, "default": []} + } + + # Validate and set attributes + for param_name, param_info in params.items(): + value = options.get(param_name, param_info.get("default")) + + if param_info["required"] and (value is None or (param_info["type"] == str and not value)): + raise ValueError(f"{param_name} is required and must be a non-empty {param_info['type'].__name__}") + + if not isinstance(value, param_info["type"]): + raise TypeError(f"{param_name} must be of type {param_info['type'].__name__}") + + setattr(self, param_name, value) + OmadaHelper.debug(f"Initialized option '{param_name}' with value: {value}") + + # Other parameters + self.available_sites_dict = {} + self.active_sites_dict = {} + self.access_token = None + self.refresh_token = None + + OmadaHelper.verbose("OmadaAPI initialized") + + def _get_headers(self, include_auth: bool = True) -> dict: + """Return request headers.""" + headers = {"Content-type": "application/json"} + if include_auth == True: + if not self.access_token: + OmadaHelper.debug("No access token available for headers") + else: + headers["Authorization"] = f"AccessToken={self.access_token}" + OmadaHelper.debug(f"Generated headers: {headers}") + return headers + + def _make_request(self, method: str, endpoint: str, **kwargs: Any) -> Dict[str, Any]: + time.sleep(1) # Sleep before making any request so it does not rate-limited + OmadaHelper.verbose(f"{method} request to endpoint: {endpoint}") + url = f"{getattr(self, 'host')}{endpoint}" + headers = self._get_headers(kwargs.pop('include_auth', True)) + try: + response = requests.request(method, url, headers=headers, verify=getattr(self, 'verify_ssl'), **kwargs) + response.raise_for_status() + data = response.json() + response_type = "error" if data.get("errorCode", 0) != 0 else "success" + msg = f"{method} request completed: {endpoint}" + OmadaHelper.minimal(msg) + return OmadaHelper.response(response_type, msg, data) + except requests.exceptions.RequestException as ex: + msg = f"{method} request failed: {str(ex)}" + OmadaHelper.minimal(f"{method} request to {endpoint} failed") + OmadaHelper.verbose(msg) + return OmadaHelper.response("error", msg) + + def authenticate(self) -> Dict[str, any]: + """Make an endpoint request to get access token.""" + OmadaHelper.verbose("Starting authentication process") + endpoint = "/openapi/authorize/token?grant_type=client_credentials" + payload = { + "omadacId": getattr(self, 'omada_id'), + "client_id": getattr(self, 'client_id'), + "client_secret": getattr(self, 'client_secret') + } + + response = self._make_request("POST", endpoint, json=payload, include_auth=False) + if response["response_type"] == "success": + token_data = response["response_result"] + if token_data.get("errorCode") == 0: + self.access_token = token_data["result"]["accessToken"] + self.refresh_token = token_data["result"]["refreshToken"] + OmadaHelper.minimal("Authentication successful") + return OmadaHelper.response("success", "Authenticated successfully") + + OmadaHelper.minimal("Authentication failed") + OmadaHelper.debug(f"Authentication response: {response}") + return OmadaHelper.response("error", + f"Authentication failed - error: {response.get('response_result').get('msg')}") + + def get_clients(self, site_id: str) -> Dict[str, Any]: + """Make an endpoint request to get all online clients on a site.""" + OmadaHelper.verbose(f"Retrieving clients for site: {site_id}") + endpoint = f"/openapi/v1/{getattr(self, 'omada_id')}/sites/{site_id}/clients?page=1&pageSize={getattr(self, 'page_size')}" + return self._make_request("GET", endpoint) + + def get_devices(self, site_id: str) -> Dict[str, Any]: + """Make an endpoint request to get all online devices on a site.""" + OmadaHelper.verbose(f"Retrieving devices for site: {site_id}") + endpoint = f"/openapi/v1/{getattr(self, 'omada_id')}/sites/{site_id}/devices?page=1&pageSize={getattr(self, 'page_size')}" + return self._make_request("GET", endpoint) + + def get_sites(self) -> Dict[str, Any]: + """Make an endpoint request to populate all accesible sites.""" + OmadaHelper.verbose("Retrieving all accessible sites") + endpoint = f"/openapi/v1/{getattr(self, 'omada_id')}/sites?page=1&pageSize={getattr(self, 'page_size')}" + return self._make_request("GET", endpoint) + + def populate_sites(self) -> Dict[str, Any]: + """Make an endpoint request to populate sites.""" + try: + OmadaHelper.verbose("Starting site population process") + + # All allowed sites for credentials + all_sites = self.get_sites()["response_result"].get("result").get("data", []) + OmadaHelper.debug(f"Retrieved {len(all_sites)} sites in total") + + # All available sites + self.available_sites_dict = {site["siteId"]: site["name"] for site in all_sites} + OmadaHelper.debug(f"Available sites: {self.available_sites_dict}") + + # All valid sites from input + active_sites_by_id = {site["siteId"]: site["name"] for site in all_sites if + site["siteId"] in self.requested_sites()} + active_sites_by_name = {site["siteId"]: site["name"] for site in all_sites if + site["name"] in self.requested_sites()} + self.active_sites_dict = active_sites_by_id | active_sites_by_name + OmadaHelper.debug(f"Active sites after filtering: {self.active_sites_dict}") + + # If none of the input sites is valid/accessible, default to the first available site + if not self.active_sites_dict: + OmadaHelper.verbose( + "No valid site requested by configuration options, defaulting to first available site") + first_available_site = next(iter(self.available_sites_dict.items()), (None, None)) + if first_available_site[0]: # Check if there's an available site + self.active_sites_dict = {first_available_site[0]: first_available_site[1]} + OmadaHelper.debug(f"Using first available site: {first_available_site}") + + msg = f"Populated {len(self.active_sites_dict)} active sites" + OmadaHelper.verbose(msg) + result = OmadaHelper.response("success", msg) + except Exception as ex: + OmadaHelper.minimal("Failed to populate sites") + msg = f"Site population error: {str(ex)}" + OmadaHelper.verbose(msg) + result = OmadaHelper.response("error", msg) + + return result + + def requested_sites(self) -> list: + """Returns sites requested by user.""" + return getattr(self, 'sites') + + def available_sites(self) -> dict: + """Returns all available sites.""" + return self.available_sites_dict + + def active_sites(self) -> dict: + """Returns the sites the code will use.""" + return self.active_sites_dict + + +def make_entries(plugin_objects: Plugin_Objects, normalized_input_data: dict) -> None: + if normalized_input_data.get("response_type", "error") != "success": + OmadaHelper.minimal( + f"Unable to make entries - error: {normalized_input_data.get('response_message', 'Not provided.')}") + return + + response_result = normalized_input_data.get("response_result", {}) + for entry in response_result: + OmadaHelper.verbose(f"Making entry for: {entry['mac_address']}") + + parent_node = entry["parent_node_mac_address"] + if len(parent_node) == 0 and entry["device_type"] == "gateway" and is_typical_router_ip(entry["ip_address"]): + parent_node = "Internet" + + device_type = entry["device_type"].lower() + if device_type == "iphone": + device_type = "iPhone" + elif device_type == "pc": + device_type = "PC" + else: + device_type = device_type.capitalize() + + plugin_objects.add_object( + primaryId=entry["mac_address"], + secondaryId=entry["ip_address"], + watched1=entry["name"], + watched2=parent_node, + watched3=entry["parent_node_port"], + watched4=entry["parent_node_ssid"], + extra=device_type, + foreignKey=entry["mac_address"], + helpVal1=entry["last_seen"], + helpVal2=entry["site_name"], + helpVal3=entry["vlan_id"], + helpVal4="null" + ) + + +def get_entries(plugin_objects: Plugin_Objects) -> Plugin_Objects: + OmadaHelper.minimal("Starting data collection process") + omada_api = OmadaAPI(OPTIONS) + + auth_result = omada_api.authenticate() + if auth_result["response_type"] == "error": + OmadaHelper.minimal("Authentication failed, aborting data collection") + OmadaHelper.debug(f"Authentication error - {auth_result['response_message']}") + return plugin_objects + + sites_result = omada_api.populate_sites() + if sites_result["response_type"] == "error": + OmadaHelper.minimal("Site population failed, aborting data collection") + OmadaHelper.debug(f"Site population error - {auth_result['response_message']}") + return plugin_objects + + requested_sites = omada_api.requested_sites() + available_sites = omada_api.available_sites() + active_sites = omada_api.active_sites() + + OmadaHelper.verbose(f"Requested sites: {requested_sites}") + OmadaHelper.verbose(f"Available sites: {available_sites}") + OmadaHelper.minimal(f"Active sites: {active_sites}") + + for site_id, site_name in active_sites.items(): + OmadaHelper.verbose(f"Processing site: {site_name} ({site_id})") + + devices_response = omada_api.get_devices(site_id) + if devices_response["response_type"] == "error": + OmadaHelper.minimal(f"Failed to retrieve devices for site: {site_name}") + else: + devices = devices_response["response_result"].get("result").get("data", []) + OmadaHelper.debug(f"Retrieved {len(devices)} device(s) from site: {site_name}") + devices = OmadaHelper.normalize_data(devices, "device", site_name, TIMEZONE) + make_entries(plugin_objects, devices) + + clients_response = omada_api.get_clients(site_id) + if clients_response["response_type"] == "error": + OmadaHelper.minimal(f"Failed to retrieve clients for site {site_name}") + else: + clients = clients_response["response_result"].get("result").get("data", []) + OmadaHelper.debug(f"Retrieved {len(clients)} client(s) from site: {site_name}") + clients = OmadaHelper.normalize_data(clients, "client", site_name, TIMEZONE) + make_entries(plugin_objects, clients) + + OmadaHelper.verbose(f"Site complete: {site_name} ({site_id})") + + OmadaHelper.minimal("Data collection process completed") + return plugin_objects + + +def main(): + start_time = time.time() + OmadaHelper.minimal("Starting execution") + + # Initialize the Plugin object output file + plugin_objects = Plugin_Objects(RESULT_FILE) + + # Retrieve options + global OPTIONS, TIMEZONE + TIMEZONE = get_setting_value("TIMEZONE") + OPTIONS = { + "host": get_setting_value(f"{pluginName}_host").strip(), + "client_id": get_setting_value(f"{pluginName}_client_id").strip(), + "client_secret": get_setting_value(f"{pluginName}_client_secret").strip(), + "omada_id": get_setting_value(f"{pluginName}_omada_id").strip(), + "sites": get_setting_value(f"{pluginName}_sites"), + "verify_ssl": get_setting_value(f"{pluginName}_verify_ssl") + } + OmadaHelper.verbose("Configuration options loaded") + + # Retrieve entries + plugin_objects = get_entries(plugin_objects) + plugin_objects.write_result_file() + + # Finish + OmadaHelper.minimal(f"Execution completed in {time.time() - start_time:.2f}s, found {len(plugin_objects)} devices and clients") + + +if __name__ == '__main__': + main()