From 67f6aeed2b40e1336c5c883b76486b2b41d4a17b Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Sat, 27 Apr 2024 19:14:39 +0200 Subject: [PATCH] py-netaddr - replace netaddr for standard ipaddress package in cases where it's not required to search the mac databases. closes https://github.com/opnsense/core/issues/7415 --- .../scripts/filter/find_table_references.py | 7 ++++--- src/opnsense/scripts/interfaces/traffic_top.py | 13 ++++++------- .../service/modules/addons/template_helpers.py | 5 ++--- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/opnsense/scripts/filter/find_table_references.py b/src/opnsense/scripts/filter/find_table_references.py index aaee2d6fb..0430c54c2 100755 --- a/src/opnsense/scripts/filter/find_table_references.py +++ b/src/opnsense/scripts/filter/find_table_references.py @@ -33,14 +33,15 @@ import subprocess import os import sys import ujson -from netaddr import IPAddress, AddrFormatError +import ipaddress + if __name__ == '__main__': # IP should have been passed as a command line argument if len(sys.argv) >= 1: try: - IPAddress(sys.argv[1]) + ipaddress.ip_address(sys.argv[1]) result = {'status': 'ok', 'matches': []} tables = [] @@ -56,7 +57,7 @@ if __name__ == '__main__': result['matches'].append(table) print(ujson.dumps(result)) - except AddrFormatError: + except ValueError: print(ujson.dumps({'status': 'Invalid IP specified!'})) else: diff --git a/src/opnsense/scripts/interfaces/traffic_top.py b/src/opnsense/scripts/interfaces/traffic_top.py index c1521aa98..9db2bde69 100755 --- a/src/opnsense/scripts/interfaces/traffic_top.py +++ b/src/opnsense/scripts/interfaces/traffic_top.py @@ -29,16 +29,15 @@ import argparse import asyncio import decimal +import ipaddress import subprocess import os import sys import math import ujson -import netaddr import dns.resolver from dns.asyncresolver import Resolver from concurrent.futures import ThreadPoolExecutor -from netaddr import IPNetwork, IPAddress, AddrFormatError def iftop(interface, target): @@ -57,11 +56,11 @@ def local_addresses(): for line in sp.stdout.split('\n'): if line.find('\tinet') > -1: try: - ip = IPAddress(line.split()[1].split('%')[0]) - except AddrFormatError: + ip = ipaddress.ip_address(line.split()[1].split('%')[0]) + except ValueError: ip = None - if ip and not ip.is_loopback() and not ip.is_link_local(): + if ip and not ip.is_loopback and not ip.is_link_local: result.append(ip) return result @@ -148,10 +147,10 @@ if __name__ == '__main__': } # attach tags (type of address) try: - ip = IPAddress(parts[0]) + ip = ipaddress.ip_address(parts[0]) if ip in all_local_addresses: item['tags'].append('local') - if not ip.is_global(): + if not ip.is_global: item['tags'].append('private') except subprocess.TimeoutExpired: pass diff --git a/src/opnsense/service/modules/addons/template_helpers.py b/src/opnsense/service/modules/addons/template_helpers.py index 9c0598bf4..c8eb65a9a 100644 --- a/src/opnsense/service/modules/addons/template_helpers.py +++ b/src/opnsense/service/modules/addons/template_helpers.py @@ -28,8 +28,7 @@ import os import datetime import glob import collections -import netaddr - +import ipaddress class SortKeyHelper: """ generate item key for sort function @@ -158,7 +157,7 @@ class Helpers(object): :param network: network :return: IPNetwork generated by netaddr """ - return netaddr.IPNetwork(network) + return ipaddress.ip_network(network, False) @staticmethod def getUtcTime():