add tags to csv

Signed-off-by: Simon Smith <simonsmith5521@gmail.com>

Simon Smith committed Oct 6, 2023 at 09:31 UTC 4702926773e9e3650a7767e3226dfd882e5b767b
2 files changed +19 -4
meshuser.js
+11 -3
@@ -4928,7 +4928,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4928 if (type == 'csv') {
4929 try {
4930 // Create the CSV file
4931 - 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';
4931 + 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';
4932 for (var i = 0; i < results.length; i++) {
4933 const nodeinfo = results[i];
4934
@@ -4950,10 +4950,18 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4950 var avdetails = '', firstav = true;
4951 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')); } }
4952 output += ',' + csvClean(avdetails);
4953 + } else {
4954 + output += ',';
4955 + }
4956 + if (typeof n.tags == 'object') {
4957 + var tagsdetails = '', firsttags = true;
4958 + for (var a in n.tags) { if (firsttags) { firsttags = false; } else { tagsdetails += '|'; } tagsdetails += n.tags[a]; }
4959 + output += ',' + csvClean(tagsdetails);
4960 + } else {
4961 + output += ',';
4962 }
4954 - else { output += ','; }
4963 } else {
4956 - output += ',,,,,,,,,,,,';
4964 + output += ',,,,,,,,,,,,,';
4965 }
4966
4967 // System infomation
views/default.handlebars
+8 -1
@@ -5763,7 +5763,7 @@
5763 meshserver.send({ action: 'getDeviceDetails', nodeids: chkNodeIds, tz: tz, tf: new Date().getTimezoneOffset(), l: getLang(), type: 'csv' }); // With details
5764 } else {
5765 // Without details
5766 - var csv = "id,name,rname,host,icon,ip,osdesc,state,groupname,conn,pwr,av,update,firewall,bitlocker,avdetails" + '\r\n', r = [];
5766 + var csv = "id,name,rname,host,icon,ip,osdesc,state,groupname,conn,pwr,av,update,firewall,bitlocker,avdetails,tags" + '\r\n', r = [];
5767 for (var i in chkNodeIds) {
5768 var n = getNodeFromId(chkNodeIds[i]);
5769 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 @@
5782 else {
5783 csv += ',';
5784 }
5785 + if (typeof n.tags == 'object') {
5786 + var tagsdetails = '', firsttags = true;
5787 + for (var a in n.tags) { if (firsttags) { firsttags = false; } else { tagsdetails += '|'; } tagsdetails += n.tags[a]; }
5788 + csv += ',"' + csvClean(tagsdetails) + '"'; }
5789 + else {
5790 + csv += ',';
5791 + }
5792 csv += '\r\n';
5793 }
5794 saveAs(stringToUtf8Blob(csv), "devicelist.csv");