summaryrefslogtreecommitdiff
path: root/utils/networkUsage.js
diff options
context:
space:
mode:
Diffstat (limited to 'utils/networkUsage.js')
-rw-r--r--utils/networkUsage.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/utils/networkUsage.js b/utils/networkUsage.js
new file mode 100644
index 0000000..a7131f2
--- /dev/null
+++ b/utils/networkUsage.js
@@ -0,0 +1,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)