From 4702926773e9e3650a7767e3226dfd882e5b767b Mon Sep 17 00:00:00 2001 From: Simon Smith Date: Fri, 6 Oct 2023 09:31:45 +0000 Subject: [PATCH] add tags to csv Signed-off-by: Simon Smith --- meshuser.js | 14 +++++++++++--- views/default.handlebars | 9 ++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/meshuser.js b/meshuser.js index cdbbdb97..237fe1b7 100644 --- a/meshuser.js +++ b/meshuser.js @@ -4928,7 +4928,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use if (type == 'csv') { try { // Create the CSV file - output = 'id,name,rname,host,icon,ip,osdesc,groupname,av,update,firewall,bitlocker,avdetails,cpu,osbuild,biosDate,biosVendor,biosVersion,boardName,boardVendor,boardVersion,productUuid,totalMemory,agentOpenSSL,agentCommitDate,agentCommitHash,agentCompileTime,netIfCount,macs,addresses,lastConnectTime,lastConnectAddr\r\n'; + output = 'id,name,rname,host,icon,ip,osdesc,groupname,av,update,firewall,bitlocker,avdetails,tags,cpu,osbuild,biosDate,biosVendor,biosVersion,boardName,boardVendor,boardVersion,productUuid,totalMemory,agentOpenSSL,agentCommitDate,agentCommitHash,agentCompileTime,netIfCount,macs,addresses,lastConnectTime,lastConnectAddr\r\n'; for (var i = 0; i < results.length; i++) { const nodeinfo = results[i]; @@ -4950,10 +4950,18 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use var avdetails = '', firstav = true; for (var a in n.av) { if (typeof n.av[a].product == 'string') { if (firstav) { firstav = false; } else { avdetails += '|'; } avdetails += (n.av[a].product + '/' + ((n.av[a].enabled) ? 'enabled' : 'disabled') + '/' + ((n.av[a].updated) ? 'updated' : 'notupdated')); } } output += ',' + csvClean(avdetails); + } else { + output += ','; + } + if (typeof n.tags == 'object') { + var tagsdetails = '', firsttags = true; + for (var a in n.tags) { if (firsttags) { firsttags = false; } else { tagsdetails += '|'; } tagsdetails += n.tags[a]; } + output += ',' + csvClean(tagsdetails); + } else { + output += ','; } - else { output += ','; } } else { - output += ',,,,,,,,,,,,'; + output += ',,,,,,,,,,,,,'; } // System infomation diff --git a/views/default.handlebars b/views/default.handlebars index 6e4ac0b0..bc827f71 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -5763,7 +5763,7 @@ meshserver.send({ action: 'getDeviceDetails', nodeids: chkNodeIds, tz: tz, tf: new Date().getTimezoneOffset(), l: getLang(), type: 'csv' }); // With details } else { // Without details - var csv = "id,name,rname,host,icon,ip,osdesc,state,groupname,conn,pwr,av,update,firewall,bitlocker,avdetails" + '\r\n', r = []; + var csv = "id,name,rname,host,icon,ip,osdesc,state,groupname,conn,pwr,av,update,firewall,bitlocker,avdetails,tags" + '\r\n', r = []; for (var i in chkNodeIds) { var n = getNodeFromId(chkNodeIds[i]); csv += '"' + n._id.split(',').join('') + '","' + n.name.split(',').join('') + '","' + (n.rname?(n.rname.split(',').join('')):'') + '","' + (n.host?(n.host.split(',').join('')):'') + '","' + n.icon + '","' + (n.ip?n.ip:'') + '","' + (n.osdesc?(n.osdesc.split(',').join('')):'') + '","' + n.state + '","' + meshes[n.meshid].name.split(',').join('') + '","' + (n.conn?n.conn:'') + '","' + (n.pwr?n.pwr:'') + '"'; @@ -5782,6 +5782,13 @@ else { csv += ','; } + if (typeof n.tags == 'object') { + var tagsdetails = '', firsttags = true; + for (var a in n.tags) { if (firsttags) { firsttags = false; } else { tagsdetails += '|'; } tagsdetails += n.tags[a]; } + csv += ',"' + csvClean(tagsdetails) + '"'; } + else { + csv += ','; + } csv += '\r\n'; } saveAs(stringToUtf8Blob(csv), "devicelist.csv");