From 88857b7a66d8db20ad5d5de9a6bfa8a05e633d12 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Fri, 23 Apr 2021 18:23:18 -0700 Subject: [PATCH] Added console command to toggle Connected Standby on Windows. --- agents/meshcore.js | 47 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/agents/meshcore.js b/agents/meshcore.js index 885587e0..37e18c4f 100644 --- a/agents/meshcore.js +++ b/agents/meshcore.js @@ -2753,7 +2753,7 @@ function processConsoleCommand(cmd, args, rights, sessionid) { case 'help': { // Displays available commands var fin = '', f = '', availcommands = 'agentupdate,errorlog,msh,timerinfo,coreinfo,coredump,service,fdsnapshot,fdcount,startupoptions,alert,agentsize,versions,help,info,osinfo,args,print,type,dbkeys,dbget,dbset,dbcompact,eval,parseuri,httpget,wslist,plugin,wsconnect,wssend,wsclose,notify,ls,ps,kill,netinfo,location,power,wakeonlan,setdebug,smbios,rawsmbios,toast,lock,users,openurl,getscript,getclip,setclip,log,av,cpuinfo,sysinfo,apf,scanwifi,wallpaper,agentmsg'; if (require('os').dns != null) { availcommands += ',dnsinfo'; } - if (process.platform == 'win32') { availcommands += ',safemode,wpfhwacceleration,uac'; } + if (process.platform == 'win32') { availcommands += ',cs,safemode,wpfhwacceleration,uac'; } if (amt != null) { availcommands += ',amt,amtconfig,amtevents'; } if (process.platform != 'freebsd') { availcommands += ',vm'; } if (require('MeshAgent').maxKvmTileSize != null) { availcommands += ',kvmmode'; } @@ -2768,6 +2768,51 @@ function processConsoleCommand(cmd, args, rights, sessionid) { response = "Available commands: \r\n" + fin + "."; break; } + case 'cs': + if (process.platform != 'win32') + { + response = 'Unknown command "cs", type "help" for list of avaialble commands.'; + break; + } + switch (args['_'].length) + { + case 0: + try + { + var cs = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'System\\CurrentControlSet\\Control\\Power', 'CsEnabled'); + response = "Connected Standby: " + (cs == 1 ? "ENABLED" : "DISABLED"); + } + catch(e) + { + response = "This machine does not support Connected Standby"; + } + break; + case 1: + if ((args['_'][0].toUpperCase() != 'ENABLE' && args['_'][0].toUpperCase() != 'DISABLE')) + { + response = "Proper usage:\r\n cs [ENABLE|DISABLE]"; + } + else + { + try + { + var cs = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'System\\CurrentControlSet\\Control\\Power', 'CsEnabled'); + require('win-registry').WriteKey(require('win-registry').HKEY.LocalMachine, 'System\\CurrentControlSet\\Control\\Power', 'CsEnabled', args['_'][0].toUpperCase() == 'ENABLE' ? 1 : 0); + + cs = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'System\\CurrentControlSet\\Control\\Power', 'CsEnabled'); + response = "Connected Standby: " + (cs == 1 ? "ENABLED" : "DISABLED"); + } + catch (e) + { + response = "This machine does not support Connected Standby"; + } + } + break; + default: + response = "Proper usage:\r\n cs [ENABLE|DISABLE]"; + break; + } + break; case 'agentupdate': require('MeshAgent').SendCommand({ action: 'agentupdate', sessionid: sessionid }); break;