{value}
diff --git a/src/pages/api/widgets/resources.js b/src/pages/api/widgets/resources.js
index 92495d93..78dc8a60 100644
--- a/src/pages/api/widgets/resources.js
+++ b/src/pages/api/widgets/resources.js
@@ -4,6 +4,7 @@ const si = require("systeminformation");
export default async function handler(req, res) {
const { type, target } = req.query;
+ let { interfaceName } = req.query;
if (type === "cpu") {
const load = await si.currentLoad();
@@ -48,6 +49,31 @@ export default async function handler(req, res) {
});
}
+ if (type === "network"){
+ let networkData = await si.networkStats();
+ if(interfaceName !== "default" && interfaceName !== undefined && interfaceName !== "false"){
+ networkData = networkData.filter((network) => network.iface === interfaceName)['0'];
+ if(!networkData){
+ return res.status(404).json({
+ error: "Interface not found",
+ });
+ }
+ }else{
+ const interfaceDefault = await si.networkInterfaceDefault();
+ interfaceName = interfaceDefault
+ networkData = networkData.filter((network) => network.iface === interfaceDefault)['0'];
+ if(!networkData){
+ return res.status(404).json({
+ error: "Interface not found! Please specify a valid interface name.",
+ });
+ }
+ }
+ return res.status(200).json({
+ network: networkData,
+ interface: interfaceName
+ });
+ }
+
return res.status(400).json({
error: "invalid type",
});
diff --git a/src/skeleton/widgets.yaml b/src/skeleton/widgets.yaml
index d0a7c2f6..bbc6ef03 100644
--- a/src/skeleton/widgets.yaml
+++ b/src/skeleton/widgets.yaml
@@ -6,6 +6,7 @@
cpu: true
memory: true
disk: /
+ network: default # options: 'default' or active network interface name
- search:
provider: duckduckgo