summaryrefslogtreecommitdiffstats
path: root/glances/plugins/ip
diff options
context:
space:
mode:
Diffstat (limited to 'glances/plugins/ip')
-rw-r--r--glances/plugins/ip/__init__.py49
1 files changed, 25 insertions, 24 deletions
diff --git a/glances/plugins/ip/__init__.py b/glances/plugins/ip/__init__.py
index 449f01d4..62a95658 100644
--- a/glances/plugins/ip/__init__.py
+++ b/glances/plugins/ip/__init__.py
@@ -1,8 +1,7 @@
-# -*- coding: utf-8 -*-
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2022 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
@@ -10,20 +9,20 @@
"""IP plugin."""
import threading
-from ujson import loads
-from glances.globals import urlopen, queue, urlopen_auth
+from orjson import loads
+
+from glances.globals import queue, urlopen_auth
from glances.logger import logger
-from glances.timer import Timer
-from glances.timer import getTimeSinceLastUpdate
from glances.plugins.plugin.model import GlancesPluginModel
+from glances.timer import Timer, getTimeSinceLastUpdate
# Import plugin specific dependency
try:
import netifaces
except ImportError as e:
import_error_tag = True
- logger.warning("Missing Python Lib ({}), IP plugin is disabled".format(e))
+ logger.warning(f"Missing Python Lib ({e}), IP plugin is disabled")
else:
import_error_tag = False
@@ -66,10 +65,7 @@ class PluginModel(GlancesPluginModel):
def __init__(self, args=None, config=None):
"""Init the plugin."""
- super(PluginModel, self).__init__(
- args=args, config=config,
- fields_description=fields_description
- )
+ super().__init__(args=args, config=config, fields_description=fields_description)
# We want to display the stat in the curse interface
self.display_curse = True
@@ -83,8 +79,9 @@ class PluginModel(GlancesPluginModel):
self.public_field = self.get_conf_value("public_field", default=[None])
self.public_template = self.get_conf_value("public_template", default=[None])[0]
self.public_disabled = (
- self.get_conf_value('public_disabled', default='False')[0].lower() != 'false' or
- self.public_api is None or self.public_field is None
+ self.get_conf_value('public_disabled', default='False')[0].lower() != 'false'
+ or self.public_api is None
+ or self.public_field is None
)
self.public_address_refresh_interval = self.get_conf_value(
"public_refresh_interval", default=self._default_public_refresh_interval
@@ -106,7 +103,7 @@ class PluginModel(GlancesPluginModel):
try:
default_gw = netifaces.gateways()['default'][netifaces.AF_INET]
except (KeyError, AttributeError) as e:
- logger.debug("Cannot grab default gateway IP address ({})".format(e))
+ logger.debug(f"Cannot grab default gateway IP address ({e})")
return self.get_init_value()
else:
stats['gateway'] = default_gw[0]
@@ -115,7 +112,7 @@ class PluginModel(GlancesPluginModel):
address = netifaces.ifaddresses(default_gw[1])[netifaces.AF_INET][0]['addr']
mask = netifaces.ifaddresses(default_gw[1])[netifaces.AF_INET][0]['netmask']
except (KeyError, AttributeError) as e:
- logger.debug("Cannot grab private IP address ({})".format(e))
+ logger.debug(f"Cannot grab private IP address ({e})")
return self.get_init_value()
else:
stats['address'] = address
@@ -128,14 +125,14 @@ class PluginModel(GlancesPluginModel):
if not self.public_disabled and (
self.public_address == "" or time_since_update > self.public_address_refresh_interval
):
- self.public_info = PublicIpInfo(
- self.public_api, self.public_username, self.public_password
- ).get()
+ self.public_info = PublicIpInfo(self.public_api, self.public_username, self.public_password).get()
self.public_address = self.public_info['ip']
- except (KeyError, AttributeError) as e:
- logger.debug("Cannot grab public IP information ({})".format(e))
+ except (KeyError, AttributeError, TypeError) as e:
+ logger.debug(f"Cannot grab public IP information ({e})")
else:
- stats['public_address'] = self.public_address
+ stats['public_address'] = (
+ self.public_address if not self.args.hide_public_info else self.__hide_ip(self.public_address)
+ )
stats['public_info_human'] = self.public_info_for_human(self.public_info)
elif self.input_method == 'snmp':
@@ -147,6 +144,10 @@ class PluginModel(GlancesPluginModel):
return self.stats
+ def __hide_ip(self, ip):
+ """Hide last to digit of the given IP address"""
+ return '.'.join(ip.split('.')[0:2]) + '.*.*'
+
def msg_curse(self, args=None, max_width=None):
"""Return the dict to display in the curse interface."""
# Init the return message
@@ -209,7 +210,7 @@ class PluginModel(GlancesPluginModel):
return sum(bin(int(x)).count('1') for x in ip.split('.'))
-class PublicIpInfo(object):
+class PublicIpInfo:
"""Get public IP information from online service."""
def __init__(self, url, username, password, timeout=2):
@@ -240,11 +241,11 @@ class PublicIpInfo(object):
try:
response = urlopen_auth(url, username, password).read()
except Exception as e:
- logger.debug("IP plugin - Cannot get public IP information from {} ({})".format(url, e))
+ logger.debug(f"IP plugin - Cannot get public IP information from {url} ({e})")
queue_target.put(None)
else:
try:
queue_target.put(loads(response))
except (ValueError, KeyError) as e:
- logger.debug("IP plugin - Cannot load public IP information from {} ({})".format(url, e))
+ logger.debug(f"IP plugin - Cannot load public IP information from {url} ({e})")
queue_target.put(None)