etpro-telemetry: replace subprocess.call for https://github.com/opnsense/core/issues/3574

This commit is contained in:
Ad Schellevis
2019-10-07 20:09:12 +02:00
parent c3328e60c0
commit 79cbb1b0b5
2 changed files with 17 additions and 18 deletions
+1
View File
@@ -1,5 +1,6 @@
PLUGIN_NAME= etpro-telemetry
PLUGIN_VERSION= 1.4
PLUGIN_REVISION= 1
PLUGIN_COMMENT= ET Pro Telemetry Edition
PLUGIN_MAINTAINER= ad@opnsense.org
PLUGIN_WWW= https://docs.opnsense.org/manual/etpro_telemetry.html
@@ -113,24 +113,22 @@ class EventCollector:
except netaddr.core.AddrFormatError:
pass
with tempfile.NamedTemporaryFile() as output_stream:
subprocess.call(['ifconfig', '-a'], stdout=output_stream, stderr=open(os.devnull, 'wb'))
output_stream.seek(0)
for line in output_stream:
if line.startswith(b'\tinet'):
parts = line.split()
if len(parts) > 3:
if parts[0] == 'inet6' and parts[2] == 'prefixlen':
# IPv6 addresses
self._local_networks.append(
netaddr.IPNetwork("%s/%s" % (parts[1].split('%')[0], parts[3]))
)
elif parts[0] == 'inet' and len(parts) > 3 and parts[2] == 'netmask':
# IPv4 addresses
mask = int(parts[3], 16)
self._local_networks.append(
netaddr.IPNetwork("%s/%s" % (netaddr.IPAddress(parts[1]), netaddr.IPAddress(mask)))
)
sp = subprocess.run(['ifconfig', '-a'], capture_output=True, text=True)
for line in sp.stdout.split('\n'):
if line.startswith('\tinet'):
parts = line.split()
if len(parts) > 3:
if parts[0] == 'inet6' and parts[2] == 'prefixlen':
# IPv6 addresses
self._local_networks.append(
netaddr.IPNetwork("%s/%s" % (parts[1].split('%')[0], parts[3]))
)
elif parts[0] == 'inet' and len(parts) > 3 and parts[2] == 'netmask':
# IPv4 addresses
mask = int(parts[3], 16)
self._local_networks.append(
netaddr.IPNetwork("%s/%s" % (netaddr.IPAddress(parts[1]), netaddr.IPAddress(mask)))
)
def is_local_address(self, address):
""" check if provided address is local for this device