mirror of
https://github.com/billz/raspap-webgui.git
synced 2025-03-01 10:31:47 +00:00
initial install test
This commit is contained in:
68
api/modules/networking.py
Normal file
68
api/modules/networking.py
Normal file
@@ -0,0 +1,68 @@
|
||||
import psutil
|
||||
import json
|
||||
|
||||
def throughput():
|
||||
interface_info = {}
|
||||
|
||||
# Get network interfaces
|
||||
interfaces = psutil.net_if_stats()
|
||||
|
||||
for interface, stats in interfaces.items():
|
||||
if interface.startswith("lo") or interface.startswith("docker"):
|
||||
# Skip loopback and docker interface
|
||||
continue
|
||||
|
||||
try:
|
||||
# Get network traffic statistics
|
||||
traffic_stats = psutil.net_io_counters(pernic=True)[interface]
|
||||
rx_packets = traffic_stats[1]
|
||||
rx_bytes = traffic_stats[0]
|
||||
tx_packets = traffic_stats[3]
|
||||
tx_bytes = traffic_stats[4]
|
||||
|
||||
interface_info[interface] = {
|
||||
"RX_packets": rx_packets,
|
||||
"RX_bytes": rx_bytes,
|
||||
"TX_packets": tx_packets,
|
||||
"TX_bytes": tx_bytes
|
||||
}
|
||||
except KeyError:
|
||||
# Handle the case where network interface statistics are not available
|
||||
pass
|
||||
|
||||
return json.dumps(interface_info, indent=2)
|
||||
|
||||
def interfaces():
|
||||
interface_info = {}
|
||||
|
||||
# Get network interfaces
|
||||
interfaces = psutil.net_if_addrs()
|
||||
|
||||
for interface, addrs in interfaces.items():
|
||||
if interface.startswith("lo") or interface.startswith("docker"):
|
||||
# Skip loopback and docker interface
|
||||
continue
|
||||
|
||||
ip_address = None
|
||||
netmask = None
|
||||
mac_address = None
|
||||
|
||||
for addr in addrs:
|
||||
if addr.family == 2: # AF_INET corresponds to the integer value 2
|
||||
# IPv4 address
|
||||
ip_address = addr.address
|
||||
netmask = addr.netmask
|
||||
|
||||
# Get MAC address
|
||||
for addr in psutil.net_if_addrs().get(interface, []):
|
||||
if addr.family == psutil.AF_LINK:
|
||||
mac_address = addr.address
|
||||
|
||||
interface_info[interface] = {
|
||||
"IP_address": ip_address,
|
||||
"Netmask": netmask,
|
||||
"MAC_address": mac_address
|
||||
}
|
||||
return json.dumps(interface_info, indent=2)
|
||||
|
||||
#TODO: migrate to vnstat, to lose psutil dependency
|
||||
Reference in New Issue
Block a user