Added MeshCMD AMTFEATURES command
Ylian Saint-Hilaire committed
Jul 15, 2019 at 12:55 UTC
adb16a7366052566df2b517d4913d5a5b3472fa6
5 files changed
+209
-5
agents/MeshCmd-signed.exe
Binary files a/agents/MeshCmd-signed.exe and b/agents/MeshCmd-signed.exe differ
agents/MeshCmd64-signed.exe
Binary files a/agents/MeshCmd64-signed.exe and b/agents/MeshCmd64-signed.exe differ
agents/meshcmd.js
+104
-2
@@ -113,7 +113,7 @@ function run(argv) {
113
//console.log('addedModules = ' + JSON.stringify(addedModules));
114
var actionpath = 'meshaction.txt';
115
if (args.actionfile != null) { actionpath = args.actionfile; }
116
- var actions = ['HELP', 'ROUTE', 'MICROLMS', 'AMTPOWER', 'AMTLOADWEBAPP', 'AMTLOADSMALLWEBAPP', 'AMTLOADLARGEWEBAPP', 'AMTCLEARWEBAPP', 'AMTSTORAGESTATE', 'AMTINFO', 'AMTINFODEBUG', 'AMTVERSIONS', 'AMTHASHES', 'AMTSAVESTATE', 'AMTSCRIPT', 'AMTUUID', 'AMTCCM', 'AMTACM', 'AMTDEACTIVATE', 'AMTACMDEACTIVATE', 'SMBIOS', 'RAWSMBIOS', 'MESHCOMMANDER', 'AMTAUDITLOG', 'AMTPRESENCE'];
116
+ var actions = ['HELP', 'ROUTE', 'MICROLMS', 'AMTPOWER', 'AMTFEATURES', 'AMTLOADWEBAPP', 'AMTLOADSMALLWEBAPP', 'AMTLOADLARGEWEBAPP', 'AMTCLEARWEBAPP', 'AMTSTORAGESTATE', 'AMTINFO', 'AMTINFODEBUG', 'AMTVERSIONS', 'AMTHASHES', 'AMTSAVESTATE', 'AMTSCRIPT', 'AMTUUID', 'AMTCCM', 'AMTACM', 'AMTDEACTIVATE', 'AMTACMDEACTIVATE', 'SMBIOS', 'RAWSMBIOS', 'MESHCOMMANDER', 'AMTAUDITLOG', 'AMTPRESENCE'];
117
118
// Load the action file
119
var actionfile = null;
@@ -165,7 +165,7 @@ function run(argv) {
165
console.log('No action specified, use MeshCmd like this:\r\n');
166
console.log(' meshcmd [action] [arguments...]\r\n');
167
console.log('Valid MeshCentral actions:');
168
- console.log(' Route - Map a local TCP port to a remote computer.');
168
+ console.log(' Route - Map a local TCP port to a remote computer.');
169
console.log('\r\nValid local actions:');
170
console.log(' SMBios - Display System Management BIOS tables for this computer.');
171
console.log(' RawSMBios - Display RAW System Management BIOS tables for this computer.');
@@ -189,6 +189,7 @@ function run(argv) {
189
console.log(' AmtPower - Perform remote Intel AMT power operation.');
190
console.log(' AmtScript - Run .mescript on Intel AMT.');
191
console.log(' AmtIDER - Mount local disk image to remote computer.');
192
+ console.log(' AmtFeatures - Intel AMT features & user consent.');
193
console.log('\r\nHelp on a specific action using:\r\n');
194
console.log(' meshcmd help [action]');
195
exit(1); return;
@@ -305,6 +306,19 @@ function run(argv) {
306
console.log(' --reset, --poweron, --poweroff, --powercycle, --sleep, --hibernate');
307
console.log(' --user [username] The Intel AMT login username, admin is default.');
308
console.log(' --tls Specifies that TLS must be used.');
309
+ } else if (action == 'amtfeatures') {
310
+ console.log('AmtFeatures is used to get/set Intel AMT feature configuration. Example usage:\r\n\r\n meshcmd amtfeatures --host 1.2.3.4 --user admin --pass mypassword --tls --redir 1');
311
+ console.log('\r\nRequired arguments:\r\n');
312
+ console.log(' --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.');
313
+ console.log(' --pass [password] The Intel AMT login password.');
314
+ console.log('\r\nOptional arguments:\r\n');
315
+ console.log(' --user [username] The Intel AMT login username, admin is default.');
316
+ console.log(' --tls Specifies that TLS must be used.');
317
+ console.log(' --consent [none/kvm/all] Set Intel AMT user consent feature.');
318
+ console.log(' --redir [0/1] Set Intel AMT redirection port feature.');
319
+ console.log(' --kvm [0/1] Set Intel AMT KVM feature.');
320
+ console.log(' --sol [0/1] Set Intel AMT Serial-over-LAN feature.');
321
+ console.log(' --ider [0/1] Set Intel AMT IDE redirection feature.');
322
} else if (action == 'meshcommander') {
323
console.log('This action launched a local web server that hosts MeshCommander, a Intel AMT management console.');
324
console.log('\r\nPossible arguments:\r\n');
@@ -582,6 +596,11 @@ function run(argv) {
596
if ((settings.cdrom == null) || (typeof settings.cdrom != 'string') || (settings.cdrom == '')) { settings.cdrom = null; }
597
if ((settings.floppy == null) && (settings.cdrom == null)) { console.log('No or invalid \"floppy\" or \"cdrom\" specified, use --floppy [file] or --cdrom [file].'); exit(1); return; }
598
performIder();
599
+ } else if (settings.action == 'amtfeatures') { // Perform remote Intel AMT feature configuration operation
600
+ if ((settings.hostname == null) || (typeof settings.hostname != 'string') || (settings.hostname == '')) { console.log('No or invalid \"hostname\" specified, use --hostname [host].'); exit(1); return; }
601
+ if ((settings.password == null) || (typeof settings.password != 'string') || (settings.password == '')) { console.log('No or invalid \"password\" specified, use --password [password].'); exit(1); return; }
602
+ if ((settings.username == null) || (typeof settings.username != 'string') || (settings.username == '')) { settings.username = 'admin'; }
603
+ performAmtFeatureConfig(args);
604
} else if (settings.action == 'amtpower') { // Perform remote Intel AMT power operation
605
if ((settings.hostname == null) || (typeof settings.hostname != 'string') || (settings.hostname == '')) { console.log('No or invalid \"hostname\" specified, use --hostname [host].'); exit(1); return; }
606
if ((settings.password == null) || (typeof settings.password != 'string') || (settings.password == '')) { console.log('No or invalid \"password\" specified, use --password [password].'); exit(1); return; }
@@ -2069,6 +2088,89 @@ function iderSectorStats(mode, dev, mediaBlocks, lba, len) {
2088
iderIdleTimer = setTimeout(function () { console.log('Idle timeout'); process.exit(1); }, 1000 * settings.timeout);
2089
}
2090
2091
+//
2092
+// Intel AMT feature configuration action
2093
+//
2094
+
2095
+function performAmtFeatureConfig(args) {
2096
+ var transport = require('amt-wsman-duk');
2097
+ var wsman = require('amt-wsman');
2098
+ var amt = require('amt');
2099
+ wsstack = new wsman(transport, settings.hostname, settings.tls ? 16993 : 16992, settings.username, settings.password, settings.tls);
2100
+ amtstack = new amt(wsstack);
2101
+ amtstack.BatchEnum(null, ['*IPS_OptInService', '*AMT_RedirectionService', '*CIM_KVMRedirectionSAP'], performAmtFeatureConfig1, args);
2102
+}
2103
+
2104
+var pendingAmtConfigActions = 0;
2105
+function performAmtFeatureConfig1(stack, name, response, status, args) {
2106
+ if (status == 200) {
2107
+ // User consent
2108
+ var optinrequired = response['IPS_OptInService'].response["OptInRequired"];
2109
+ if (args) {
2110
+ if ((args.userconsent == 'none') && (optinrequired != 0)) {
2111
+ pendingAmtConfigActions++;
2112
+ response['IPS_OptInService'].response["OptInRequired"] = 0;
2113
+ amtstack.Put("IPS_OptInService", response['IPS_OptInService'].response, function (stack, name, response, status) { if (--pendingAmtConfigActions == 0) { performAmtFeatureConfig(); } });
2114
+ }
2115
+ else if ((args.userconsent == 'kvm') && (optinrequired != 1)) {
2116
+ pendingAmtConfigActions++;
2117
+ response['IPS_OptInService'].response["OptInRequired"] = 1;
2118
+ amtstack.Put("IPS_OptInService", response['IPS_OptInService'].response, function (stack, name, response, status) { if (--pendingAmtConfigActions == 0) { performAmtFeatureConfig(); } });
2119
+ }
2120
+ else if ((args.userconsent == 'all') && (optinrequired != 0xFFFFFFFF)) {
2121
+ pendingAmtConfigActions++;
2122
+ response['IPS_OptInService'].response["OptInRequired"] = 0xFFFFFFFF;
2123
+ amtstack.Put("IPS_OptInService", response['IPS_OptInService'].response, function (stack, name, response, status) { if (--pendingAmtConfigActions == 0) { performAmtFeatureConfig(); } });
2124
+ }
2125
+ }
2126
+
2127
+ // Redirection ports
2128
+ var redirportchange = false;
2129
+ var redirchange = false;
2130
+ var redir = (response['AMT_RedirectionService'].response["ListenerEnabled"] == true);
2131
+
2132
+ var sol = ((response['AMT_RedirectionService'].response["EnabledState"] & 2) != 0);
2133
+ var ider = ((response['AMT_RedirectionService'].response["EnabledState"] & 1) != 0);
2134
+ if (args) {
2135
+ if ((redir == false) && ((args.redir == 'enabled') || (args.redir == 1))) { response['AMT_RedirectionService'].response["ListenerEnabled"] = true; redirportchange = true; }
2136
+ if ((redir == true) && ((args.redir == 'disabled') || (args.redir == 0))) { response['AMT_RedirectionService'].response["ListenerEnabled"] = false; redirportchange = true; }
2137
+ if ((sol == false) && ((args.sol == 'enabled') || (args.sol == 1))) { sol = true; redirchange = true; }
2138
+ if ((sol == true) && ((args.sol == 'disabled') || (args.sol == 0))) { sol = false; redirchange = true; }
2139
+ if ((ider == false) && ((args.ider == 'enabled') || (args.ider == 1))) { ider = true; redirchange = true; }
2140
+ if ((ider == true) && ((args.ider == 'disabled') || (args.ider == 0))) { ider = false; redirchange = true; }
2141
+ if (redirportchange) { pendingAmtConfigActions++; amtstack.Put("AMT_RedirectionService", response['AMT_RedirectionService'].response, function (stack, name, response, status) { if (--pendingAmtConfigActions == 0) { performAmtFeatureConfig(); } }); }
2142
+ if (redirchange) { pendingAmtConfigActions++; amtstack.AMT_RedirectionService_RequestStateChange((32768 + ((ider ? 1 : 0) + (sol ? 2 : 0))), function (stack, name, response, status) { if (--pendingAmtConfigActions == 0) { performAmtFeatureConfig(); } }); }
2143
+ }
2144
+
2145
+ // KVM
2146
+ var kvm = false;
2147
+ var kvmchange = false;
2148
+ if (response['CIM_KVMRedirectionSAP'] != null) {
2149
+ kvm = ((response['CIM_KVMRedirectionSAP'].response["EnabledState"] == 6 && response['CIM_KVMRedirectionSAP'].response["RequestedState"] == 2) || response['CIM_KVMRedirectionSAP'].response["EnabledState"] == 2 || response['CIM_KVMRedirectionSAP'].response["EnabledState"] == 6);
2150
+ if (args) {
2151
+ if ((kvm == false) && ((args.kvm == 'enabled') || (args.kvm == 1))) { kvm = true; kvmchange = true; }
2152
+ if ((kvm == true) && ((args.kvm == 'disabled') || (args.kvm == 0))) { kvm = false; kvmchange = true; }
2153
+ if (kvmchange) { pendingAmtConfigActions++; amtstack.CIM_KVMRedirectionSAP_RequestStateChange(kvm ? 2 : 3, 0, function (stack, name, response, status) { if (--pendingAmtConfigActions == 0) { performAmtFeatureConfig(); } }); }
2154
+ }
2155
+ }
2156
+
2157
+ if (pendingAmtConfigActions == 0) {
2158
+ if (optinrequired == 0) { console.log('User Consent: None'); }
2159
+ else if (optinrequired == 1) { console.log('User Consent: KVM'); }
2160
+ else if (optinrequired == 0xFFFFFFFF) { console.log('User Consent: All'); }
2161
+ else { console.log('User Consent: ' + optinrequired); }
2162
+ console.log('Redirection Port: ' + (redir ? 'Enabled' : 'Disabled'));
2163
+ console.log('Serial-over-LAN: ' + (sol ? 'Enabled' : 'Disabled'));
2164
+ console.log('IDE Redirection: ' + (ider ? 'Enabled' : 'Disabled'));
2165
+ if (response['CIM_KVMRedirectionSAP'] != null) { console.log('Remote desktop (KVM): ' + (kvm ? 'Enabled' : 'Disabled')); }
2166
+ process.exit(0);
2167
+ }
2168
+ } else {
2169
+ console.log('Error, status ' + status + '.');
2170
+ process.exit(1);
2171
+ }
2172
+}
2173
+
2174
2175
//
2176
// Intel AMT Remote Power Action
agents/meshcmd.min.js
+104
-2
@@ -113,7 +113,7 @@ function run(argv) {
113
//console.log('addedModules = ' + JSON.stringify(addedModules));
114
var actionpath = 'meshaction.txt';
115
if (args.actionfile != null) { actionpath = args.actionfile; }
116
- var actions = ['HELP', 'ROUTE', 'MICROLMS', 'AMTPOWER', 'AMTLOADWEBAPP', 'AMTLOADSMALLWEBAPP', 'AMTLOADLARGEWEBAPP', 'AMTCLEARWEBAPP', 'AMTSTORAGESTATE', 'AMTINFO', 'AMTINFODEBUG', 'AMTVERSIONS', 'AMTHASHES', 'AMTSAVESTATE', 'AMTSCRIPT', 'AMTUUID', 'AMTCCM', 'AMTACM', 'AMTDEACTIVATE', 'AMTACMDEACTIVATE', 'SMBIOS', 'RAWSMBIOS', 'MESHCOMMANDER', 'AMTAUDITLOG', 'AMTPRESENCE'];
116
+ var actions = ['HELP', 'ROUTE', 'MICROLMS', 'AMTPOWER', 'AMTFEATURES', 'AMTLOADWEBAPP', 'AMTLOADSMALLWEBAPP', 'AMTLOADLARGEWEBAPP', 'AMTCLEARWEBAPP', 'AMTSTORAGESTATE', 'AMTINFO', 'AMTINFODEBUG', 'AMTVERSIONS', 'AMTHASHES', 'AMTSAVESTATE', 'AMTSCRIPT', 'AMTUUID', 'AMTCCM', 'AMTACM', 'AMTDEACTIVATE', 'AMTACMDEACTIVATE', 'SMBIOS', 'RAWSMBIOS', 'MESHCOMMANDER', 'AMTAUDITLOG', 'AMTPRESENCE'];
117
118
// Load the action file
119
var actionfile = null;
@@ -165,7 +165,7 @@ function run(argv) {
165
console.log('No action specified, use MeshCmd like this:\r\n');
166
console.log(' meshcmd [action] [arguments...]\r\n');
167
console.log('Valid MeshCentral actions:');
168
- console.log(' Route - Map a local TCP port to a remote computer.');
168
+ console.log(' Route - Map a local TCP port to a remote computer.');
169
console.log('\r\nValid local actions:');
170
console.log(' SMBios - Display System Management BIOS tables for this computer.');
171
console.log(' RawSMBios - Display RAW System Management BIOS tables for this computer.');
@@ -189,6 +189,7 @@ function run(argv) {
189
console.log(' AmtPower - Perform remote Intel AMT power operation.');
190
console.log(' AmtScript - Run .mescript on Intel AMT.');
191
console.log(' AmtIDER - Mount local disk image to remote computer.');
192
+ console.log(' AmtFeatures - Intel AMT features & user consent.');
193
console.log('\r\nHelp on a specific action using:\r\n');
194
console.log(' meshcmd help [action]');
195
exit(1); return;
@@ -305,6 +306,19 @@ function run(argv) {
306
console.log(' --reset, --poweron, --poweroff, --powercycle, --sleep, --hibernate');
307
console.log(' --user [username] The Intel AMT login username, admin is default.');
308
console.log(' --tls Specifies that TLS must be used.');
309
+ } else if (action == 'amtfeatures') {
310
+ console.log('AmtFeatures is used to get/set Intel AMT feature configuration. Example usage:\r\n\r\n meshcmd amtfeatures --host 1.2.3.4 --user admin --pass mypassword --tls --redir 1');
311
+ console.log('\r\nRequired arguments:\r\n');
312
+ console.log(' --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.');
313
+ console.log(' --pass [password] The Intel AMT login password.');
314
+ console.log('\r\nOptional arguments:\r\n');
315
+ console.log(' --user [username] The Intel AMT login username, admin is default.');
316
+ console.log(' --tls Specifies that TLS must be used.');
317
+ console.log(' --consent [none/kvm/all] Set Intel AMT user consent feature.');
318
+ console.log(' --redir [0/1] Set Intel AMT redirection port feature.');
319
+ console.log(' --kvm [0/1] Set Intel AMT KVM feature.');
320
+ console.log(' --sol [0/1] Set Intel AMT Serial-over-LAN feature.');
321
+ console.log(' --ider [0/1] Set Intel AMT IDE redirection feature.');
322
} else if (action == 'meshcommander') {
323
console.log('This action launched a local web server that hosts MeshCommander, a Intel AMT management console.');
324
console.log('\r\nPossible arguments:\r\n');
@@ -582,6 +596,11 @@ function run(argv) {
596
if ((settings.cdrom == null) || (typeof settings.cdrom != 'string') || (settings.cdrom == '')) { settings.cdrom = null; }
597
if ((settings.floppy == null) && (settings.cdrom == null)) { console.log('No or invalid \"floppy\" or \"cdrom\" specified, use --floppy [file] or --cdrom [file].'); exit(1); return; }
598
performIder();
599
+ } else if (settings.action == 'amtfeatures') { // Perform remote Intel AMT feature configuration operation
600
+ if ((settings.hostname == null) || (typeof settings.hostname != 'string') || (settings.hostname == '')) { console.log('No or invalid \"hostname\" specified, use --hostname [host].'); exit(1); return; }
601
+ if ((settings.password == null) || (typeof settings.password != 'string') || (settings.password == '')) { console.log('No or invalid \"password\" specified, use --password [password].'); exit(1); return; }
602
+ if ((settings.username == null) || (typeof settings.username != 'string') || (settings.username == '')) { settings.username = 'admin'; }
603
+ performAmtFeatureConfig(args);
604
} else if (settings.action == 'amtpower') { // Perform remote Intel AMT power operation
605
if ((settings.hostname == null) || (typeof settings.hostname != 'string') || (settings.hostname == '')) { console.log('No or invalid \"hostname\" specified, use --hostname [host].'); exit(1); return; }
606
if ((settings.password == null) || (typeof settings.password != 'string') || (settings.password == '')) { console.log('No or invalid \"password\" specified, use --password [password].'); exit(1); return; }
@@ -2069,6 +2088,89 @@ function iderSectorStats(mode, dev, mediaBlocks, lba, len) {
2088
iderIdleTimer = setTimeout(function () { console.log('Idle timeout'); process.exit(1); }, 1000 * settings.timeout);
2089
}
2090
2091
+//
2092
+// Intel AMT feature configuration action
2093
+//
2094
+
2095
+function performAmtFeatureConfig(args) {
2096
+ var transport = require('amt-wsman-duk');
2097
+ var wsman = require('amt-wsman');
2098
+ var amt = require('amt');
2099
+ wsstack = new wsman(transport, settings.hostname, settings.tls ? 16993 : 16992, settings.username, settings.password, settings.tls);
2100
+ amtstack = new amt(wsstack);
2101
+ amtstack.BatchEnum(null, ['*IPS_OptInService', '*AMT_RedirectionService', '*CIM_KVMRedirectionSAP'], performAmtFeatureConfig1, args);
2102
+}
2103
+
2104
+var pendingAmtConfigActions = 0;
2105
+function performAmtFeatureConfig1(stack, name, response, status, args) {
2106
+ if (status == 200) {
2107
+ // User consent
2108
+ var optinrequired = response['IPS_OptInService'].response["OptInRequired"];
2109
+ if (args) {
2110
+ if ((args.userconsent == 'none') && (optinrequired != 0)) {
2111
+ pendingAmtConfigActions++;
2112
+ response['IPS_OptInService'].response["OptInRequired"] = 0;
2113
+ amtstack.Put("IPS_OptInService", response['IPS_OptInService'].response, function (stack, name, response, status) { if (--pendingAmtConfigActions == 0) { performAmtFeatureConfig(); } });
2114
+ }
2115
+ else if ((args.userconsent == 'kvm') && (optinrequired != 1)) {
2116
+ pendingAmtConfigActions++;
2117
+ response['IPS_OptInService'].response["OptInRequired"] = 1;
2118
+ amtstack.Put("IPS_OptInService", response['IPS_OptInService'].response, function (stack, name, response, status) { if (--pendingAmtConfigActions == 0) { performAmtFeatureConfig(); } });
2119
+ }
2120
+ else if ((args.userconsent == 'all') && (optinrequired != 0xFFFFFFFF)) {
2121
+ pendingAmtConfigActions++;
2122
+ response['IPS_OptInService'].response["OptInRequired"] = 0xFFFFFFFF;
2123
+ amtstack.Put("IPS_OptInService", response['IPS_OptInService'].response, function (stack, name, response, status) { if (--pendingAmtConfigActions == 0) { performAmtFeatureConfig(); } });
2124
+ }
2125
+ }
2126
+
2127
+ // Redirection ports
2128
+ var redirportchange = false;
2129
+ var redirchange = false;
2130
+ var redir = (response['AMT_RedirectionService'].response["ListenerEnabled"] == true);
2131
+
2132
+ var sol = ((response['AMT_RedirectionService'].response["EnabledState"] & 2) != 0);
2133
+ var ider = ((response['AMT_RedirectionService'].response["EnabledState"] & 1) != 0);
2134
+ if (args) {
2135
+ if ((redir == false) && ((args.redir == 'enabled') || (args.redir == 1))) { response['AMT_RedirectionService'].response["ListenerEnabled"] = true; redirportchange = true; }
2136
+ if ((redir == true) && ((args.redir == 'disabled') || (args.redir == 0))) { response['AMT_RedirectionService'].response["ListenerEnabled"] = false; redirportchange = true; }
2137
+ if ((sol == false) && ((args.sol == 'enabled') || (args.sol == 1))) { sol = true; redirchange = true; }
2138
+ if ((sol == true) && ((args.sol == 'disabled') || (args.sol == 0))) { sol = false; redirchange = true; }
2139
+ if ((ider == false) && ((args.ider == 'enabled') || (args.ider == 1))) { ider = true; redirchange = true; }
2140
+ if ((ider == true) && ((args.ider == 'disabled') || (args.ider == 0))) { ider = false; redirchange = true; }
2141
+ if (redirportchange) { pendingAmtConfigActions++; amtstack.Put("AMT_RedirectionService", response['AMT_RedirectionService'].response, function (stack, name, response, status) { if (--pendingAmtConfigActions == 0) { performAmtFeatureConfig(); } }); }
2142
+ if (redirchange) { pendingAmtConfigActions++; amtstack.AMT_RedirectionService_RequestStateChange((32768 + ((ider ? 1 : 0) + (sol ? 2 : 0))), function (stack, name, response, status) { if (--pendingAmtConfigActions == 0) { performAmtFeatureConfig(); } }); }
2143
+ }
2144
+
2145
+ // KVM
2146
+ var kvm = false;
2147
+ var kvmchange = false;
2148
+ if (response['CIM_KVMRedirectionSAP'] != null) {
2149
+ kvm = ((response['CIM_KVMRedirectionSAP'].response["EnabledState"] == 6 && response['CIM_KVMRedirectionSAP'].response["RequestedState"] == 2) || response['CIM_KVMRedirectionSAP'].response["EnabledState"] == 2 || response['CIM_KVMRedirectionSAP'].response["EnabledState"] == 6);
2150
+ if (args) {
2151
+ if ((kvm == false) && ((args.kvm == 'enabled') || (args.kvm == 1))) { kvm = true; kvmchange = true; }
2152
+ if ((kvm == true) && ((args.kvm == 'disabled') || (args.kvm == 0))) { kvm = false; kvmchange = true; }
2153
+ if (kvmchange) { pendingAmtConfigActions++; amtstack.CIM_KVMRedirectionSAP_RequestStateChange(kvm ? 2 : 3, 0, function (stack, name, response, status) { if (--pendingAmtConfigActions == 0) { performAmtFeatureConfig(); } }); }
2154
+ }
2155
+ }
2156
+
2157
+ if (pendingAmtConfigActions == 0) {
2158
+ if (optinrequired == 0) { console.log('User Consent: None'); }
2159
+ else if (optinrequired == 1) { console.log('User Consent: KVM'); }
2160
+ else if (optinrequired == 0xFFFFFFFF) { console.log('User Consent: All'); }
2161
+ else { console.log('User Consent: ' + optinrequired); }
2162
+ console.log('Redirection Port: ' + (redir ? 'Enabled' : 'Disabled'));
2163
+ console.log('Serial-over-LAN: ' + (sol ? 'Enabled' : 'Disabled'));
2164
+ console.log('IDE Redirection: ' + (ider ? 'Enabled' : 'Disabled'));
2165
+ if (response['CIM_KVMRedirectionSAP'] != null) { console.log('Remote desktop (KVM): ' + (kvm ? 'Enabled' : 'Disabled')); }
2166
+ process.exit(0);
2167
+ }
2168
+ } else {
2169
+ console.log('Error, status ' + status + '.');
2170
+ process.exit(1);
2171
+ }
2172
+}
2173
+
2174
2175
//
2176
// Intel AMT Remote Power Action
package.json
+1
-1
@@ -1,6 +1,6 @@
1
{
2
"name": "meshcentral",
3
- "version": "0.3.7-r",
3
+ "version": "0.3.7-t",
4
"keywords": [
5
"Remote Management",
6
"Intel AMT",