meshcentral
Version:
Web based remote computer management server
1 lines • 5.75 kB
JavaScript
var promise=require("promise");function qfe(){var a=require("child_process").execFile(process.env.windir+"\\System32\\wbem\\wmic.exe",["wmic","qfe","list","full","/FORMAT:CSV"]);a.stdout.str="";a.stdout.on("data",function(j){this.str+=j.toString()});a.stderr.str="";a.stderr.on("data",function(j){this.str+=j.toString()});a.waitExit();var e=a.stdout.str.trim().split("\r\n");var d=e[0].split(",");var b,c;var h;var g=[];for(b=1;b<e.length;++b){var f={};h=e[b].split(",");for(c=0;c<d.length;++c){if(h[c]){f[d[c]]=h[c]}}g.push(f)}return(g)}function av(){var a=require("child_process").execFile(process.env.windir+"\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",["powershell","-noprofile","-nologo","-command","-"],{});if(a==null){return([])}a.descriptorMetadata="process-manager";a.stdout.str="";a.stdout.on("data",function(f){this.str+=f.toString()});a.stderr.str="";a.stderr.on("data",function(f){this.str+=f.toString()});a.stdin.write('[reflection.Assembly]::LoadWithPartialName("system.core")\r\n');a.stdin.write('Get-WmiObject -Namespace "root/SecurityCenter2" -Class AntiVirusProduct | ');a.stdin.write("ForEach-Object -Process { ");a.stdin.write("$Bytes = [System.Text.Encoding]::UTF8.GetBytes($_.displayName); ");a.stdin.write("$EncodedText =[Convert]::ToBase64String($Bytes); ");a.stdin.write('Write-Host ("{0},{1}" -f $_.productState,$EncodedText); }\r\n');a.stdin.write("exit\r\n");a.waitExit();if(a.stdout.str==""){return([])}var c=a.stdout.str.trim().split("\r\n");var d=[];for(i=0;i<c.length;++i){var b=c[i].split(",");if(b.length==2){var e={};e.product=Buffer.from(b[1],"base64").toString();e.updated=(parseInt(b[0])&16)==0;e.enabled=(parseInt(b[0])&4096)==4096;d.push(e)}}return(d)}function defrag(a){var c=new promise(function(e,d){this._res=e;this._rej=d});var b="";switch(require("os").arch()){case"x64":if(require("_GenericMarshal").PointerSize==4){c._rej("Cannot defrag volume on 64 bit Windows from 32 bit application");return(c)}else{b=process.env.windir+"\\System32\\defrag.exe"}break;case"ia32":b=process.env.windir+"\\System32\\defrag.exe";break;default:c._rej(require("os").arch()+" not supported");return(c);break}c.child=require("child_process").execFile(process.env.windir+"\\System32\\defrag.exe",["defrag",a.volume+" /A"]);c.child.promise=c;c.child.promise.options=a;c.child.stdout.str="";c.child.stdout.on("data",function(d){this.str+=d.toString()});c.child.stderr.str="";c.child.stderr.on("data",function(d){this.str+=d.toString()});c.child.on("exit",function(d){var f=this.stdout.str.trim().split("\r\n");var g={volume:this.promise.options.volume};for(var e in f){var h=f[e].split("=");if(h.length==2){switch(h[0].trim().toLowerCase()){case"volume size":g.size=h[1];break;case"free space":g.free=h[1];break;case"total fragmented space":g.fragmented=h[1];break;case"largest free space size":g.largestFragment=h[1];break}}}this.promise._res(g)});return(c)}function regQuery(b,d,c){try{return(require("win-registry").QueryKey(b,d,c))}catch(a){return(null)}}function pendingReboot(){var c=null;var b=null;var a=require("win-registry").HKEY;if(regQuery(a.LocalMachine,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Component Based Servicing","RebootPending")!=null){b="Component Based Servicing"}else{if(regQuery(a.LocalMachine,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate","RebootRequired")){b="Windows Update"}else{if((c=regQuery(a.LocalMachine,"SYSTEM\\CurrentControlSet\\Control\\Session Manager","PendingFileRenameOperations"))!=null&&c!=0&&c!=""){b="File Rename"}else{if(regQuery(a.LocalMachine,"SYSTEM\\CurrentControlSet\\Control\\ComputerName\\ActiveComputerName","ComputerName")!=regQuery(a.LocalMachine,"SYSTEM\\CurrentControlSet\\Control\\ComputerName\\ComputerName","ComputerName")){b="System Rename"}}}}return(b)}function installedApps(){var b=require("promise");var c=new b(function(d,e){this._resolve=d;this._reject=e});var a=" var reg = require('win-registry'); var result = []; var val, tmp; var items = reg.QueryKey(reg.HKEY.LocalMachine, 'SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall'); for (var key in items.subkeys) { val = {}; try { val.name = reg.QueryKey(reg.HKEY.LocalMachine, 'SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall\\\\' + items.subkeys[key], 'DisplayName'); } catch(e) { continue; } try { val.version = reg.QueryKey(reg.HKEY.LocalMachine, 'SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall\\\\' + items.subkeys[key], 'DisplayVersion'); if (val.version == '') { delete val.version; } } catch(e) { } try { val.location = reg.QueryKey(reg.HKEY.LocalMachine, 'SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall\\\\' + items.subkeys[key], 'InstallLocation'); if (val.location == '') { delete val.location; } } catch(e) { } result.push(val); } console.log(JSON.stringify(result,'', 1));process.exit();";c.child=require("child_process").execFile(process.execPath,[process.execPath.split("\\").pop().split(".exe")[0],'-exec "'+a+'"']);c.child.promise=c;c.child.stdout.str="";c.child.stdout.on("data",function(d){this.str+=d.toString()});c.child.on("exit",function(d){this.promise._resolve(JSON.parse(this.stdout.str.trim()))});return(c)}if(process.platform=="win32"){module.exports={qfe:qfe,av:av,defrag:defrag,pendingReboot:pendingReboot,installedApps:installedApps}}else{var not_supported=function(){throw (process.platform+" not supported")};module.exports={qfe:not_supported,av:not_supported,defrag:not_supported,pendingReboot:not_supported,installedApps:not_supported}};