summaryrefslogtreecommitdiff
path: root/utils/networkUsage.js
blob: a7131f2811cf19763ca7f3221afe9fa5dfb7719a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function defaultInterface(route) {
	var lines = route.split(/\r?\n/)
	for (var i = 0; i < lines.length; i++) {
		var l = lines[i]
		if (l.indexOf("default via") === 0) return l.split(/\s+/)[4]
	}
	throw "No default interface"
}
function getRxTxBytes(dev, iface) {
	var lines = dev.split(/\r?\n/)
	for (var i = 0; i < lines.length; i++) {
		var l = lines[i].trim()
		if (!l.startsWith(iface + ":")) continue
		var p = l.split(/\s+/)
		return { rx: parseInt(p[1]), tx: parseInt(p[9]) }
	}
	throw "Interface not found"
}
function formatSize(size, unit) {
	const labels = ["B", "K", "M", "G", "T"]
	let power = 0, kilo = 2 ** 10
	while (size > kilo && power < labels.length - 1) {
		size /= kilo; power++
	}
	if (unit) {
		return labels[power]
	} else {
		return size.toFixed(0)
	}
}

// const iface = defaultInterface()
// let prev = getRxTxBytes(iface)

// setInterval(() => {
// 	const cur = getRxTxBytes(iface)
// 	const dr = (cur.rx - prev.rx) / (interval / 1000)
// 	const dt = (cur.tx - prev.tx) / (interval / 1000)
// 	prev = cur
// 	console.log(formatSize(dr), formatSize(dt))
// }, interval)