malkemit / namizun

Asymmetric upload and download
https://t.me/ExplainLikeIam5
613 stars 99 forks source link

How to select the network interface? #81

Open Ali-Flt opened 11 months ago

Ali-Flt commented 11 months ago

Namizun is showing my network usage inaccurately because I believe it is showing the usage of all network interfaces whereas a lot of it is related to the virtual network interfaces such as the ones created by docker.

Can you add a feature to select which interface I want to monitor the network usage of?

Ali-Flt commented 11 months ago

I did this for a workaround. My network interface name is eno4. So I changed the network.py file to this:

from psutil import net_io_counters
from namizun_core import database

def _net_io_counters():
    return net_io_counters(pernic=True)['eno4']

def get_size(only_bytes):
    flag = ''
    if only_bytes < 0:
        flag = '-'
        only_bytes *= -1
    for unit in ['', 'K', 'M', 'G', 'T', 'P']:
        if only_bytes < 1024:
            return f"{flag}{only_bytes:.2f}{unit}B"
        only_bytes /= 1024

def get_network_io():
    io = _net_io_counters()
    return io.bytes_sent + database.get_parameter('upload_amount_synchronizer') \
        , io.bytes_recv + database.get_parameter('download_amount_synchronizer')

def get_system_network_io():
    io = _net_io_counters()
    return io.bytes_sent, io.bytes_recv

def get_system_upload():
    return _net_io_counters().bytes_sent

def get_system_download():
    return _net_io_counters().bytes_recv

Note that you may need to flush the redis DB afterwards.