EverydayTech Platform - Developer Reference
Complete Source Code Documentation - All Applications
Loading...
Searching...
No Matches
amt.js
Go to the documentation of this file.
1/*
2Copyright 2018-2021 Intel Corporation
3
4Licensed under the Apache License, Version 2.0 (the "License");
5you may not use this file except in compliance with the License.
6You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10Unless required by applicable law or agreed to in writing, software
11distributed under the License is distributed on an "AS IS" BASIS,
12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13See the License for the specific language governing permissions and
14limitations under the License.
15*/
16
17/**
18* @fileoverview Intel(r) AMT Communication StackXX
19* @author Ylian Saint-Hilaire
20* @version v0.2.0b
21*/
22
23/**
24 * Construct a AmtStackCreateService object, this ia the main Intel AMT communication stack.
25 * @constructor
26 */
27function AmtStackCreateService(wsmanStack) {
28 var obj = new Object();
29 obj._ObjectID = 'AMT'
30 obj.wsman = wsmanStack;
31 obj.pfx = ["http://intel.com/wbem/wscim/1/amt-schema/1/", "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/", "http://intel.com/wbem/wscim/1/ips-schema/1/"];
32 obj.PendingEnums = [];
33 obj.PendingBatchOperations = 0;
34 obj.ActiveEnumsCount = 0;
35 obj.MaxActiveEnumsCount = 1; // Maximum number of enumerations that can be done at the same time.
36 obj.onProcessChanged = null;
37 var _MaxProcess = 0;
38 var _LastProcess = 0;
39
40 // Return the number of pending actions
41 obj.GetPendingActions = function () { return (obj.PendingEnums.length * 2) + (obj.ActiveEnumsCount) + obj.wsman.comm.PendingAjax.length + obj.wsman.comm.ActiveAjaxCount + obj.PendingBatchOperations; }
42
43 // Private Method, Update the current processing status, this gives the application an idea of what progress is being done by the WSMAN stack
44 function _up() {
45 var x = obj.GetPendingActions();
46 if (_MaxProcess < x) _MaxProcess = x;
47 if (obj.onProcessChanged != null && _LastProcess != x) {
48 //console.log("Process Old=" + _LastProcess + ", New=" + x + ", PEnums=" + obj.PendingEnums.length + ", AEnums=" + obj.ActiveEnumsCount + ", PAjax=" + obj.wsman.comm.PendingAjax.length + ", AAjax=" + obj.wsman.comm.ActiveAjaxCount + ", PBatch=" + obj.PendingBatchOperations);
49 _LastProcess = x;
50 obj.onProcessChanged(x, _MaxProcess);
51 }
52 if (x == 0) _MaxProcess = 0;
53 }
54
55 // Perform a WSMAN "SUBSCRIBE" operation.
56 obj.Subscribe = function Subscribe(name, delivery, url, callback, tag, pri, selectors, opaque, user, pass) { obj.wsman.ExecSubscribe(obj.CompleteName(name), delivery, url, function (ws, resuri, response, xstatus) { _up(); callback.call(obj, obj, name, response, xstatus, tag); }, 0, pri, selectors, opaque, user, pass); _up(); }
57
58 // Perform a WSMAN "UNSUBSCRIBE" operation.
59 obj.UnSubscribe = function UnSubscribe(name, callback, tag, pri, selectors) { obj.wsman.ExecUnSubscribe(obj.CompleteName(name), function (ws, resuri, response, xstatus) { _up(); callback.call(obj, obj, name, response, xstatus, tag); }, 0, pri, selectors); _up(); }
60
61 // Perform a WSMAN "GET" operation.
62 obj.Get = function Get(name, callback, tag, pri) { obj.wsman.ExecGet(obj.CompleteName(name), function (ws, resuri, response, xstatus) { _up(); callback.call(obj, obj, name, response, xstatus, tag); }, 0, pri); _up(); }
63
64 // Perform a WSMAN "PUT" operation.
65 obj.Put = function Put(name, putobj, callback, tag, pri, selectors) { obj.wsman.ExecPut(obj.CompleteName(name), putobj, function (ws, resuri, response, xstatus) { _up(); callback.call(obj, obj, name, response, xstatus, tag); }, 0, pri, selectors); _up(); }
66
67 // Perform a WSMAN "CREATE" operation.
68 obj.Create = function Create(name, putobj, callback, tag, pri) { obj.wsman.ExecCreate(obj.CompleteName(name), putobj, function (ws, resuri, response, xstatus) { _up(); callback.call(obj, obj, name, response, xstatus, tag); }, 0, pri); _up(); }
69
70 // Perform a WSMAN "DELETE" operation.
71 obj.Delete = function Delete(name, putobj, callback, tag, pri) { obj.wsman.ExecDelete(obj.CompleteName(name), putobj, function (ws, resuri, response, xstatus) { _up(); callback.call(obj, obj, name, response, xstatus, tag); }, 0, pri); _up(); }
72
73 // Perform a WSMAN method call operation.
74 obj.Exec = function Exec(name, method, args, callback, tag, pri, selectors) { obj.wsman.ExecMethod(obj.CompleteName(name), method, args, function (ws, resuri, response, xstatus) { _up(); callback.call(obj, obj, name, obj.CompleteExecResponse(response), xstatus, tag); }, 0, pri, selectors); _up(); }
75
76 // Perform a WSMAN method call operation.
77 obj.ExecWithXml = function ExecWithXml(name, method, args, callback, tag, pri, selectors) { obj.wsman.ExecMethodXml(obj.CompleteName(name), method, execArgumentsToXml(args), function (ws, resuri, response, xstatus) { _up(); callback.call(obj, obj, name, obj.CompleteExecResponse(response), xstatus, tag); }, 0, pri, selectors); _up(); }
78
79 // Perform a WSMAN "ENUMERATE" operation.
80 obj.Enum = function Enum(name, callback, tag, pri) {
81 if (obj.ActiveEnumsCount < obj.MaxActiveEnumsCount) {
82 obj.ActiveEnumsCount++; obj.wsman.ExecEnum(obj.CompleteName(name), function (ws, resuri, response, xstatus, tag0) { _up(); _EnumStartSink(name, response, callback, resuri, xstatus, tag0); }, tag, pri);
83 } else {
84 obj.PendingEnums.push([name, callback, tag, pri]);
85 }
86 _up();
87 }
88
89 // Private method
90 function _EnumStartSink(name, response, callback, resuri, status, tag, pri) {
91 if (status != 200) { callback.call(obj, obj, name, null, status, tag); _EnumDoNext(1); return; }
92 if (response == null || response.Header["Method"] != "EnumerateResponse" || !response.Body["EnumerationContext"]) { callback.call(obj, obj, name, null, 603, tag); _EnumDoNext(1); return; }
93 var enumctx = response.Body["EnumerationContext"];
94 obj.wsman.ExecPull(resuri, enumctx, function (ws, resuri, response, xstatus) { _EnumContinueSink(name, response, callback, resuri, [], xstatus, tag, pri); });
95 }
96
97 // Private method
98 function _EnumContinueSink(name, response, callback, resuri, items, status, tag, pri) {
99 if (status != 200) { callback.call(obj, obj, name, null, status, tag); _EnumDoNext(1); return; }
100 if (response == null || response.Header["Method"] != "PullResponse") { callback.call(obj, obj, name, null, 604, tag); _EnumDoNext(1); return; }
101 for (var i in response.Body["Items"]) {
102 if (response.Body["Items"][i] instanceof Array) {
103 for (var j in response.Body["Items"][i]) { items.push(response.Body["Items"][i][j]); }
104 } else {
105 items.push(response.Body["Items"][i]);
106 }
107 }
108 if (response.Body["EnumerationContext"]) {
109 var enumctx = response.Body["EnumerationContext"];
110 obj.wsman.ExecPull(resuri, enumctx, function (ws, resuri, response, xstatus) { _EnumContinueSink(name, response, callback, resuri, items, xstatus, tag, 1); });
111 } else {
112 _EnumDoNext(1);
113 callback.call(obj, obj, name, items, status, tag);
114 _up();
115 }
116 }
117
118 // Private method
119 function _EnumDoNext(dec) {
120 obj.ActiveEnumsCount -= dec;
121 if (obj.ActiveEnumsCount >= obj.MaxActiveEnumsCount || obj.PendingEnums.length == 0) return;
122 var x = obj.PendingEnums.shift();
123 obj.Enum(x[0], x[1], x[2]);
124 _EnumDoNext(0);
125 }
126
127 // Perform a batch of WSMAN "ENUM" operations.
128 obj.BatchEnum = function (batchname, names, callback, tag, continueOnError, pri) {
129 obj.PendingBatchOperations += (names.length * 2);
130 _BatchNextEnum(batchname, Clone(names), callback, tag, {}, continueOnError, pri); _up();
131 }
132
133 function Clone(v) { return JSON.parse(JSON.stringify(v)); }
134
135 // Request each enum in the batch, stopping if something does not return status 200
136 function _BatchNextEnum(batchname, names, callback, tag, results, continueOnError, pri) {
137 obj.PendingBatchOperations -= 2;
138 var n = names.shift(), f = obj.Enum;
139 if (n[0] == '*') { f = obj.Get; n = n.substring(1); } // If the name starts with a star, do a GET instead of an ENUM. This will reduce round trips.
140 //console.log((f == obj.Get?'Get ':'Enum ') + n);
141 // Perform a GET/ENUM action
142 f(n, function (stack, name, responses, status, tag0) {
143 tag0[2][name] = { response: (responses==null?null:responses.Body), responses: responses, status: status };
144 if (tag0[1].length == 0 || status == 401 || (continueOnError != true && status != 200 && status != 400)) { obj.PendingBatchOperations -= (names.length * 2); _up(); callback.call(obj, obj, batchname, tag0[2], status, tag); }
145 else { _up(); _BatchNextEnum(batchname, names, callback, tag, tag0[2], pri); }
146 }, [batchname, names, results], pri);
147 _up();
148 }
149
150 // Perform a batch of WSMAN "GET" operations.
151 obj.BatchGet = function (batchname, names, callback, tag, pri) {
152 _FetchNext({ name: batchname, names: names, callback: callback, current: 0, responses: {}, tag: tag, pri: pri }); _up();
153 }
154
155 // Private method
156 function _FetchNext(batch) {
157 if (batch.names.length <= batch.current) {
158 batch.callback.call(obj, obj, batch.name, batch.responses, 200, batch.tag);
159 } else {
160 obj.wsman.ExecGet(obj.CompleteName(batch.names[batch.current]), function (ws, resuri, response, xstatus) { _Fetched(batch, response, xstatus); }, batch.pri);
161 batch.current++;
162 }
163 _up();
164 }
165
166 // Private method
167 function _Fetched(batch, response, status) {
168 if (response == null || status != 200) {
169 batch.callback.call(obj, obj, batch.name, null, status, batch.tag);
170 } else {
171 batch.responses[response.Header["Method"]] = response;
172 _FetchNext(batch);
173 }
174 }
175
176 // Private method
177 obj.CompleteName = function(name) {
178 if (name.indexOf("AMT_") == 0) return obj.pfx[0] + name;
179 if (name.indexOf("CIM_") == 0) return obj.pfx[1] + name;
180 if (name.indexOf("IPS_") == 0) return obj.pfx[2] + name;
181 }
182
183 obj.CompleteExecResponse = function (resp) {
184 if (resp && resp != null && resp.Body && (resp.Body["ReturnValue"] != undefined)) { resp.Body.ReturnValueStr = obj.AmtStatusToStr(resp.Body["ReturnValue"]); }
185 return resp;
186 }
187
188 obj.RequestPowerStateChange = function (PowerState, callback_func) {
189 obj.CIM_PowerManagementService_RequestPowerStateChange(PowerState, "<Address xmlns=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\">http://schemas.xmlsoap.org/ws/2004/08/addressing</Address><ReferenceParameters xmlns=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\"><ResourceURI xmlns=\"http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd\">http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ComputerSystem</ResourceURI><SelectorSet xmlns=\"http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd\"><Selector Name=\"CreationClassName\">CIM_ComputerSystem</Selector><Selector Name=\"Name\">ManagedSystem</Selector></SelectorSet></ReferenceParameters>", null, null, callback_func);
190 }
191
192 obj.SetBootConfigRole = function (Role, callback_func) {
193 obj.CIM_BootService_SetBootConfigRole("<Address xmlns=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\">http://schemas.xmlsoap.org/ws/2004/08/addressing</Address><ReferenceParameters xmlns=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\"><ResourceURI xmlns=\"http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd\">http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_BootConfigSetting</ResourceURI><SelectorSet xmlns=\"http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd\"><Selector Name=\"InstanceID\">Intel(r) AMT: Boot Configuration 0</Selector></SelectorSet></ReferenceParameters>", Role, callback_func);
194 }
195
196 // Cancel all pending queries with given status
197 obj.CancelAllQueries = function (s) {
198 obj.wsman.CancelAllQueries(s);
199 }
200
201 // Auto generated methods
202 obj.AMT_AgentPresenceWatchdog_RegisterAgent = function (callback_func, tag, pri, selectors) { obj.Exec("AMT_AgentPresenceWatchdog", "RegisterAgent", {}, callback_func, tag, pri, selectors); }
203 obj.AMT_AgentPresenceWatchdog_AssertPresence = function (SequenceNumber, callback_func, tag, pri, selectors) { obj.Exec("AMT_AgentPresenceWatchdog", "AssertPresence", { "SequenceNumber": SequenceNumber }, callback_func, tag, pri, selectors); }
204 obj.AMT_AgentPresenceWatchdog_AssertShutdown = function (SequenceNumber, callback_func, tag, pri, selectors) { obj.Exec("AMT_AgentPresenceWatchdog", "AssertShutdown", { "SequenceNumber": SequenceNumber }, callback_func, tag, pri, selectors); }
205 obj.AMT_AgentPresenceWatchdog_AddAction = function (OldState, NewState, EventOnTransition, ActionSd, ActionEac, callback_func, tag, pri, selectors) { obj.Exec("AMT_AgentPresenceWatchdog", "AddAction", { "OldState": OldState, "NewState": NewState, "EventOnTransition": EventOnTransition, "ActionSd": ActionSd, "ActionEac": ActionEac }, callback_func, tag, pri, selectors); }
206 obj.AMT_AgentPresenceWatchdog_DeleteAllActions = function (callback_func, tag, pri, selectors) { obj.Exec("AMT_AgentPresenceWatchdog", "DeleteAllActions", {}, callback_func, tag, pri, selectors); }
207 obj.AMT_AgentPresenceWatchdogAction_GetActionEac = function (callback_func) { obj.Exec("AMT_AgentPresenceWatchdogAction", "GetActionEac", {}, callback_func); }
208 obj.AMT_AgentPresenceWatchdogVA_RegisterAgent = function (callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "RegisterAgent", {}, callback_func); }
209 obj.AMT_AgentPresenceWatchdogVA_AssertPresence = function (SequenceNumber, callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "AssertPresence", { "SequenceNumber": SequenceNumber }, callback_func); }
210 obj.AMT_AgentPresenceWatchdogVA_AssertShutdown = function (SequenceNumber, callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "AssertShutdown", { "SequenceNumber": SequenceNumber }, callback_func); }
211 obj.AMT_AgentPresenceWatchdogVA_AddAction = function (OldState, NewState, EventOnTransition, ActionSd, ActionEac, callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "AddAction", { "OldState": OldState, "NewState": NewState, "EventOnTransition": EventOnTransition, "ActionSd": ActionSd, "ActionEac": ActionEac }, callback_func); }
212 obj.AMT_AgentPresenceWatchdogVA_DeleteAllActions = function (_method_dummy, callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "DeleteAllActions", { "_method_dummy": _method_dummy }, callback_func); }
213 obj.AMT_AlarmClockService_AddAlarm = function AlarmClockService_AddAlarm(alarmInstance, callback_func)
214 {
215 var id = alarmInstance.InstanceID;
216 var nm = alarmInstance.ElementName;
217 var start = alarmInstance.StartTime.Datetime;
218 var interval = alarmInstance.Interval ? alarmInstance.Interval.Datetime : undefined;
219 var doc = alarmInstance.DeleteOnCompletion;
220 var tpl = "<d:AlarmTemplate xmlns:d=\"http://intel.com/wbem/wscim/1/amt-schema/1/AMT_AlarmClockService\" xmlns:s=\"http://intel.com/wbem/wscim/1/ips-schema/1/IPS_AlarmClockOccurrence\"><s:InstanceID>" + id + "</s:InstanceID><s:ElementName>" + nm + "</s:ElementName><s:StartTime><p:Datetime xmlns:p=\"http://schemas.dmtf.org/wbem/wscim/1/common\">" + start + "</p:Datetime></s:StartTime>" + ((interval!=undefined)?("<s:Interval><p:Interval xmlns:p=\"http://schemas.dmtf.org/wbem/wscim/1/common\">" + interval + "</p:Interval></s:Interval>"):"") + "<s:DeleteOnCompletion>" + doc + "</s:DeleteOnCompletion></d:AlarmTemplate>"
221 obj.wsman.ExecMethodXml(obj.CompleteName("AMT_AlarmClockService"), "AddAlarm", tpl, callback_func);
222 };
223 obj.AMT_AuditLog_ClearLog = function (callback_func) { obj.Exec("AMT_AuditLog", "ClearLog", {}, callback_func); }
224 obj.AMT_AuditLog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("AMT_AuditLog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
225 obj.AMT_AuditLog_ReadRecords = function (StartIndex, callback_func, tag) { obj.Exec("AMT_AuditLog", "ReadRecords", { "StartIndex": StartIndex }, callback_func, tag); }
226 obj.AMT_AuditLog_SetAuditLock = function (LockTimeoutInSeconds, Flag, Handle, callback_func) { obj.Exec("AMT_AuditLog", "SetAuditLock", { "LockTimeoutInSeconds": LockTimeoutInSeconds, "Flag": Flag, "Handle": Handle }, callback_func); }
227 obj.AMT_AuditLog_ExportAuditLogSignature = function (SigningMechanism, callback_func) { obj.Exec("AMT_AuditLog", "ExportAuditLogSignature", { "SigningMechanism": SigningMechanism }, callback_func); }
228 obj.AMT_AuditLog_SetSigningKeyMaterial = function (SigningMechanismType, SigningKey, LengthOfCertificates, Certificates, callback_func) { obj.Exec("AMT_AuditLog", "SetSigningKeyMaterial", { "SigningMechanismType": SigningMechanismType, "SigningKey": SigningKey, "LengthOfCertificates": LengthOfCertificates, "Certificates": Certificates }, callback_func); }
229 obj.AMT_AuditPolicyRule_SetAuditPolicy = function (Enable, AuditedAppID, EventID, PolicyType, callback_func) { obj.Exec("AMT_AuditPolicyRule", "SetAuditPolicy", { "Enable": Enable, "AuditedAppID": AuditedAppID, "EventID": EventID, "PolicyType": PolicyType }, callback_func); }
230 obj.AMT_AuditPolicyRule_SetAuditPolicyBulk = function (Enable, AuditedAppID, EventID, PolicyType, callback_func) { obj.Exec("AMT_AuditPolicyRule", "SetAuditPolicyBulk", { "Enable": Enable, "AuditedAppID": AuditedAppID, "EventID": EventID, "PolicyType": PolicyType }, callback_func); }
231 obj.AMT_AuthorizationService_AddUserAclEntryEx = function (DigestUsername, DigestPassword, KerberosUserSid, AccessPermission, Realms, callback_func) { obj.Exec("AMT_AuthorizationService", "AddUserAclEntryEx", { "DigestUsername": DigestUsername, "DigestPassword": DigestPassword, "KerberosUserSid": KerberosUserSid, "AccessPermission": AccessPermission, "Realms": Realms }, callback_func); }
232 obj.AMT_AuthorizationService_EnumerateUserAclEntries = function (StartIndex, callback_func) { obj.Exec("AMT_AuthorizationService", "EnumerateUserAclEntries", { "StartIndex": StartIndex }, callback_func); }
233 obj.AMT_AuthorizationService_GetUserAclEntryEx = function (Handle, callback_func, tag) { obj.Exec("AMT_AuthorizationService", "GetUserAclEntryEx", { "Handle": Handle }, callback_func, tag); }
234 obj.AMT_AuthorizationService_UpdateUserAclEntryEx = function (Handle, DigestUsername, DigestPassword, KerberosUserSid, AccessPermission, Realms, callback_func) { obj.Exec("AMT_AuthorizationService", "UpdateUserAclEntryEx", { "Handle": Handle, "DigestUsername": DigestUsername, "DigestPassword": DigestPassword, "KerberosUserSid": KerberosUserSid, "AccessPermission": AccessPermission, "Realms": Realms }, callback_func); }
235 obj.AMT_AuthorizationService_RemoveUserAclEntry = function (Handle, callback_func) { obj.Exec("AMT_AuthorizationService", "RemoveUserAclEntry", { "Handle": Handle }, callback_func); }
236 obj.AMT_AuthorizationService_SetAdminAclEntryEx = function (Username, DigestPassword, callback_func) { obj.Exec("AMT_AuthorizationService", "SetAdminAclEntryEx", { "Username": Username, "DigestPassword": DigestPassword }, callback_func); }
237 obj.AMT_AuthorizationService_GetAdminAclEntry = function (callback_func) { obj.Exec("AMT_AuthorizationService", "GetAdminAclEntry", {}, callback_func); }
238 obj.AMT_AuthorizationService_GetAdminAclEntryStatus = function (callback_func) { obj.Exec("AMT_AuthorizationService", "GetAdminAclEntryStatus", {}, callback_func); }
239 obj.AMT_AuthorizationService_GetAdminNetAclEntryStatus = function (callback_func) { obj.Exec("AMT_AuthorizationService", "GetAdminNetAclEntryStatus", {}, callback_func); }
240 obj.AMT_AuthorizationService_SetAclEnabledState = function (Handle, Enabled, callback_func, tag) { obj.Exec("AMT_AuthorizationService", "SetAclEnabledState", { "Handle": Handle, "Enabled": Enabled }, callback_func, tag); }
241 obj.AMT_AuthorizationService_GetAclEnabledState = function (Handle, callback_func, tag) { obj.Exec("AMT_AuthorizationService", "GetAclEnabledState", { "Handle": Handle }, callback_func, tag); }
242 obj.AMT_EndpointAccessControlService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
243 obj.AMT_EndpointAccessControlService_GetPosture = function (PostureType, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "GetPosture", { "PostureType": PostureType }, callback_func); }
244 obj.AMT_EndpointAccessControlService_GetPostureHash = function (PostureType, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "GetPostureHash", { "PostureType": PostureType }, callback_func); }
245 obj.AMT_EndpointAccessControlService_UpdatePostureState = function (UpdateType, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "UpdatePostureState", { "UpdateType": UpdateType }, callback_func); }
246 obj.AMT_EndpointAccessControlService_GetEacOptions = function (callback_func) { obj.Exec("AMT_EndpointAccessControlService", "GetEacOptions", {}, callback_func); }
247 obj.AMT_EndpointAccessControlService_SetEacOptions = function (EacVendors, PostureHashAlgorithm, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "SetEacOptions", { "EacVendors": EacVendors, "PostureHashAlgorithm": PostureHashAlgorithm }, callback_func); }
248 obj.AMT_EnvironmentDetectionSettingData_SetSystemDefensePolicy = function (Policy, callback_func) { obj.Exec("AMT_EnvironmentDetectionSettingData", "SetSystemDefensePolicy", { "Policy": Policy }, callback_func); }
249 obj.AMT_EnvironmentDetectionSettingData_EnableVpnRouting = function (Enable, callback_func) { obj.Exec("AMT_EnvironmentDetectionSettingData", "EnableVpnRouting", { "Enable": Enable }, callback_func); }
250 obj.AMT_EthernetPortSettings_SetLinkPreference = function (LinkPreference, Timeout, callback_func) { obj.Exec("AMT_EthernetPortSettings", "SetLinkPreference", { "LinkPreference": LinkPreference, "Timeout": Timeout }, callback_func); }
251 obj.AMT_HeuristicPacketFilterStatistics_ResetSelectedStats = function (SelectedStatistics, callback_func) { obj.Exec("AMT_HeuristicPacketFilterStatistics", "ResetSelectedStats", { "SelectedStatistics": SelectedStatistics }, callback_func); }
252 obj.AMT_KerberosSettingData_GetCredentialCacheState = function (callback_func) { obj.Exec("AMT_KerberosSettingData", "GetCredentialCacheState", {}, callback_func); }
253 obj.AMT_KerberosSettingData_SetCredentialCacheState = function (Enable, callback_func) { obj.Exec("AMT_KerberosSettingData", "SetCredentialCacheState", { "Enable": Enable }, callback_func); }
254 obj.AMT_MessageLog_CancelIteration = function (IterationIdentifier, callback_func) { obj.Exec("AMT_MessageLog", "CancelIteration", { "IterationIdentifier": IterationIdentifier }, callback_func); }
255 obj.AMT_MessageLog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("AMT_MessageLog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
256 obj.AMT_MessageLog_ClearLog = function (callback_func) { obj.Exec("AMT_MessageLog", "ClearLog", { }, callback_func); }
257 obj.AMT_MessageLog_GetRecords = function (IterationIdentifier, MaxReadRecords, callback_func, tag) { obj.Exec("AMT_MessageLog", "GetRecords", { "IterationIdentifier": IterationIdentifier, "MaxReadRecords": MaxReadRecords }, callback_func, tag); }
258 obj.AMT_MessageLog_GetRecord = function (IterationIdentifier, PositionToNext, callback_func) { obj.Exec("AMT_MessageLog", "GetRecord", { "IterationIdentifier": IterationIdentifier, "PositionToNext": PositionToNext }, callback_func); }
259 obj.AMT_MessageLog_PositionAtRecord = function (IterationIdentifier, MoveAbsolute, RecordNumber, callback_func) { obj.Exec("AMT_MessageLog", "PositionAtRecord", { "IterationIdentifier": IterationIdentifier, "MoveAbsolute": MoveAbsolute, "RecordNumber": RecordNumber }, callback_func); }
260 obj.AMT_MessageLog_PositionToFirstRecord = function (callback_func, tag) { obj.Exec("AMT_MessageLog", "PositionToFirstRecord", {}, callback_func, tag); }
261 obj.AMT_MessageLog_FreezeLog = function (Freeze, callback_func) { obj.Exec("AMT_MessageLog", "FreezeLog", { "Freeze": Freeze }, callback_func); }
262 obj.AMT_PublicKeyManagementService_AddCRL = function (Url, SerialNumbers, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "AddCRL", { "Url": Url, "SerialNumbers": SerialNumbers }, callback_func); }
263 obj.AMT_PublicKeyManagementService_ResetCRLList = function (_method_dummy, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "ResetCRLList", { "_method_dummy": _method_dummy }, callback_func); }
264 obj.AMT_PublicKeyManagementService_AddCertificate = function (CertificateBlob, callback_func, tag) { obj.Exec("AMT_PublicKeyManagementService", "AddCertificate", { "CertificateBlob": CertificateBlob }, callback_func, tag); }
265 obj.AMT_PublicKeyManagementService_AddTrustedRootCertificate = function (CertificateBlob, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "AddTrustedRootCertificate", { "CertificateBlob": CertificateBlob }, callback_func); }
266 obj.AMT_PublicKeyManagementService_AddKey = function (KeyBlob, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "AddKey", { "KeyBlob": KeyBlob }, callback_func); }
267 obj.AMT_PublicKeyManagementService_GeneratePKCS10Request = function (KeyPair, DNName, Usage, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "GeneratePKCS10Request", { "KeyPair": KeyPair, "DNName": DNName, "Usage": Usage }, callback_func); }
268 obj.AMT_PublicKeyManagementService_GeneratePKCS10RequestEx = function (KeyPair, SigningAlgorithm, NullSignedCertificateRequest, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "GeneratePKCS10RequestEx", { "KeyPair": KeyPair, "SigningAlgorithm": SigningAlgorithm, "NullSignedCertificateRequest": NullSignedCertificateRequest }, callback_func); }
269 obj.AMT_PublicKeyManagementService_GenerateKeyPair = function (KeyAlgorithm, KeyLength, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "GenerateKeyPair", { "KeyAlgorithm": KeyAlgorithm, "KeyLength": KeyLength }, callback_func); }
270 obj.AMT_RedirectionService_RequestStateChange = function (RequestedState, callback_func) { obj.Exec("AMT_RedirectionService", "RequestStateChange", { "RequestedState": RequestedState }, callback_func); }
271 obj.AMT_RedirectionService_TerminateSession = function (SessionType, callback_func) { obj.Exec("AMT_RedirectionService", "TerminateSession", { "SessionType": SessionType }, callback_func); }
272 obj.AMT_RemoteAccessService_AddMpServer = function (AccessInfo, InfoFormat, Port, AuthMethod, Certificate, Username, Password, CN, callback_func) { obj.Exec("AMT_RemoteAccessService", "AddMpServer", { "AccessInfo": AccessInfo, "InfoFormat": InfoFormat, "Port": Port, "AuthMethod": AuthMethod, "Certificate": Certificate, "Username": Username, "Password": Password, "CN": CN }, callback_func); }
273 obj.AMT_RemoteAccessService_AddRemoteAccessPolicyRule = function (Trigger, TunnelLifeTime, ExtendedData, MpServer, callback_func) { obj.Exec("AMT_RemoteAccessService", "AddRemoteAccessPolicyRule", { "Trigger": Trigger, "TunnelLifeTime": TunnelLifeTime, "ExtendedData": ExtendedData, "MpServer": MpServer }, callback_func); }
274 obj.AMT_RemoteAccessService_CloseRemoteAccessConnection = function (_method_dummy, callback_func) { obj.Exec("AMT_RemoteAccessService", "CloseRemoteAccessConnection", { "_method_dummy": _method_dummy }, callback_func); }
275 obj.AMT_SetupAndConfigurationService_CommitChanges = function (_method_dummy, callback_func, tag) { obj.Exec("AMT_SetupAndConfigurationService", "CommitChanges", { "_method_dummy": _method_dummy }, callback_func, tag); }
276 obj.AMT_SetupAndConfigurationService_Unprovision = function (ProvisioningMode, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "Unprovision", { "ProvisioningMode": ProvisioningMode }, callback_func); }
277 obj.AMT_SetupAndConfigurationService_PartialUnprovision = function (_method_dummy, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "PartialUnprovision", { "_method_dummy": _method_dummy }, callback_func); }
278 obj.AMT_SetupAndConfigurationService_ResetFlashWearOutProtection = function (_method_dummy, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "ResetFlashWearOutProtection", { "_method_dummy": _method_dummy }, callback_func); }
279 obj.AMT_SetupAndConfigurationService_ExtendProvisioningPeriod = function (Duration, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "ExtendProvisioningPeriod", { "Duration": Duration }, callback_func); }
280 obj.AMT_SetupAndConfigurationService_SetMEBxPassword = function (Password, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "SetMEBxPassword", { "Password": Password }, callback_func); }
281 obj.AMT_SetupAndConfigurationService_SetTLSPSK = function (PID, PPS, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "SetTLSPSK", { "PID": PID, "PPS": PPS }, callback_func); }
282 obj.AMT_SetupAndConfigurationService_GetProvisioningAuditRecord = function (callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "GetProvisioningAuditRecord", {}, callback_func); }
283 obj.AMT_SetupAndConfigurationService_GetUuid = function (callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "GetUuid", {}, callback_func); }
284 obj.AMT_SetupAndConfigurationService_GetUnprovisionBlockingComponents = function (callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "GetUnprovisionBlockingComponents", {}, callback_func); }
285 obj.AMT_SetupAndConfigurationService_GetProvisioningAuditRecordV2 = function (callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "GetProvisioningAuditRecordV2", {}, callback_func); }
286 obj.AMT_SystemDefensePolicy_GetTimeout = function (callback_func) { obj.Exec("AMT_SystemDefensePolicy", "GetTimeout", {}, callback_func); }
287 obj.AMT_SystemDefensePolicy_SetTimeout = function (Timeout, callback_func) { obj.Exec("AMT_SystemDefensePolicy", "SetTimeout", { "Timeout": Timeout }, callback_func); }
288 obj.AMT_SystemDefensePolicy_UpdateStatistics = function (NetworkInterface, ResetOnRead, callback_func, tag, pri, selectors) { obj.Exec("AMT_SystemDefensePolicy", "UpdateStatistics", { "NetworkInterface": NetworkInterface, "ResetOnRead": ResetOnRead }, callback_func, tag, pri, selectors); }
289 obj.AMT_SystemPowerScheme_SetPowerScheme = function (callback_func, schemeInstanceId, tag) { obj.Exec("AMT_SystemPowerScheme", "SetPowerScheme", {}, callback_func, tag, 0, { "InstanceID": schemeInstanceId }); }
290 obj.AMT_TimeSynchronizationService_GetLowAccuracyTimeSynch = function (callback_func, tag) { obj.Exec("AMT_TimeSynchronizationService", "GetLowAccuracyTimeSynch", {}, callback_func, tag); }
291 obj.AMT_TimeSynchronizationService_SetHighAccuracyTimeSynch = function (Ta0, Tm1, Tm2, callback_func, tag) { obj.Exec("AMT_TimeSynchronizationService", "SetHighAccuracyTimeSynch", { "Ta0": Ta0, "Tm1": Tm1, "Tm2": Tm2 }, callback_func, tag); }
292 obj.AMT_TLSCredentialContext_Create = function AMT_TLSCredentialContext_Create(ElementInContext, ElementProvidingContext, callback_func, tag) { obj.Create("AMT_TLSCredentialContext", { "ElementInContext": ElementInContext, "ElementProvidingContext": ElementProvidingContext }, callback_func, tag); }
293 obj.AMT_UserInitiatedConnectionService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("AMT_UserInitiatedConnectionService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
294 obj.AMT_WebUIService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func, tag) { obj.Exec("AMT_WebUIService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func, tag); }
295 obj.AMT_WiFiPortConfigurationService_AddWiFiSettings = function (WiFiEndpoint, WiFiEndpointSettingsInput, IEEE8021xSettingsInput, ClientCredential, CACredential, callback_func) { obj.ExecWithXml("AMT_WiFiPortConfigurationService", "AddWiFiSettings", { "WiFiEndpoint": WiFiEndpoint, "WiFiEndpointSettingsInput": WiFiEndpointSettingsInput, "IEEE8021xSettingsInput": IEEE8021xSettingsInput, "ClientCredential": ClientCredential, "CACredential": CACredential }, callback_func); }
296 obj.AMT_WiFiPortConfigurationService_UpdateWiFiSettings = function (WiFiEndpointSettings, WiFiEndpointSettingsInput, IEEE8021xSettingsInput, ClientCredential, CACredential, callback_func) { obj.ExecWithXml("AMT_WiFiPortConfigurationService", "UpdateWiFiSettings", { "WiFiEndpointSettings": WiFiEndpointSettings, "WiFiEndpointSettingsInput": WiFiEndpointSettingsInput, "IEEE8021xSettingsInput": IEEE8021xSettingsInput, "ClientCredential": ClientCredential, "CACredential": CACredential }, callback_func); }
297 obj.AMT_WiFiPortConfigurationService_DeleteAllITProfiles = function (_method_dummy, callback_func) { obj.Exec("AMT_WiFiPortConfigurationService", "DeleteAllITProfiles", { "_method_dummy": _method_dummy }, callback_func); }
298 obj.AMT_WiFiPortConfigurationService_DeleteAllUserProfiles = function (_method_dummy, callback_func) { obj.Exec("AMT_WiFiPortConfigurationService", "DeleteAllUserProfiles", { "_method_dummy": _method_dummy }, callback_func); }
299 obj.CIM_Account_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_Account", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
300 obj.CIM_AccountManagementService_CreateAccount = function (System, AccountTemplate, callback_func) { obj.Exec("CIM_AccountManagementService", "CreateAccount", { "System": System, "AccountTemplate": AccountTemplate }, callback_func); }
301 obj.CIM_BootConfigSetting_ChangeBootOrder = function (Source, callback_func) { obj.Exec("CIM_BootConfigSetting", "ChangeBootOrder", { "Source": Source }, callback_func); }
302 obj.CIM_BootService_SetBootConfigRole = function (BootConfigSetting, Role, callback_func) { obj.Exec("CIM_BootService", "SetBootConfigRole", { "BootConfigSetting": BootConfigSetting, "Role": Role }, callback_func, 0, 1); }
303 obj.CIM_BootService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func, tag) { obj.Exec('CIM_BootService', 'RequestStateChange', { 'RequestedState': RequestedState, 'TimeoutPeriod': TimeoutPeriod }, callback_func, tag, 1); }
304 obj.CIM_Card_ConnectorPower = function (Connector, PoweredOn, callback_func) { obj.Exec("CIM_Card", "ConnectorPower", { "Connector": Connector, "PoweredOn": PoweredOn }, callback_func); }
305 obj.CIM_Card_IsCompatible = function (ElementToCheck, callback_func) { obj.Exec("CIM_Card", "IsCompatible", { "ElementToCheck": ElementToCheck }, callback_func); }
306 obj.CIM_Chassis_IsCompatible = function (ElementToCheck, callback_func) { obj.Exec("CIM_Chassis", "IsCompatible", { "ElementToCheck": ElementToCheck }, callback_func); }
307 obj.CIM_Fan_SetSpeed = function (DesiredSpeed, callback_func) { obj.Exec("CIM_Fan", "SetSpeed", { "DesiredSpeed": DesiredSpeed }, callback_func); }
308 obj.CIM_KVMRedirectionSAP_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_KVMRedirectionSAP", "RequestStateChange", { "RequestedState": RequestedState/*, "TimeoutPeriod": TimeoutPeriod */}, callback_func); }
309 obj.CIM_MediaAccessDevice_LockMedia = function (Lock, callback_func) { obj.Exec("CIM_MediaAccessDevice", "LockMedia", { "Lock": Lock }, callback_func); }
310 obj.CIM_MediaAccessDevice_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_MediaAccessDevice", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
311 obj.CIM_MediaAccessDevice_Reset = function (callback_func) { obj.Exec("CIM_MediaAccessDevice", "Reset", {}, callback_func); }
312 obj.CIM_MediaAccessDevice_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_MediaAccessDevice", "EnableDevice", { "Enabled": Enabled }, callback_func); }
313 obj.CIM_MediaAccessDevice_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_MediaAccessDevice", "OnlineDevice", { "Online": Online }, callback_func); }
314 obj.CIM_MediaAccessDevice_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_MediaAccessDevice", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
315 obj.CIM_MediaAccessDevice_SaveProperties = function (callback_func) { obj.Exec("CIM_MediaAccessDevice", "SaveProperties", {}, callback_func); }
316 obj.CIM_MediaAccessDevice_RestoreProperties = function (callback_func) { obj.Exec("CIM_MediaAccessDevice", "RestoreProperties", {}, callback_func); }
317 obj.CIM_MediaAccessDevice_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_MediaAccessDevice", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
318 obj.CIM_PhysicalFrame_IsCompatible = function (ElementToCheck, callback_func) { obj.Exec("CIM_PhysicalFrame", "IsCompatible", { "ElementToCheck": ElementToCheck }, callback_func); }
319 obj.CIM_PhysicalPackage_IsCompatible = function (ElementToCheck, callback_func) { obj.Exec("CIM_PhysicalPackage", "IsCompatible", { "ElementToCheck": ElementToCheck }, callback_func); }
320 obj.CIM_PowerManagementService_RequestPowerStateChange = function (PowerState, ManagedElement, Time, TimeoutPeriod, callback_func) { obj.Exec("CIM_PowerManagementService", "RequestPowerStateChange", { "PowerState": PowerState, "ManagedElement": ManagedElement, "Time": Time, "TimeoutPeriod": TimeoutPeriod }, callback_func, 0, 1); }
321 obj.CIM_PowerSupply_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_PowerSupply", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
322 obj.CIM_PowerSupply_Reset = function (callback_func) { obj.Exec("CIM_PowerSupply", "Reset", {}, callback_func); }
323 obj.CIM_PowerSupply_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_PowerSupply", "EnableDevice", { "Enabled": Enabled }, callback_func); }
324 obj.CIM_PowerSupply_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_PowerSupply", "OnlineDevice", { "Online": Online }, callback_func); }
325 obj.CIM_PowerSupply_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_PowerSupply", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
326 obj.CIM_PowerSupply_SaveProperties = function (callback_func) { obj.Exec("CIM_PowerSupply", "SaveProperties", {}, callback_func); }
327 obj.CIM_PowerSupply_RestoreProperties = function (callback_func) { obj.Exec("CIM_PowerSupply", "RestoreProperties", {}, callback_func); }
328 obj.CIM_PowerSupply_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_PowerSupply", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
329 obj.CIM_Processor_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_Processor", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
330 obj.CIM_Processor_Reset = function (callback_func) { obj.Exec("CIM_Processor", "Reset", {}, callback_func); }
331 obj.CIM_Processor_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_Processor", "EnableDevice", { "Enabled": Enabled }, callback_func); }
332 obj.CIM_Processor_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_Processor", "OnlineDevice", { "Online": Online }, callback_func); }
333 obj.CIM_Processor_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_Processor", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
334 obj.CIM_Processor_SaveProperties = function (callback_func) { obj.Exec("CIM_Processor", "SaveProperties", {}, callback_func); }
335 obj.CIM_Processor_RestoreProperties = function (callback_func) { obj.Exec("CIM_Processor", "RestoreProperties", {}, callback_func); }
336 obj.CIM_Processor_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_Processor", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
337 obj.CIM_RecordLog_ClearLog = function (callback_func) { obj.Exec("CIM_RecordLog", "ClearLog", {}, callback_func); }
338 obj.CIM_RecordLog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_RecordLog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
339 obj.CIM_RedirectionService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_RedirectionService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
340 obj.CIM_Sensor_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_Sensor", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
341 obj.CIM_Sensor_Reset = function (callback_func) { obj.Exec("CIM_Sensor", "Reset", {}, callback_func); }
342 obj.CIM_Sensor_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_Sensor", "EnableDevice", { "Enabled": Enabled }, callback_func); }
343 obj.CIM_Sensor_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_Sensor", "OnlineDevice", { "Online": Online }, callback_func); }
344 obj.CIM_Sensor_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_Sensor", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
345 obj.CIM_Sensor_SaveProperties = function (callback_func) { obj.Exec("CIM_Sensor", "SaveProperties", {}, callback_func); }
346 obj.CIM_Sensor_RestoreProperties = function (callback_func) { obj.Exec("CIM_Sensor", "RestoreProperties", {}, callback_func); }
347 obj.CIM_Sensor_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_Sensor", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
348 obj.CIM_StatisticalData_ResetSelectedStats = function (SelectedStatistics, callback_func) { obj.Exec("CIM_StatisticalData", "ResetSelectedStats", { "SelectedStatistics": SelectedStatistics }, callback_func); }
349 obj.CIM_Watchdog_KeepAlive = function (callback_func) { obj.Exec("CIM_Watchdog", "KeepAlive", {}, callback_func); }
350 obj.CIM_Watchdog_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_Watchdog", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
351 obj.CIM_Watchdog_Reset = function (callback_func) { obj.Exec("CIM_Watchdog", "Reset", {}, callback_func); }
352 obj.CIM_Watchdog_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_Watchdog", "EnableDevice", { "Enabled": Enabled }, callback_func); }
353 obj.CIM_Watchdog_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_Watchdog", "OnlineDevice", { "Online": Online }, callback_func); }
354 obj.CIM_Watchdog_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_Watchdog", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
355 obj.CIM_Watchdog_SaveProperties = function (callback_func) { obj.Exec("CIM_Watchdog", "SaveProperties", {}, callback_func); }
356 obj.CIM_Watchdog_RestoreProperties = function (callback_func) { obj.Exec("CIM_Watchdog", "RestoreProperties", {}, callback_func); }
357 obj.CIM_Watchdog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_Watchdog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
358 obj.CIM_WiFiPort_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_WiFiPort", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
359 obj.CIM_WiFiPort_Reset = function (callback_func) { obj.Exec("CIM_WiFiPort", "Reset", {}, callback_func); }
360 obj.CIM_WiFiPort_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_WiFiPort", "EnableDevice", { "Enabled": Enabled }, callback_func); }
361 obj.CIM_WiFiPort_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_WiFiPort", "OnlineDevice", { "Online": Online }, callback_func); }
362 obj.CIM_WiFiPort_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_WiFiPort", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
363 obj.CIM_WiFiPort_SaveProperties = function (callback_func) { obj.Exec("CIM_WiFiPort", "SaveProperties", {}, callback_func); }
364 obj.CIM_WiFiPort_RestoreProperties = function (callback_func) { obj.Exec("CIM_WiFiPort", "RestoreProperties", {}, callback_func); }
365 obj.CIM_WiFiPort_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_WiFiPort", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
366 obj.IPS_HostBasedSetupService_Setup = function (NetAdminPassEncryptionType, NetworkAdminPassword, McNonce, Certificate, SigningAlgorithm, DigitalSignature, callback_func) { obj.Exec("IPS_HostBasedSetupService", "Setup", { "NetAdminPassEncryptionType": NetAdminPassEncryptionType, "NetworkAdminPassword": NetworkAdminPassword, "McNonce": McNonce, "Certificate": Certificate, "SigningAlgorithm": SigningAlgorithm, "DigitalSignature": DigitalSignature }, callback_func); }
367 obj.IPS_HostBasedSetupService_AddNextCertInChain = function (NextCertificate, IsLeafCertificate, IsRootCertificate, callback_func) { obj.Exec("IPS_HostBasedSetupService", "AddNextCertInChain", { "NextCertificate": NextCertificate, "IsLeafCertificate": IsLeafCertificate, "IsRootCertificate": IsRootCertificate }, callback_func); }
368 obj.IPS_HostBasedSetupService_AdminSetup = function (NetAdminPassEncryptionType, NetworkAdminPassword, McNonce, SigningAlgorithm, DigitalSignature, callback_func) { obj.Exec("IPS_HostBasedSetupService", "AdminSetup", { "NetAdminPassEncryptionType": NetAdminPassEncryptionType, "NetworkAdminPassword": NetworkAdminPassword, "McNonce": McNonce, "SigningAlgorithm": SigningAlgorithm, "DigitalSignature": DigitalSignature }, callback_func); }
369 obj.IPS_HostBasedSetupService_UpgradeClientToAdmin = function (McNonce, SigningAlgorithm, DigitalSignature, callback_func) { obj.Exec("IPS_HostBasedSetupService", "UpgradeClientToAdmin", { "McNonce": McNonce, "SigningAlgorithm": SigningAlgorithm, "DigitalSignature": DigitalSignature }, callback_func); }
370 obj.IPS_HostBasedSetupService_DisableClientControlMode = function (_method_dummy, callback_func) { obj.Exec("IPS_HostBasedSetupService", "DisableClientControlMode", { "_method_dummy": _method_dummy }, callback_func); }
371 obj.IPS_KVMRedirectionSettingData_TerminateSession = function (callback_func) { obj.Exec("IPS_KVMRedirectionSettingData", "TerminateSession", {}, callback_func); }
372 obj.IPS_KVMRedirectionSettingData_DataChannelRead = function (callback_func) { obj.Exec("IPS_KVMRedirectionSettingData", "DataChannelRead", {}, callback_func); }
373 obj.IPS_KVMRedirectionSettingData_DataChannelWrite = function (Data, callback_func) { obj.Exec("IPS_KVMRedirectionSettingData", "DataChannelWrite", { "DataMessage": Data }, callback_func); }
374 obj.IPS_OptInService_StartOptIn = function (callback_func) { obj.Exec("IPS_OptInService", "StartOptIn", {}, callback_func); }
375 obj.IPS_OptInService_CancelOptIn = function (callback_func) { obj.Exec("IPS_OptInService", "CancelOptIn", {}, callback_func); }
376 obj.IPS_OptInService_SendOptInCode = function (OptInCode, callback_func) { obj.Exec("IPS_OptInService", "SendOptInCode", { "OptInCode": OptInCode }, callback_func); }
377 obj.IPS_OptInService_StartService = function (callback_func) { obj.Exec("IPS_OptInService", "StartService", {}, callback_func); }
378 obj.IPS_OptInService_StopService = function (callback_func) { obj.Exec("IPS_OptInService", "StopService", {}, callback_func); }
379 obj.IPS_OptInService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("IPS_OptInService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
380 obj.IPS_ProvisioningRecordLog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("IPS_ProvisioningRecordLog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
381 obj.IPS_ProvisioningRecordLog_ClearLog = function (_method_dummy, callback_func) { obj.Exec("IPS_ProvisioningRecordLog", "ClearLog", { "_method_dummy": _method_dummy }, callback_func); }
382 obj.IPS_SecIOService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("IPS_SecIOService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
383
384 obj.AmtStatusToStr = function (code) { if (obj.AmtStatusCodes[code]) return obj.AmtStatusCodes[code]; else return "UNKNOWN_ERROR" }
385 obj.AmtStatusCodes = {
386 0x0000: "SUCCESS",
387 0x0001: "INTERNAL_ERROR",
388 0x0002: "NOT_READY",
389 0x0003: "INVALID_PT_MODE",
390 0x0004: "INVALID_MESSAGE_LENGTH",
391 0x0005: "TABLE_FINGERPRINT_NOT_AVAILABLE",
392 0x0006: "INTEGRITY_CHECK_FAILED",
393 0x0007: "UNSUPPORTED_ISVS_VERSION",
394 0x0008: "APPLICATION_NOT_REGISTERED",
395 0x0009: "INVALID_REGISTRATION_DATA",
396 0x000A: "APPLICATION_DOES_NOT_EXIST",
397 0x000B: "NOT_ENOUGH_STORAGE",
398 0x000C: "INVALID_NAME",
399 0x000D: "BLOCK_DOES_NOT_EXIST",
400 0x000E: "INVALID_BYTE_OFFSET",
401 0x000F: "INVALID_BYTE_COUNT",
402 0x0010: "NOT_PERMITTED",
403 0x0011: "NOT_OWNER",
404 0x0012: "BLOCK_LOCKED_BY_OTHER",
405 0x0013: "BLOCK_NOT_LOCKED",
406 0x0014: "INVALID_GROUP_PERMISSIONS",
407 0x0015: "GROUP_DOES_NOT_EXIST",
408 0x0016: "INVALID_MEMBER_COUNT",
409 0x0017: "MAX_LIMIT_REACHED",
410 0x0018: "INVALID_AUTH_TYPE",
411 0x0019: "AUTHENTICATION_FAILED",
412 0x001A: "INVALID_DHCP_MODE",
413 0x001B: "INVALID_IP_ADDRESS",
414 0x001C: "INVALID_DOMAIN_NAME",
415 0x001D: "UNSUPPORTED_VERSION",
416 0x001E: "REQUEST_UNEXPECTED",
417 0x001F: "INVALID_TABLE_TYPE",
418 0x0020: "INVALID_PROVISIONING_STATE",
419 0x0021: "UNSUPPORTED_OBJECT",
420 0x0022: "INVALID_TIME",
421 0x0023: "INVALID_INDEX",
422 0x0024: "INVALID_PARAMETER",
423 0x0025: "INVALID_NETMASK",
424 0x0026: "FLASH_WRITE_LIMIT_EXCEEDED",
425 0x0027: "INVALID_IMAGE_LENGTH",
426 0x0028: "INVALID_IMAGE_SIGNATURE",
427 0x0029: "PROPOSE_ANOTHER_VERSION",
428 0x002A: "INVALID_PID_FORMAT",
429 0x002B: "INVALID_PPS_FORMAT",
430 0x002C: "BIST_COMMAND_BLOCKED",
431 0x002D: "CONNECTION_FAILED",
432 0x002E: "CONNECTION_TOO_MANY",
433 0x002F: "RNG_GENERATION_IN_PROGRESS",
434 0x0030: "RNG_NOT_READY",
435 0x0031: "CERTIFICATE_NOT_READY",
436 0x0400: "DISABLED_BY_POLICY",
437 0x0800: "NETWORK_IF_ERROR_BASE",
438 0x0801: "UNSUPPORTED_OEM_NUMBER",
439 0x0802: "UNSUPPORTED_BOOT_OPTION",
440 0x0803: "INVALID_COMMAND",
441 0x0804: "INVALID_SPECIAL_COMMAND",
442 0x0805: "INVALID_HANDLE",
443 0x0806: "INVALID_PASSWORD",
444 0x0807: "INVALID_REALM",
445 0x0808: "STORAGE_ACL_ENTRY_IN_USE",
446 0x0809: "DATA_MISSING",
447 0x080A: "DUPLICATE",
448 0x080B: "EVENTLOG_FROZEN",
449 0x080C: "PKI_MISSING_KEYS",
450 0x080D: "PKI_GENERATING_KEYS",
451 0x080E: "INVALID_KEY",
452 0x080F: "INVALID_CERT",
453 0x0810: "CERT_KEY_NOT_MATCH",
454 0x0811: "MAX_KERB_DOMAIN_REACHED",
455 0x0812: "UNSUPPORTED",
456 0x0813: "INVALID_PRIORITY",
457 0x0814: "NOT_FOUND",
458 0x0815: "INVALID_CREDENTIALS",
459 0x0816: "INVALID_PASSPHRASE",
460 0x0818: "NO_ASSOCIATION",
461 0x081B: "AUDIT_FAIL",
462 0x081C: "BLOCKING_COMPONENT",
463 0x0821: "USER_CONSENT_REQUIRED",
464 0x1000: "APP_INTERNAL_ERROR",
465 0x1001: "NOT_INITIALIZED",
466 0x1002: "LIB_VERSION_UNSUPPORTED",
467 0x1003: "INVALID_PARAM",
468 0x1004: "RESOURCES",
469 0x1005: "HARDWARE_ACCESS_ERROR",
470 0x1006: "REQUESTOR_NOT_REGISTERED",
471 0x1007: "NETWORK_ERROR",
472 0x1008: "PARAM_BUFFER_TOO_SHORT",
473 0x1009: "COM_NOT_INITIALIZED_IN_THREAD",
474 0x100A: "URL_REQUIRED"
475 }
476
477 //
478 // Methods used for getting the event log
479 //
480
481 obj.GetMessageLog = function (func, tag) {
482 obj.AMT_MessageLog_PositionToFirstRecord(_GetMessageLog0, [func, tag, []]);
483 }
484 function _GetMessageLog0(stack, name, responses, status, tag) {
485 if (status != 200 || responses.Body["ReturnValue"] != '0') { tag[0](obj, null, tag[2], status); return; }
486 obj.AMT_MessageLog_GetRecords(responses.Body["IterationIdentifier"], 390, _GetMessageLog1, tag);
487 }
488 function _GetMessageLog1(stack, name, responses, status, tag) {
489 if (status != 200 || responses.Body["ReturnValue"] != '0') { tag[0](obj, null, tag[2], status); return; }
490 var i, j, x, e, AmtMessages = tag[2], t = new Date(), TimeStamp, ra = responses.Body["RecordArray"];
491 if (typeof ra === 'string') { ra = [ra]; }
492
493 for (i in ra) {
494 e = Buffer.from(ra[i], 'base64');
495 if (e != null) {
496 TimeStamp = ReadIntX(e, 0);
497 if ((TimeStamp > 0) && (TimeStamp < 0xFFFFFFFF)) {
498 x = { 'DeviceAddress': e[4], 'EventSensorType': e[5], 'EventType': e[6], 'EventOffset': e[7], 'EventSourceType': e[8], 'EventSeverity': e[9], 'SensorNumber': e[10], 'Entity': e[11], 'EntityInstance': e[12], 'EventData': [], 'Time': new Date((TimeStamp + (t.getTimezoneOffset() * 60)) * 1000) };
499 for (j = 13; j < 21; j++) { x['EventData'].push(e[j]); }
500 x['EntityStr'] = _SystemEntityTypes[x['Entity']];
501 x['Desc'] = _GetEventDetailStr(x['EventSensorType'], x['EventOffset'], x['EventData'], x['Entity']);
502 if (!x['EntityStr']) x['EntityStr'] = "Unknown";
503 AmtMessages.push(x);
504 }
505 }
506 }
507
508 if (responses.Body["NoMoreRecords"] != true) { obj.AMT_MessageLog_GetRecords(responses.Body["IterationIdentifier"], 390, _GetMessageLog1, [tag[0], AmtMessages, tag[2]]); } else { tag[0](obj, AmtMessages, tag[2]); }
509 }
510
511 var _EventTrapSourceTypes = "Platform firmware (e.g. BIOS)|SMI handler|ISV system management software|Alert ASIC|IPMI|BIOS vendor|System board set vendor|System integrator|Third party add-in|OSV|NIC|System management card".split('|');
512 var _SystemFirmwareError = "Unspecified.|No system memory is physically installed in the system.|No usable system memory, all installed memory has experienced an unrecoverable failure.|Unrecoverable hard-disk/ATAPI/IDE device failure.|Unrecoverable system-board failure.|Unrecoverable diskette subsystem failure.|Unrecoverable hard-disk controller failure.|Unrecoverable PS/2 or USB keyboard failure.|Removable boot media not found.|Unrecoverable video controller failure.|No video device detected.|Firmware (BIOS) ROM corruption detected.|CPU voltage mismatch (processors that share same supply have mismatched voltage requirements)|CPU speed matching failure".split('|');
513 var _SystemFirmwareProgress = "Unspecified.|Memory initialization.|Starting hard-disk initialization and test|Secondary processor(s) initialization|User authentication|User-initiated system setup|USB resource configuration|PCI resource configuration|Option ROM initialization|Video initialization|Cache initialization|SM Bus initialization|Keyboard controller initialization|Embedded controller/management controller initialization|Docking station attachment|Enabling docking station|Docking station ejection|Disabling docking station|Calling operating system wake-up vector|Starting operating system boot process|Baseboard or motherboard initialization|reserved|Floppy initialization|Keyboard test|Pointing device test|Primary processor initialization".split('|');
514 var _SystemEntityTypes = "Unspecified|Other|Unknown|Processor|Disk|Peripheral|System management module|System board|Memory module|Processor module|Power supply|Add in card|Front panel board|Back panel board|Power system board|Drive backplane|System internal expansion board|Other system board|Processor board|Power unit|Power module|Power management board|Chassis back panel board|System chassis|Sub chassis|Other chassis board|Disk drive bay|Peripheral bay|Device bay|Fan cooling|Cooling unit|Cable interconnect|Memory device|System management software|BIOS|Intel(r) ME|System bus|Group|Intel(r) ME|External environment|Battery|Processing blade|Connectivity switch|Processor/memory module|I/O module|Processor I/O module|Management controller firmware|IPMI channel|PCI bus|PCI express bus|SCSI bus|SATA/SAS bus|Processor front side bus".split('|');
515 obj.RealmNames = "||Redirection|PT Administration|Hardware Asset|Remote Control|Storage|Event Manager|Storage Admin|Agent Presence Local|Agent Presence Remote|Circuit Breaker|Network Time|General Information|Firmware Update|EIT|LocalUN|Endpoint Access Control|Endpoint Access Control Admin|Event Log Reader|Audit Log|ACL Realm|||Local System".split('|');
516 obj.WatchdogCurrentStates = { 1: 'Not Started', 2: 'Stopped', 4: 'Running', 8: 'Expired', 16: 'Suspended' };
517 var _OCRProgressEvents = ["Boot parameters received from CSME", "CSME Boot Option % added successfully", "HTTPS URI name resolved", "HTTPS connected successfully", "HTTPSBoot download is completed", "Attempt to boot", "Exit boot services"];
518 var _OCRErrorEvents = ['', "No network connection available", "Name resolution of URI failed", "Connect to URI failed", "OEM app not found at local URI", "HTTPS TLS Auth failed", "HTTPS Digest Auth failed", "Verified boot failed (bad image)", "HTTPS Boot File not found"];
519 var _OCRSource = { 1: '', 2: "HTTPS", 4: "Local PBA", 8: "WinRE" };
520
521 function _GetEventDetailStr(eventSensorType, eventOffset, eventDataField, entity) {
522 if (eventSensorType == 15) {
523 if (eventDataField[0] == 235) return "Invalid Data";
524 if (eventOffset == 0) {
525 return _SystemFirmwareError[eventDataField[1]];
526 } else if (eventOffset == 3) {
527 if ((eventDataField[0] == 170) && (eventDataField[1] == 48)) {
528 return format("One Click Recovery: {0}", _OCRErrorEvents[eventDataField[2]]);
529 } else if ((eventDataField[0] == 170) && (eventDataField[1] == 64)) {
530 if (eventDataField[2] == 1) return "Got an error erasing Device SSD";
531 if (eventDataField[2] == 2) return "Erasing Device TPM is not supported";
532 if (eventDataField[2] == 3) return "Reached Max Counter";
533 } else {
534 return "OEM Specific Firmware Error event";
535 }
536 } else if (eventOffset == 5) {
537 if ((eventDataField[0] == 170) && (eventDataField[1] == 48)) {
538 if (eventDataField[2] == 1) {
539 return format("One Click Recovery: CSME Boot Option {0}:{1} added successfully", (eventDataField[3]), _OCRSource[(eventDataField[3])]);
540 } else if (eventDataField[2] < 7) {
541 return format("One Click Recovery: {0}", _OCRProgressEvents[eventDataField[2]]);
542 } else {
543 return format("One Click Recovery: Unknown progress event {0}", eventDataField[2]);
544 }
545 } else if ((eventDataField[0] == 170) && (eventDataField[1] == 64)) {
546 if (eventDataField[2] == 1) {
547 if (eventDataField[3] == 2) return "Started erasing Device SSD";
548 if (eventDataField[3] == 3) return "Started erasing Device TPM";
549 if (eventDataField[3] == 5) return "Started erasing Device BIOS Reload of Golden Config";
550 }
551 if (eventDataField[2] == 2) {
552 if (eventDataField[3] == 2) return "Erasing Device SSD ended successfully";
553 if (eventDataField[3] == 3) return "Erasing Device TPM ended successfully";
554 if (eventDataField[3] == 5) return "Erasing Device BIOS Reload of Golden Config ended successfully";
555 }
556 if (eventDataField[2] == 3) return "Beginning Platform Erase";
557 if (eventDataField[2] == 4) return "Clear Reserved Parameters";
558 if (eventDataField[2] == 5) return "All setting decremented";
559 } else {
560 return "OEM Specific Firmware Progress event";
561 }
562 } else {
563 return _SystemFirmwareProgress[eventDataField[1]];
564 }
565 }
566
567 if ((eventSensorType == 18) && (eventDataField[0] == 170)) // System watchdog event
568 {
569 return "Agent watchdog " + char2hex(eventDataField[4]) + char2hex(eventDataField[3]) + char2hex(eventDataField[2]) + char2hex(eventDataField[1]) + "-" + char2hex(eventDataField[6]) + char2hex(eventDataField[5]) + "-... changed to " + obj.WatchdogCurrentStates[eventDataField[7]];
570 }
571
572 if ((eventSensorType == 5) && (eventOffset == 0)) // System chassis
573 {
574 return "Case intrusion";
575 }
576
577 if ((eventSensorType == 192) && (eventOffset == 0) && (eventDataField[0] == 170) && (eventDataField[1] == 48))
578 {
579 if (eventDataField[2] == 0) return "A remote Serial Over LAN session was established.";
580 if (eventDataField[2] == 1) return "Remote Serial Over LAN session finished. User control was restored.";
581 if (eventDataField[2] == 2) return "A remote IDE-Redirection session was established.";
582 if (eventDataField[2] == 3) return "Remote IDE-Redirection session finished. User control was restored.";
583 }
584
585 if (eventSensorType == 36)
586 {
587 var handle = (eventDataField[1] << 24) + (eventDataField[2] << 16) + (eventDataField[3] << 8) + eventDataField[4];
588 var nic = '#' + eventDataField[0];
589 if (eventDataField[0] == 0xAA) nic = "wired"; // TODO: Add wireless *****
590 //if (eventDataField[0] == 0xAA) nic = "wireless";
591
592 if (handle == 4294967293) { return "All received packet filter was matched on " + nic + " interface."; }
593 if (handle == 4294967292) { return "All outbound packet filter was matched on " + nic + " interface."; }
594 if (handle == 4294967290) { return "Spoofed packet filter was matched on " + nic + " interface."; }
595 return "Filter " + handle + " was matched on " + nic + " interface.";
596 }
597
598 if (eventSensorType == 192) {
599 if (eventDataField[2] == 0) return "Security policy invoked. Some or all network traffic (TX) was stopped.";
600 if (eventDataField[2] == 2) return "Security policy invoked. Some or all network traffic (RX) was stopped.";
601 return "Security policy invoked.";
602 }
603
604 if (eventSensorType == 193) {
605 if ((eventDataField[0] == 0xAA) && (eventDataField[1] == 0x30) && (eventDataField[2] == 0x00) && (eventDataField[3] == 0x00)) { return "User request for remote connection."; }
606 if ((eventDataField[0] == 0xAA) && (eventDataField[1] == 0x20) && (eventDataField[2] == 0x03) && (eventDataField[3] == 0x01)) { return "EAC error: attempt to get posture while NAC in Intel(r) AMT is disabled."; } // eventDataField = 0xAA20030100000000
607 if ((eventDataField[0] == 0xAA) && (eventDataField[1] == 0x20) && (eventDataField[2] == 0x04) && (eventDataField[3] == 0x00)) { return "Certificate revoked. "; }
608 }
609
610 if (eventSensorType == 6) return "Authentication failed " + (eventDataField[1] + (eventDataField[2] << 8)) + " times. The system may be under attack.";
611 if (eventSensorType == 30) return "No bootable media";
612 if (eventSensorType == 32) return "Operating system lockup or power interrupt";
613 if (eventSensorType == 35) return "System boot failure";
614 if (eventSensorType == 37) return "System firmware started (at least one CPU is properly executing).";
615 return "Unknown Sensor Type #" + eventSensorType;
616 }
617
618// ###BEGIN###{AuditLog}
619
620 // Useful link: https://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/default.htm?turl=WordDocuments%2Fsecurityadminevents.htm
621
622 var _AmtAuditStringTable =
623 {
624 16: 'Security Admin',
625 17: 'RCO',
626 18: 'Redirection Manager',
627 19: 'Firmware Update Manager',
628 20: 'Security Audit Log',
629 21: 'Network Time',
630 22: 'Network Administration',
631 23: 'Storage Administration',
632 24: 'Event Manager',
633 25: 'Circuit Breaker Manager',
634 26: 'Agent Presence Manager',
635 27: 'Wireless Configuration',
636 28: 'EAC',
637 29: 'KVM',
638 30: 'User Opt-In Events',
639 32: 'Screen Blanking',
640 33: 'Watchdog Events',
641 1600: 'Provisioning Started',
642 1601: 'Provisioning Completed',
643 1602: 'ACL Entry Added',
644 1603: 'ACL Entry Modified',
645 1604: 'ACL Entry Removed',
646 1605: 'ACL Access with Invalid Credentials',
647 1606: 'ACL Entry State',
648 1607: 'TLS State Changed',
649 1608: 'TLS Server Certificate Set',
650 1609: 'TLS Server Certificate Remove',
651 1610: 'TLS Trusted Root Certificate Added',
652 1611: 'TLS Trusted Root Certificate Removed',
653 1612: 'TLS Preshared Key Set',
654 1613: 'Kerberos Settings Modified',
655 1614: 'Kerberos Main Key Modified',
656 1615: 'Flash Wear out Counters Reset',
657 1616: 'Power Package Modified',
658 1617: 'Set Realm Authentication Mode',
659 1618: 'Upgrade Client to Admin Control Mode',
660 1619: 'Unprovisioning Started',
661 1700: 'Performed Power Up',
662 1701: 'Performed Power Down',
663 1702: 'Performed Power Cycle',
664 1703: 'Performed Reset',
665 1704: 'Set Boot Options',
666 1800: 'IDER Session Opened',
667 1801: 'IDER Session Closed',
668 1802: 'IDER Enabled',
669 1803: 'IDER Disabled',
670 1804: 'SoL Session Opened',
671 1805: 'SoL Session Closed',
672 1806: 'SoL Enabled',
673 1807: 'SoL Disabled',
674 1808: 'KVM Session Started',
675 1809: 'KVM Session Ended',
676 1810: 'KVM Enabled',
677 1811: 'KVM Disabled',
678 1812: 'VNC Password Failed 3 Times',
679 1900: 'Firmware Updated',
680 1901: 'Firmware Update Failed',
681 2000: 'Security Audit Log Cleared',
682 2001: 'Security Audit Policy Modified',
683 2002: 'Security Audit Log Disabled',
684 2003: 'Security Audit Log Enabled',
685 2004: 'Security Audit Log Exported',
686 2005: 'Security Audit Log Recovered',
687 2100: 'Intel(R) ME Time Set',
688 2200: 'TCPIP Parameters Set',
689 2201: 'Host Name Set',
690 2202: 'Domain Name Set',
691 2203: 'VLAN Parameters Set',
692 2204: 'Link Policy Set',
693 2205: 'IPv6 Parameters Set',
694 2300: 'Global Storage Attributes Set',
695 2301: 'Storage EACL Modified',
696 2302: 'Storage FPACL Modified',
697 2303: 'Storage Write Operation',
698 2400: 'Alert Subscribed',
699 2401: 'Alert Unsubscribed',
700 2402: 'Event Log Cleared',
701 2403: 'Event Log Frozen',
702 2500: 'CB Filter Added',
703 2501: 'CB Filter Removed',
704 2502: 'CB Policy Added',
705 2503: 'CB Policy Removed',
706 2504: 'CB Default Policy Set',
707 2505: 'CB Heuristics Option Set',
708 2506: 'CB Heuristics State Cleared',
709 2600: 'Agent Watchdog Added',
710 2601: 'Agent Watchdog Removed',
711 2602: 'Agent Watchdog Action Set',
712 2700: "Wireless Profile Added",
713 2701: "Wireless Profile Removed",
714 2702: "Wireless Profile Updated",
715 2703: "An existing profile sync was modified",
716 2704: "An existing profile link preference was changed",
717 2705: "Wireless profile share with UEFI enabled setting was changed",
718 2800: 'EAC Posture Signer SET',
719 2801: 'EAC Enabled',
720 2802: 'EAC Disabled',
721 2803: 'EAC Posture State',
722 2804: 'EAC Set Options',
723 2900: 'KVM Opt-in Enabled',
724 2901: 'KVM Opt-in Disabled',
725 2902: 'KVM Password Changed',
726 2903: 'KVM Consent Succeeded',
727 2904: 'KVM Consent Failed',
728 3000: 'Opt-In Policy Change',
729 3001: 'Send Consent Code Event',
730 3002: 'Start Opt-In Blocked Event'
731 }
732
733 // Return human readable extended audit log data
734 // TODO: Just put some of them here, but many more still need to be added, helpful link here:
735 // https://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/default.htm?turl=WordDocuments%2Fsecurityadminevents.htm
736 obj.GetAuditLogExtendedDataStr = function (id, data) {
737 if ((id == 1602 || id == 1604) && data[0] == 0) { return bufToArray(data).splice(2, 2 + data[1]).toString(); } // ACL Entry Added/Removed (Digest)
738 if (id == 1603) { if (data[1] == 0) { return bufToArray(data).splice(3).toString(); } return null; } // ACL Entry Modified
739 if (id == 1605) { return ["Invalid ME access", "Invalid MEBx access"][data[0]]; } // ACL Access with Invalid Credentials
740 if (id == 1606) { var r = ["Disabled", "Enabled"][data[0]]; if (data[1] == 0) { r += ", " + data[3]; } return r; } // ACL Entry State
741 if (id == 1607) { return "Remote " + ["NoAuth", "ServerAuth", "MutualAuth"][data[0]] + ", Local " + ["NoAuth", "ServerAuth", "MutualAuth"][data[1]]; } // TLS State Changed
742 if (id == 1617) { return obj.RealmNames[ReadInt(data, 0)] + ", " + ["NoAuth", "Auth", "Disabled"][data[4]]; } // Set Realm Authentication Mode
743 if (id == 1619) { return ["BIOS", "MEBx", "Local MEI", "Local WSMAN", "Remote WSAMN"][data[0]]; } // Intel AMT Unprovisioning Started
744 if (id == 1900) { return "From " + ReadShort(data, 0) + "." + ReadShort(data, 2) + "." + ReadShort(data, 4) + "." + ReadShort(data, 6) + " to " + ReadShort(data, 8) + "." + ReadShort(data, 10) + "." + ReadShort(data, 12) + "." + ReadShort(data, 14); } // Firmware Updated
745 if (id == 2100) { var t4 = new Date(); t4.setTime(ReadInt(data, 0) * 1000 + (new Date().getTimezoneOffset() * 60000)); return t4.toLocaleString(); } // Intel AMT Time Set
746 if (id == 3000) { return "From " + ["None", "KVM", "All"][data[0]] + " to " + ["None", "KVM", "All"][data[1]]; } // Opt-In Policy Change
747 if (id == 3001) { return ["Success", "Failed 3 times"][data[0]]; } // Send Consent Code Event
748 return null;
749 }
750
751 obj.GetAuditLog = function (func) {
752 obj.AMT_AuditLog_ReadRecords(1, _GetAuditLog0, [func, []]);
753 }
754
755 function MakeToArray(v) { if (!v || v == null || typeof v == 'object') return v; return [v]; }
756 function ReadShort(v, p) { return (v[p] << 8) + v[p + 1]; }
757 function ReadInt(v, p) { return (v[p] * 0x1000000) + (v[p + 1] << 16) + (v[p + 2] << 8) + v[p + 3]; } // We use "*0x1000000" instead of "<<24" because the shift converts the number to signed int32.
758 function ReadIntX(v, p) { return (v[p + 3] * 0x1000000) + (v[p + 2] << 16) + (v[p + 1] << 8) + v[p]; }
759 function btoa(x) { return Buffer.from(x).toString('base64'); }
760 function atob(x) { var z = null; try { z = Buffer.from(x, 'base64').toString(); } catch (e) { console.log(e); } return z; }
761 function bufToArray(buf) { var r = []; for (var i in buf) { r.push(buf[i]); } return r; }
762
763 function _GetAuditLog0(stack, name, responses, status, tag) {
764 if (status != 200) { tag[0](obj, [], status); return; }
765 var ptr, i, e, x, r = tag[1], t = new Date(), TimeStamp;
766
767 if (responses.Body['RecordsReturned'] > 0) {
768 responses.Body['EventRecords'] = MakeToArray(responses.Body['EventRecords']);
769
770 for (i in responses.Body['EventRecords']) {
771 e = null;
772 try {
773 e = Buffer.from(responses.Body['EventRecords'][i], 'base64');
774 } catch (ex) {
775 console.log(ex + " " + responses.Body['EventRecords'][i])
776 }
777
778 x = { 'AuditAppID': ReadShort(e, 0), 'EventID': ReadShort(e, 2), 'InitiatorType': e[4] };
779 x['AuditApp'] = _AmtAuditStringTable[x['AuditAppID']];
780 x['Event'] = _AmtAuditStringTable[(x['AuditAppID'] * 100) + x['EventID']];
781 if (!x['Event']) x['Event'] = '#' + x['EventID'];
782
783 // Read and process the initiator
784 if (x['InitiatorType'] == 0) {
785 // HTTP digest
786 var userlen = e[5];
787 x['Initiator'] = e.slice(6, 6 + userlen).toString();
788 ptr = 6 + userlen;
789 }
790 if (x['InitiatorType'] == 1) {
791 // Kerberos
792 x['KerberosUserInDomain'] = ReadInt(e, 5);
793 var userlen = e[9];
794 x['Initiator'] = GetSidString(e.slice(10, 10 + userlen));
795 ptr = 10 + userlen;
796 }
797 if (x['InitiatorType'] == 2) {
798 // Local
799 x['Initiator'] = 'Local';
800 ptr = 5;
801 }
802 if (x['InitiatorType'] == 3) {
803 // KVM Default Port
804 x['Initiator'] = 'KVM Default Port';
805 ptr = 5;
806 }
807
808 // Read timestamp
809 TimeStamp = ReadInt(e, ptr);
810 x['Time'] = new Date((TimeStamp + (t.getTimezoneOffset() * 60)) * 1000);
811 ptr += 4;
812
813 // Read network access
814 x['MCLocationType'] = e[ptr++];
815 var netlen = e[ptr++];
816 x['NetAddress'] = e.slice(ptr, ptr + netlen).toString();
817
818 // Read extended data
819 ptr += netlen;
820 var exlen = e[ptr++];
821 x['Ex'] = e.slice(ptr, ptr + exlen);
822 x['ExStr'] = obj.GetAuditLogExtendedDataStr((x['AuditAppID'] * 100) + x['EventID'], x['Ex']);
823 r.push(x);
824 }
825 }
826 if (responses.Body['TotalRecordCount'] > r.length) {
827 obj.AMT_AuditLog_ReadRecords(r.length + 1, _GetAuditLog0, [tag[0], r]);
828 } else {
829 tag[0](obj, r, status);
830 }
831 }
832
833 // ###END###{AuditLog}
834
835 /*
836 // ###BEGIN###{Certificates}
837
838 // Forge MD5
839 function hex_md5(str) { return forge.md.md5.create().update(str).digest().toHex(); }
840
841 // ###END###{Certificates}
842
843 // ###BEGIN###{!Certificates}
844
845 // TinyMD5 from https://github.com/jbt/js-crypto
846
847 // Perform MD5 setup
848 var md5_k = [];
849 for (var i = 0; i < 64;) { md5_k[i] = 0 | (Math.abs(Math.sin(++i)) * 4294967296); }
850
851 // Perform MD5 on raw string and return hex
852 function hex_md5(str) {
853 var b, c, d, j,
854 x = [],
855 str2 = unescape(encodeURI(str)),
856 a = str2.length,
857 h = [b = 1732584193, c = -271733879, ~b, ~c],
858 i = 0;
859
860 for (; i <= a;) x[i >> 2] |= (str2.charCodeAt(i) || 128) << 8 * (i++ % 4);
861
862 x[str = (a + 8 >> 6) * 16 + 14] = a * 8;
863 i = 0;
864
865 for (; i < str; i += 16) {
866 a = h; j = 0;
867 for (; j < 64;) {
868 a = [
869 d = a[3],
870 ((b = a[1] | 0) +
871 ((d = (
872 (a[0] +
873 [
874 b & (c = a[2]) | ~b & d,
875 d & b | ~d & c,
876 b ^ c ^ d,
877 c ^ (b | ~d)
878 ][a = j >> 4]
879 ) +
880 (md5_k[j] +
881 (x[[
882 j,
883 5 * j + 1,
884 3 * j + 5,
885 7 * j
886 ][a] % 16 + i] | 0)
887 )
888 )) << (a = [
889 7, 12, 17, 22,
890 5, 9, 14, 20,
891 4, 11, 16, 23,
892 6, 10, 15, 21
893 ][4 * a + j++ % 4]) | d >>> 32 - a)
894 ),
895 b,
896 c
897 ];
898 }
899 for (j = 4; j;) h[--j] = h[j] + a[j];
900 }
901
902 str = '';
903 for (; j < 32;) str += ((h[j >> 3] >> ((1 ^ j++ & 7) * 4)) & 15).toString(16);
904 return str;
905 }
906
907 // ###END###{!Certificates}
908
909 // Perform MD5 on raw string and return raw string result
910 function rstr_md5(str) { return hex2rstr(hex_md5(str)); }
911 */
912 /*
913 Convert arguments into selector set and body XML. Used by AMT_WiFiPortConfigurationService_UpdateWiFiSettings.
914 args = {
915 "WiFiEndpoint": {
916 __parameterType: 'reference',
917 __resourceUri: 'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_WiFiEndpoint',
918 Name: 'WiFi Endpoint 0'
919 },
920 "WiFiEndpointSettingsInput":
921 {
922 __parameterType: 'instance',
923 __namespace: 'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_WiFiEndpointSettings',
924 ElementName: document.querySelector('#editProfile-profileName').value,
925 InstanceID: 'Intel(r) AMT:WiFi Endpoint Settings ' + document.querySelector('#editProfile-profileName').value,
926 AuthenticationMethod: document.querySelector('#editProfile-networkAuthentication').value,
927 //BSSType: 3, // Intel(r) AMT supports only infrastructure networks
928 EncryptionMethod: document.querySelector('#editProfile-encryption').value,
929 SSID: document.querySelector('#editProfile-networkName').value,
930 Priority: 100,
931 PSKPassPhrase: document.querySelector('#editProfile-passPhrase').value
932 },
933 "IEEE8021xSettingsInput": null,
934 "ClientCredential": null,
935 "CACredential": null
936 },
937 */
938 function execArgumentsToXml(args) {
939 if (args === undefined || args === null) return null;
940
941 var result = '';
942 for (var argName in args) {
943 var arg = args[argName];
944 if (!arg) continue;
945 if (arg['__parameterType'] === 'reference') result += referenceToXml(argName, arg);
946 else result += instanceToXml(argName, arg);
947 //if(arg['__isInstance']) result += instanceToXml(argName, arg);
948 }
949 return result;
950 }
951
952 /**
953 * Convert JavaScript object into XML
954
955 <r:WiFiEndpointSettingsInput xmlns:q="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_WiFiEndpointSettings">
956 <q:ElementName>Wireless-Profile-Admin</q:ElementName>
957 <q:InstanceID>Intel(r) AMT:WiFi Endpoint Settings Wireless-Profile-Admin</q:InstanceID>
958 <q:AuthenticationMethod>6</q:AuthenticationMethod>
959 <q:EncryptionMethod>4</q:EncryptionMethod>
960 <q:Priority>100</q:Priority>
961 <q:PSKPassPhrase>P@ssw0rd</q:PSKPassPhrase>
962 </r:WiFiEndpointSettingsInput>
963 */
964 function instanceToXml(instanceName, inInstance) {
965 if (inInstance === undefined || inInstance === null) return null;
966
967 var hasNamespace = !!inInstance['__namespace'];
968 var startTag = hasNamespace ? '<q:' : '<';
969 var endTag = hasNamespace ? '</q:' : '</';
970 var namespaceDef = hasNamespace ? (' xmlns:q="' + inInstance['__namespace'] + '"') : '';
971 var result = '<r:' + instanceName + namespaceDef + '>';
972 for (var prop in inInstance) {
973 if (!inInstance.hasOwnProperty(prop) || prop.indexOf('__') === 0) continue;
974
975 if (typeof inInstance[prop] === 'function' || Array.isArray(inInstance[prop])) continue;
976
977 if (typeof inInstance[prop] === 'object') {
978 //result += startTag + prop +'>' + instanceToXml('prop', inInstance[prop]) + endTag + prop +'>';
979 console.error('only convert one level down...');
980 }
981 else {
982 result += startTag + prop + '>' + inInstance[prop].toString() + endTag + prop + '>';
983 }
984 }
985 result += '</r:' + instanceName + '>';
986 return result;
987 }
988
989
990 /**
991 * Convert a selector set into XML. Expect no nesting.
992 * {
993 * selectorName : selectorValue,
994 * selectorName : selectorValue,
995 * ... ...
996 * }
997
998 <r:WiFiEndpoint>
999 <a:Address>http://192.168.1.103:16992/wsman</a:Address>
1000 <a:ReferenceParameters>
1001 <w:ResourceURI>http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_WiFiEndpoint</w:ResourceURI>
1002 <w:SelectorSet>
1003 <w:Selector Name="Name">WiFi Endpoint 0</w:Selector>
1004 </w:SelectorSet>
1005 </a:ReferenceParameters>
1006 </r:WiFiEndpoint>
1007
1008 */
1009 function referenceToXml(referenceName, inReference) {
1010 if (inReference === undefined || inReference === null) return null;
1011
1012 var result = '<r:' + referenceName + '><a:Address>/wsman</a:Address><a:ReferenceParameters><w:ResourceURI>' + inReference['__resourceUri'] + '</w:ResourceURI><w:SelectorSet>';
1013 for (var selectorName in inReference) {
1014 if (!inReference.hasOwnProperty(selectorName) || selectorName.indexOf('__') === 0) continue;
1015
1016 if (typeof inReference[selectorName] === 'function' ||
1017 typeof inReference[selectorName] === 'object' ||
1018 Array.isArray(inReference[selectorName]))
1019 continue;
1020
1021 result += '<w:Selector Name="' + selectorName + '">' + inReference[selectorName].toString() + '</w:Selector>';
1022 }
1023
1024 result += '</w:SelectorSet></a:ReferenceParameters></r:' + referenceName + '>';
1025 return result;
1026 }
1027
1028 // Convert a byte array of SID into string
1029 function GetSidString(sid) {
1030 var r = 'S-' + sid[0] + '-' + sid[7];
1031 for (var i = 2; i < (sid.length / 4); i++) r += '-' + ReadIntX(sid, i * 4);
1032 return r;
1033 }
1034
1035 // Convert a SID readable string into bytes
1036 function GetSidByteArray(sidString) {
1037 if (!sidString || sidString == null) return null;
1038 var sidParts = sidString.split('-');
1039
1040 // Make sure the SID has at least 4 parts and starts with 'S'
1041 if (sidParts.length < 4 || (sidParts[0] != 's' && sidParts[0] != 'S')) return null;
1042
1043 // Check that each part of the SID is really an integer
1044 for (var i = 1; i < sidParts.length; i++) { var y = parseInt(sidParts[i]); if (y != sidParts[i]) return null; sidParts[i] = y; }
1045
1046 // Version (8 bit) + Id count (8 bit) + 48 bit in big endian -- DO NOT use bitwise right shift operator. JavaScript converts the number into a 32 bit integer before shifting. In real world, it's highly likely this part is always 0.
1047 var r = String.fromCharCode(sidParts[1]) + String.fromCharCode(sidParts.length - 3) + ShortToStr(Math.floor(sidParts[2] / Math.pow(2, 32))) + IntToStr((sidParts[2]) & 0xFFFF);
1048
1049 // the rest are in 32 bit in little endian
1050 for (var i = 3; i < sidParts.length; i++) r += IntToStrX(sidParts[i]);
1051 return r;
1052 }
1053
1054 return obj;
1055}
1056
1057module.exports = AmtStackCreateService;