From b4b15af88735044f299023594c367a1c03ffbe7c Mon Sep 17 00:00:00 2001 From: Jokob-sk Date: Fri, 5 May 2023 21:21:01 +1000 Subject: [PATCH] FIX SNMDSCV, NMAPSRV, UNFIDSCR bugs --- back/pialert.py | 2 +- front/plugins/nmap_services/config.json | 2 +- front/plugins/snmp_discovery/script.py | 7 ++++--- front/plugins/unifi_import/config.json | 22 +++++++++++++++++++++- front/plugins/unifi_import/script.py | 6 ++++-- 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/back/pialert.py b/back/pialert.py index 86eb1f1d..f18d2097 100755 --- a/back/pialert.py +++ b/back/pialert.py @@ -670,7 +670,7 @@ def main (): # If thread is still active if p.is_alive(): - print "DEBUG scan_network running too long - let's kill it" + print("DEBUG scan_network running too long - let\'s kill it") mylog('info', [' DEBUG scan_network running too long - let\'s kill it']) # Terminate - may not work if process is stuck for good diff --git a/front/plugins/nmap_services/config.json b/front/plugins/nmap_services/config.json index 66cd32a2..97464a10 100755 --- a/front/plugins/nmap_services/config.json +++ b/front/plugins/nmap_services/config.json @@ -220,7 +220,7 @@ { "function": "CMD", "type": "text", - "default_value":"SELECT dv.dev_Name as Object_PrimaryID, cast('http://' || dv.dev_LastIP as VARCHAR(100)) || ':' || cast( SUBSTR(ns.Port ,0, INSTR(ns.Port , '/')) as VARCHAR(100)) as Object_SecondaryID, datetime() as DateTime, ns.Service as Watched_Value1, ns.State as Watched_Value2, 'null' as Watched_Value3, 'null' as Watched_Value4, ns.Extra as Extra, dv.dev_MAC as ForeignKey FROM (SELECT * FROM Nmap_Scan) ns LEFT JOIN (SELECT dev_Name, dev_MAC, dev_LastIP FROM Devices) dv ON ns.MAC = dv.dev_MAC", + "default_value":"SELECT ns.MAC as Object_PrimaryID, cast('http://' || dv.dev_LastIP as VARCHAR(100)) || ':' || cast( SUBSTR(ns.Port ,0, INSTR(ns.Port , '/')) as VARCHAR(100)) as Object_SecondaryID, datetime() as DateTime, ns.Service as Watched_Value1, ns.State as Watched_Value2, dv.dev_Name as Watched_Value3, 'null' as Watched_Value4, ns.Extra as Extra, ns.MAC as ForeignKey FROM (SELECT * FROM Nmap_Scan) ns left JOIN (SELECT dev_Name, dev_MAC, dev_LastIP FROM Devices) dv ON ns.MAC = dv.dev_MAC", "options": [], "localized": ["name", "description"], "name" : [{ diff --git a/front/plugins/snmp_discovery/script.py b/front/plugins/snmp_discovery/script.py index 8a7446a9..ec7d748d 100755 --- a/front/plugins/snmp_discovery/script.py +++ b/front/plugins/snmp_discovery/script.py @@ -31,10 +31,11 @@ def main(): # init global variables global ROUTERS - last_run_logfile = open(last_run, 'a') - # empty file - last_run_logfile.write("") + open(last_run , 'w').close() + + last_run_logfile = open(last_run, 'a') + parser = argparse.ArgumentParser(description='This plugin is used to discover devices via the arp table(s) of a RFC1213 compliant router or switch.') diff --git a/front/plugins/unifi_import/config.json b/front/plugins/unifi_import/config.json index 876734ac..74d8cf76 100755 --- a/front/plugins/unifi_import/config.json +++ b/front/plugins/unifi_import/config.json @@ -47,6 +47,11 @@ "name" : "port", "type" : "setting", "value" : "UNFIMP_port" + }, + { + "name" : "version", + "type" : "setting", + "value" : "UNFIMP_version" } ], "database_column_definitions": @@ -257,7 +262,7 @@ { "function": "CMD", "type": "text", - "default_value":"python3 /home/pi/pialert/front/plugins/unifi_import/script.py username={username} password={password} host={host} sites={sites} protocol={protocol} port={port}", + "default_value":"python3 /home/pi/pialert/front/plugins/unifi_import/script.py username={username} password={password} host={host} sites={sites} protocol={protocol} port={port} version={version}", "options": [], "localized": ["name", "description"], "name" : [{ @@ -344,6 +349,21 @@ "string" : "The port number where the UNIFI controller is runnig. Usually it is 8443." }] }, + { + "function": "version", + "type": "text", + "default_value":"", + "options": [], + "localized": ["name", "description"], + "name" : [{ + "language_code":"en_us", + "string" : "API version" + }], + "description": [{ + "language_code":"en_us", + "string" : "The base version of the Unify controller API. Supported values as of time of writing are v4|v5|unifiOS|UDMP-unifiOS." + }] + }, { "function": "sites", "type": "list", diff --git a/front/plugins/unifi_import/script.py b/front/plugins/unifi_import/script.py index 1eb1c632..4bc9bc96 100755 --- a/front/plugins/unifi_import/script.py +++ b/front/plugins/unifi_import/script.py @@ -32,7 +32,7 @@ def main(): # init global variables global UNIFI_USERNAME, UNIFI_PASSWORD, UNIFI_HOST - global UNIFI_SITES, PORT, PROTOCOL + global UNIFI_SITES, PORT, PROTOCOL, VERSION last_run_logfile = open(last_run, 'a') @@ -47,6 +47,7 @@ def main(): parser.add_argument('sites', action="store", help="Name of the sites (usually 'default', check the URL in your UniFi controller UI). Separated by comma (,) if passing multiple sites") parser.add_argument('protocol', action="store", help="https:// or http://") parser.add_argument('port', action="store", help="Usually 8443") + parser.add_argument('version', action="store", help="The base version of the controller API [v4|v5|unifiOS|UDMP-unifiOS]") values = parser.parse_args() @@ -61,6 +62,7 @@ def main(): UNIFI_SITES = values.sites.split('=')[1] PROTOCOL = values.protocol.split('=')[1] PORT = values.port.split('=')[1] + VERSION = values.version.split('=')[1] newEntries = get_entries(newEntries) @@ -85,7 +87,7 @@ def get_entries(newEntries): for site in sites: - c = Controller(UNIFI_HOST, UNIFI_USERNAME, UNIFI_PASSWORD, ssl_verify=False, site_id=site ) + c = Controller(UNIFI_HOST, UNIFI_USERNAME, UNIFI_PASSWORD, version=VERSION, ssl_verify=False, site_id=site ) for ap in c.get_aps():