You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
896 lines
26 KiB
896 lines
26 KiB
<HTML>
|
|
<HEAD>
|
|
<STYLE>
|
|
BODY { font-family:Verdana; font-size:5pt; margin:0px; color:teal; }
|
|
.instructions { font-style:italic; text-align:right; color:gray; margin-left:.5em; }
|
|
.headline { background-color:teal; color:white; font-family:Arial Black; font-size:10pt;
|
|
text-align:center; padding-top:1em; }
|
|
.group { font-family:Arial Black; font-size:8pt; margin-top:.5em; margin-left:.5em;
|
|
margin-bottom:.5em; }
|
|
.button { font-family:Verdana; font-size:7pt; font-weight:bold; text-align:right;
|
|
color:gray; }
|
|
.arrow { font-family:Webdings; }
|
|
</STYLE>
|
|
</HEAD>
|
|
|
|
<SCRIPT>
|
|
var source;
|
|
var style;
|
|
var methodDataStyle;
|
|
var theRequest;
|
|
var sourceURL;
|
|
var styleURL;
|
|
var oldXSLitem;
|
|
var theXMLResponse;
|
|
var operationId;
|
|
|
|
// Script to execute method
|
|
function ExecuteMethods()
|
|
{
|
|
theMethodData = theXMLResponse.transformNode(methodDataStyle);
|
|
// We have a list of methods now, and their arguments
|
|
// Pop up a dialogu asking for the method to be executed.
|
|
thePage = '<HTML><BODY><BUTTON onClick="parents.results.display(\"Hi\")">Hi</BUTTON></BODY></HTML>';
|
|
parent.results.display(thePage);
|
|
|
|
}
|
|
|
|
function UpdateOperationId ()
|
|
{
|
|
operationId = operation.value;
|
|
}
|
|
|
|
function UpdateStylesheet ()
|
|
{
|
|
var theXSL = new String (stylesheetSelect.value);
|
|
|
|
if (theXSL == "Raw")
|
|
changeXSL("raw-xml.xsl");
|
|
else if (theXSL == "MOF")
|
|
changeXSL("wmimof20.xsl");
|
|
else if (theXSL == "PropertyType")
|
|
changeXSL("property-table.xsl");
|
|
else if (theXSL == "PropertyValue")
|
|
changeXSL("value-table.xsl");
|
|
else if (theXSL == "ClassNames")
|
|
changeXSL("classnames.xsl");
|
|
else if (theXSL == "PropValue")
|
|
changeXSL("propvalue.xsl");
|
|
else if (theXSL == "DetailPage")
|
|
changeXSL("detailpage20.xsl");
|
|
else if (theXSL == "ClassPage")
|
|
changeXSL("classpage20.xsl");
|
|
else
|
|
changeXSL(stylesheetSelect.value);
|
|
|
|
}
|
|
|
|
function DoOperation (bSend)
|
|
{
|
|
var theOp = new String (operationId);
|
|
var theBody;
|
|
|
|
if (theOp == "EnumerateInstances")
|
|
theBody = EnumInstance ();
|
|
else if (theOp == "GetClass")
|
|
theBody = GetClass ();
|
|
else if (theOp == "GetInstance")
|
|
theBody = GetInstance ();
|
|
else if (theOp == "EnumerateClasses")
|
|
theBody = EnumClass ();
|
|
else if (theOp == "EnumerateClassNames")
|
|
theBody = EnumClassNames ();
|
|
else if (theOp == "EnumerateInstanceNames")
|
|
theBody = EnumInstanceNames ();
|
|
else if (theOp == "ExecQuery")
|
|
theBody = ExecQuery ();
|
|
else if (theOp == "OPTIONS")
|
|
theBody = GetOptions ();
|
|
else if (theOp == "DeleteClass")
|
|
theBody = DeleteClass ();
|
|
else if (theOp == "DeleteInstance")
|
|
theBody = DeleteInstance ();
|
|
else if (theOp == "GetProperty")
|
|
theBody = GetProperty ();
|
|
else if (theOp == "SetProperty")
|
|
theBody = SetProperty ();
|
|
else if (theOp == "Associators")
|
|
theBody = Associators ();
|
|
else if (theOp == "AssociatorNames")
|
|
theBody = AssociatorNames ();
|
|
else if (theOp == "References")
|
|
theBody = References ();
|
|
else if (theOp == "ReferenceNames")
|
|
theBody = ReferenceNames ();
|
|
else if (theOp == "CUSTOM")
|
|
theBody = DoCustomOperation ();
|
|
else
|
|
alert ("Unsupported operation: " + theOp);
|
|
|
|
if (bSend)
|
|
ShowResults(theRequest, theBody);
|
|
else if (null != theBody)
|
|
ShowRequest(theBody);
|
|
}
|
|
|
|
// ----- Scripts to control XSL Processing ------
|
|
|
|
function update()
|
|
{
|
|
// See if there is a stylesheet qualifier on the instance
|
|
var myStylenew = theXMLResponse.selectSingleNode("/CIM//QUALIFIER[@NAME='stylesheet']");
|
|
if(myStylenew)
|
|
{
|
|
var theStyleSheet = myStylenew.text;
|
|
if(theStyleSheet)
|
|
{
|
|
var tmp = document.all.item("SpecificStyleSheet");
|
|
// Add a new selection
|
|
var theNewOption = document.createElement("OPTION");
|
|
theNewOption.text = theStyleSheet;
|
|
theNewOption.value = theStyleSheet;
|
|
theNewOption.id = "SpecificStyleSheet";
|
|
if(tmp == null)
|
|
{
|
|
document.all("stylesheetSelect").options.add(theNewOption);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
document.all("stylesheetSelect").options.remove(8);
|
|
|
|
parent.results.display(theXMLResponse.transformNode(style));
|
|
}
|
|
|
|
function changeXSL(xsldoc)
|
|
{
|
|
styleURL = xsldoc;
|
|
style.load(styleURL);
|
|
update();
|
|
}
|
|
|
|
// ----- Scripts to activate buttons ------
|
|
function over(item)
|
|
{
|
|
item.style.color = "black";
|
|
}
|
|
|
|
function out(item) {
|
|
item.style.color = "gray";
|
|
}
|
|
|
|
// called by parent frame when the whole frameset is ready
|
|
function init()
|
|
{
|
|
style = new ActiveXObject("Microsoft.XMLDOM");
|
|
style.async = false;
|
|
style.load("raw-xml.xsl");
|
|
methodDataStyle = new ActiveXObject("Microsoft.XMLDOM");
|
|
methodDataStyle.async = false;
|
|
methodDataStyle.load("methoddata.xsl");
|
|
theRequest = new ActiveXObject("Microsoft.XMLHTTP");
|
|
theXMLResponse = new ActiveXObject("Microsoft.XMLDOM");
|
|
operationId = "EnumerateInstances";
|
|
}
|
|
|
|
function GetOptions()
|
|
{
|
|
document.all("ResponseStatus").innerText = "";
|
|
theRequest.open("OPTIONS", document.all.urlbox.value, false);
|
|
return null;
|
|
}
|
|
|
|
function InitOperation (method)
|
|
{
|
|
document.all("ResponseStatus").innerText = "";
|
|
document.all("ResponseHeaders").innerText = "";
|
|
if (mpost.checked)
|
|
{
|
|
theRequest.open("M-POST", document.all.urlbox.value, false);
|
|
theRequest.setRequestHeader("Content-Type", "application/xml;charset=\"utf-8\"");
|
|
theRequest.setRequestHeader("Man", "http://www.dmtf.org/cim/mapping/http/v1.0;ns=73");
|
|
theRequest.setRequestHeader("73-CIMOperation", "MethodCall");
|
|
theRequest.setRequestHeader("73-CIMMethod", method);
|
|
theRequest.setRequestHeader("73-CIMObject", document.all.namespacebox.value);
|
|
theRequest.setRequestHeader("73-CIMProtocolVersion", "1.0");
|
|
theRequest.setRequestHeader("73-MicrosoftWMI", "Hi");
|
|
}
|
|
else
|
|
{
|
|
theRequest.open("POST", document.all.urlbox.value, false);
|
|
theRequest.setRequestHeader("Content-Type", "application/xml;charset=\"utf-8\"");
|
|
theRequest.setRequestHeader("CIMOperation", "MethodCall");
|
|
theRequest.setRequestHeader("CIMMethod", method);
|
|
theRequest.setRequestHeader("CIMObject", document.all.namespacebox.value);
|
|
theRequest.setRequestHeader("CIMProtocolVersion", "1.0");
|
|
theRequest.setRequestHeader("MicrosoftWMI", "Hi");
|
|
}
|
|
}
|
|
|
|
function GetObjectNameParameter ()
|
|
{
|
|
var str = "<IPARAMVALUE NAME=\"ObjectName\">";
|
|
|
|
var objectPath = new String (document.all.classbox.value);
|
|
|
|
if (-1 == objectPath.indexOf (".", 0))
|
|
{
|
|
// a class name
|
|
str = str + "<CLASSNAME NAME=\"" +
|
|
objectPath + "\">";
|
|
}
|
|
else
|
|
{
|
|
// an instance name
|
|
str = str + GetInstanceName (objectPath);
|
|
}
|
|
|
|
str = str + "</IPARAMVALUE>";
|
|
return str;
|
|
}
|
|
|
|
function GetClassNameParameter ()
|
|
{
|
|
return ("<IPARAMVALUE NAME=\"ClassName\"><CLASSNAME NAME=\"" +
|
|
document.all.classbox.value + "\"/></IPARAMVALUE>");
|
|
}
|
|
|
|
function GetInstanceNameParameter ()
|
|
{
|
|
var str = "<IPARAMVALUE NAME=\"InstanceName\">";
|
|
str = str + GetInstanceName (document.all.classbox.value);
|
|
str = str + "</IPARAMVALUE>";
|
|
return str;
|
|
}
|
|
|
|
function GetReference (inStr)
|
|
{
|
|
// TODO - just handle INSTANCENAME case for now
|
|
return GetInstanceName (inStr);
|
|
}
|
|
|
|
function GetInstanceName (inStr)
|
|
{
|
|
var pathValue = new String (inStr);
|
|
var str = "<INSTANCENAME CLASSNAME=\"";
|
|
|
|
// Step 1 - get the class name
|
|
var startIndex = pathValue.indexOf (".");
|
|
str = str + pathValue.substr (0, startIndex) + "\">";
|
|
startIndex = startIndex + 1;
|
|
|
|
// Step 2 - get the keybindings
|
|
while (-1 != (index = pathValue.indexOf ("=", startIndex)))
|
|
{
|
|
str = str +
|
|
'<KEYBINDING NAME="' + pathValue.substr (startIndex,
|
|
index - startIndex) + '">';
|
|
|
|
// Get the key value
|
|
startIndex = index + 1;
|
|
var valueStr;
|
|
|
|
if (-1 != (index = pathValue.indexOf (",", startIndex)))
|
|
{
|
|
valueStr = new String (pathValue.substr (startIndex,
|
|
index - startIndex));
|
|
startIndex = index + 1;
|
|
}
|
|
else
|
|
{
|
|
valueStr = new String (pathValue.substr (startIndex));
|
|
startIndex = pathValue.length;
|
|
}
|
|
|
|
str = str + '<KEYVALUE';
|
|
|
|
// Work out VALUETYPE attribute
|
|
if (valueStr.charAt (0) == '"')
|
|
{
|
|
// string
|
|
str = str + '>' + valueStr.substr (1, valueStr.length-2);
|
|
// TODO - this COULD be an object path - need to
|
|
// trap that case and do a VALUE.REFERENCE instead
|
|
}
|
|
else if (!isNaN (parseInt (valueStr)))
|
|
{
|
|
// numeric
|
|
str = str + ' VALUETYPE="numeric">' + valueStr;
|
|
}
|
|
else
|
|
{
|
|
// assume boolean
|
|
str = str + ' VALUETYPE="boolean">' + valueStr;
|
|
}
|
|
|
|
str = str + "</KEYVALUE></KEYBINDING>";
|
|
}
|
|
|
|
str = str + "</INSTANCENAME>";
|
|
return (str);
|
|
}
|
|
|
|
function GetIncludeQualifiersParameter ()
|
|
{
|
|
var IncludeQualifiers = "FALSE";
|
|
|
|
if (includeQualifiers.checked)
|
|
IncludeQualifiers = "TRUE";
|
|
|
|
return ("<IPARAMVALUE NAME=\"IncludeQualifiers\"><VALUE>" +
|
|
IncludeQualifiers + "</VALUE></IPARAMVALUE>");
|
|
}
|
|
|
|
function GetLocalOnlyParameter ()
|
|
{
|
|
var LocalOnly = "FALSE";
|
|
|
|
if (localOnly.checked)
|
|
LocalOnly = "TRUE";
|
|
|
|
return ("<IPARAMVALUE NAME=\"LocalOnly\"><VALUE>" + LocalOnly +
|
|
"</VALUE></IPARAMVALUE>");
|
|
}
|
|
|
|
function GetClassOriginParameter ()
|
|
{
|
|
var ClassOrigin = "FALSE";
|
|
|
|
if (includeClassOrigin.checked)
|
|
ClassOrigin = "TRUE";
|
|
|
|
return ("<IPARAMVALUE NAME=\"IncludeClassOrigin\"><VALUE>" +
|
|
ClassOrigin + "</VALUE></IPARAMVALUE>");
|
|
}
|
|
|
|
function GetPropertyNameParameter ()
|
|
{
|
|
return ("<IPARAMVALUE NAME=\"PropertyName\"><VALUE>" +
|
|
propertyBox.value + "</VALUE></IPARAMVALUE>");
|
|
}
|
|
|
|
function GetAssocClassParameter ()
|
|
{
|
|
if (assocClass.value)
|
|
{
|
|
return ("<IPARAMVALUE NAME=\"AssocClass\"><VALUE>" +
|
|
assocClass.value + "</VALUE></IPARAMVALUE>");
|
|
}
|
|
else
|
|
return "";
|
|
}
|
|
|
|
function GetResultClassParameter ()
|
|
{
|
|
if (document.all.resultClass.value)
|
|
{
|
|
return ("<IPARAMVALUE NAME=\"ResultClass\"><VALUE>" +
|
|
document.all.resultClass.value + "</VALUE></IPARAMVALUE>");
|
|
}
|
|
else
|
|
return "";
|
|
}
|
|
|
|
function GetRoleParameter ()
|
|
{
|
|
if (role.value)
|
|
return ("<IPARAMVALUE NAME=\"Role\"><VALUE>" +
|
|
role.value + "</VALUE></IPARAMVALUE>");
|
|
else
|
|
return "";
|
|
}
|
|
|
|
function GetResultRoleParameter ()
|
|
{
|
|
if (resultRole.value)
|
|
return ("<IPARAMVALUE NAME=\"ResultRole\"><VALUE>" +
|
|
resultRole.value + "</VALUE></IPARAMVALUE>");
|
|
else
|
|
return "";
|
|
}
|
|
|
|
function GetPropertyListParameter ()
|
|
{
|
|
var strValue = new String (propertyBox.value);
|
|
var value = "";
|
|
|
|
if (0 < strValue.length)
|
|
{
|
|
value = "<IPARAMVALUE NAME=\"PropertyList\"><VALUE.ARRAY>";
|
|
|
|
var startIndex = 0;
|
|
|
|
while (-1 != (index = strValue.indexOf (",", startIndex)))
|
|
{
|
|
value = value +
|
|
"<VALUE>" + strValue.substr (startIndex,
|
|
index - startIndex) + "</VALUE>";
|
|
startIndex = index + 1;
|
|
}
|
|
|
|
// Get the last element (TODO - empty arrays?)
|
|
value = value + "<VALUE>"
|
|
+ strValue.substr (startIndex) + "</VALUE>";
|
|
|
|
value = value + "</VALUE.ARRAY></IPARAMVALUE>"
|
|
}
|
|
|
|
return value;
|
|
}
|
|
|
|
function GetPropertyValueParameter ()
|
|
{
|
|
var strValue = new String (propertyValueBox.value);
|
|
var value = "<IPARAMVALUE NAME=\"NewValue\"";
|
|
|
|
// TODO - if first characters are "ref:" then treat
|
|
// as reference value
|
|
if (strValue.length == 0)
|
|
{
|
|
// NULL value
|
|
value = value + "/>";
|
|
}
|
|
else if (strValue.substring (0,4) == new String("ref:"))
|
|
{
|
|
if (4 == strValue.length)
|
|
value = value + "/>";
|
|
else
|
|
{
|
|
value = value + "><VALUE.REFERENCE>" +
|
|
GetReference (strValue.substr (4)) +
|
|
"</VALUE.REFERENCE></IPARAMVALUE>";
|
|
}
|
|
}
|
|
else if (strValue.charAt (0) == '{')
|
|
{
|
|
value = value + "><VALUE.ARRAY>";
|
|
// Assume an array value
|
|
var startIndex = 1;
|
|
|
|
while (-1 != (index = strValue.indexOf (",", startIndex)))
|
|
{
|
|
// TODO - build up <VALUE.ARRAY> for this
|
|
value = value +
|
|
"<VALUE>" + strValue.substr (startIndex,
|
|
index - startIndex) + "</VALUE>";
|
|
startIndex = index + 1;
|
|
}
|
|
|
|
// Get the last element (TODO - empty arrays?)
|
|
value = value + "<VALUE>"
|
|
+ strValue.substr (startIndex,
|
|
strValue.indexOf("}",startIndex) - startIndex) + "</VALUE>";
|
|
|
|
value = value + "</VALUE.ARRAY></IPARAMVALUE>";
|
|
}
|
|
else
|
|
value = value + "><VALUE>" + strValue + "</VALUE></IPARAMVALUE>";
|
|
|
|
return value;
|
|
}
|
|
|
|
function GetDeepInheritanceParameter ()
|
|
{
|
|
var DeepInheritance = "FALSE";
|
|
|
|
if (deepInheritance.checked)
|
|
DeepInheritance = "TRUE";
|
|
|
|
return ("<IPARAMVALUE NAME=\"DeepInheritance\"><VALUE>" +
|
|
DeepInheritance + "</VALUE></IPARAMVALUE>");
|
|
}
|
|
|
|
function GetQueryParameter ()
|
|
{
|
|
return ("<IPARAMVALUE NAME=\"Query\"><VALUE>" +
|
|
document.all.querybox.value + "</VALUE></IPARAMVALUE>" );
|
|
}
|
|
|
|
function GetQueryLanguageParameter ()
|
|
{
|
|
return ("<IPARAMVALUE NAME=\"QueryLanguage\"><VALUE>" +
|
|
"WQL" + "</VALUE></IPARAMVALUE>");
|
|
}
|
|
|
|
function DoCustomOperation()
|
|
{
|
|
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
|
var theFile = fso.OpenTextFile(".\multireq.xml");
|
|
alert ("Hello");
|
|
}
|
|
|
|
function GetClass()
|
|
{
|
|
InitOperation ("GetClass");
|
|
|
|
return RequestPreamble ("GetClass") +
|
|
GetClassNameParameter () +
|
|
GetIncludeQualifiersParameter () +
|
|
GetLocalOnlyParameter () +
|
|
GetClassOriginParameter () +
|
|
GetPropertyListParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function DeleteClass()
|
|
{
|
|
InitOperation ("DeleteClass");
|
|
|
|
return RequestPreamble ("DeleteClass") +
|
|
GetClassNameParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function GetInstance ()
|
|
{
|
|
InitOperation ("GetInstance");
|
|
|
|
return RequestPreamble ("GetInstance") +
|
|
GetInstanceNameParameter () +
|
|
GetIncludeQualifiersParameter () +
|
|
GetLocalOnlyParameter () +
|
|
GetClassOriginParameter () +
|
|
GetPropertyListParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function DeleteInstance ()
|
|
{
|
|
InitOperation ("DeleteInstance");
|
|
|
|
return RequestPreamble ("DeleteInstance") +
|
|
GetInstanceNameParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function EnumInstance()
|
|
{
|
|
InitOperation ("EnumerateInstances");
|
|
|
|
return RequestPreamble ("EnumerateInstances") +
|
|
GetClassNameParameter () +
|
|
GetIncludeQualifiersParameter () +
|
|
GetLocalOnlyParameter () +
|
|
GetClassOriginParameter () +
|
|
GetDeepInheritanceParameter () +
|
|
GetPropertyListParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function EnumClass()
|
|
{
|
|
InitOperation ("EnumerateClasses");
|
|
|
|
return RequestPreamble ("EnumerateClasses") +
|
|
GetClassNameParameter () +
|
|
GetIncludeQualifiersParameter () +
|
|
GetLocalOnlyParameter () +
|
|
GetClassOriginParameter () +
|
|
GetDeepInheritanceParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function EnumInstanceNames()
|
|
{
|
|
InitOperation ("EnumerateInstanceNames");
|
|
|
|
return RequestPreamble ("EnumerateInstanceNames") +
|
|
GetClassNameParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function EnumClassNames()
|
|
{
|
|
InitOperation ("EnumerateClassNames");
|
|
|
|
return RequestPreamble ("EnumerateClassNames") +
|
|
GetClassNameParameter () +
|
|
GetDeepInheritanceParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function ExecQuery()
|
|
{
|
|
InitOperation ("ExecQuery");
|
|
|
|
return RequestPreamble ("ExecQuery") +
|
|
GetQueryParameter () +
|
|
GetQueryLanguageParameter () +
|
|
GetIncludeQualifiersParameter () +
|
|
GetClassOriginParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function GetProperty ()
|
|
{
|
|
InitOperation ("GetProperty");
|
|
|
|
return RequestPreamble ("GetProperty") +
|
|
GetInstanceNameParameter () +
|
|
GetPropertyNameParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function SetProperty ()
|
|
{
|
|
InitOperation ("SetProperty");
|
|
|
|
return RequestPreamble ("SetProperty") +
|
|
GetInstanceNameParameter () +
|
|
GetPropertyNameParameter () +
|
|
GetPropertyValueParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function Associators()
|
|
{
|
|
InitOperation ("Associators");
|
|
|
|
return RequestPreamble ("Associators") +
|
|
GetObjectNameParameter () +
|
|
GetIncludeQualifiersParameter () +
|
|
GetClassOriginParameter () +
|
|
GetAssocClassParameter () +
|
|
GetResultClassParameter () +
|
|
GetRoleParameter () +
|
|
GetResultRoleParameter () +
|
|
GetPropertyListParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function AssociatorNames()
|
|
{
|
|
InitOperation ("AssociatorNames");
|
|
|
|
return RequestPreamble ("AssociatorNames") +
|
|
GetObjectNameParameter () +
|
|
GetAssocClassParameter () +
|
|
GetResultClassParameter () +
|
|
GetRoleParameter () +
|
|
GetResultRoleParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function References()
|
|
{
|
|
InitOperation ("References");
|
|
|
|
return RequestPreamble ("References") +
|
|
GetObjectNameParameter () +
|
|
GetIncludeQualifiersParameter () +
|
|
GetClassOriginParameter () +
|
|
GetResultClassParameter () +
|
|
GetRoleParameter () +
|
|
GetPropertyListParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function ReferenceNames()
|
|
{
|
|
InitOperation ("ReferenceNames");
|
|
|
|
return RequestPreamble ("ReferenceNames") +
|
|
GetObjectNameParameter () +
|
|
GetResultClassParameter () +
|
|
GetRoleParameter () +
|
|
RequestPostamble ();
|
|
}
|
|
|
|
function ShowResults(theXMLRequest, theXMLBody)
|
|
{
|
|
theXMLRequest.send (theXMLBody);
|
|
theXMLResponse.async = false;
|
|
theXMLResponse.validateOnParse = false;
|
|
theXMLResponse.resolveExternals = false;
|
|
|
|
document.all("ResponseStatus").innerText = theXMLRequest.status;
|
|
document.all("ResponseHeaders").innerText = theXMLRequest.getAllResponseHeaders();
|
|
theXMLResponse.loadXML(theXMLRequest.responseText);
|
|
var parseError = theXMLResponse.parseError;
|
|
if (parseError && (0 < parseError.errorCode))
|
|
{
|
|
alert (parseError.errorCode);
|
|
alert (parseError.reason);
|
|
}
|
|
update(theXMLResponse);
|
|
}
|
|
|
|
function ShowRequest(theBody)
|
|
{
|
|
theXMLResponse.loadXML(theBody);
|
|
update(theXMLResponse);
|
|
}
|
|
|
|
function ParseNamespace (nsPath)
|
|
{
|
|
var parsedPath = "";
|
|
var inputPath = new String (nsPath);
|
|
var startIndex = 0;
|
|
|
|
while ((-1 != (index = inputPath.indexOf ("/", startIndex))) ||
|
|
(-1 != (index = inputPath.indexOf ("\\", startIndex))))
|
|
{
|
|
parsedPath = parsedPath +
|
|
'<NAMESPACE NAME="' + inputPath.substr (startIndex,
|
|
index - startIndex) + '"/>';
|
|
startIndex = index + 1;
|
|
}
|
|
|
|
parsedPath = parsedPath + '<NAMESPACE NAME="'
|
|
+ inputPath.substr (startIndex) + '"/>';
|
|
|
|
return (parsedPath);
|
|
}
|
|
|
|
function RequestPreamble (method)
|
|
{
|
|
var str = "<?xml version=\"1.0\" ?>" +
|
|
"<CIM CIMVERSION=\"2.0\" DTDVERSION=\"2.0\">" +
|
|
"<MESSAGE ID=\"877\" PROTOCOLVERSION=\"1.0\">" +
|
|
"<SIMPLEREQ>" +
|
|
"<IMETHODCALL NAME=\"" + method + "\">" +
|
|
"<LOCALNAMESPACEPATH>" +
|
|
ParseNamespace (document.all.namespacebox.value) +
|
|
"</LOCALNAMESPACEPATH>";
|
|
|
|
return (str);
|
|
}
|
|
|
|
function RequestPostamble ()
|
|
{
|
|
return ("</IMETHODCALL></SIMPLEREQ></MESSAGE></CIM>");
|
|
}
|
|
|
|
</SCRIPT>
|
|
|
|
<SCRIPT LANGUAGE="vbscript">
|
|
Function ReadFromFile()
|
|
Dim totalString
|
|
Set fs = CreateObject("Scripting.FileSystemObject")
|
|
Set f = fs.GetFile("d:\\try.xml")
|
|
Set ts = f.OpenAsTextStream(1)
|
|
Do While ts.AtEndOfStream <> True
|
|
totalString = totalString + ts.ReadLine
|
|
Loop
|
|
ts.Close
|
|
ReadFromFile = totalString
|
|
MsgBox totalString
|
|
|
|
End Function
|
|
</SCRIPT>
|
|
|
|
<BODY>
|
|
<DIV CLASS="headline">XML Client</DIV>
|
|
<DIV CLASS="instructions">
|
|
Use this client to perform CIM Operations </DIV>
|
|
<DIV class=group>
|
|
<TABLE align=left border=0 cellPadding=1 cellSpacing=1 width="75%">
|
|
|
|
<TR>
|
|
<TD><FONT size=1><LABEL>CIM Server URL </LABEL></FONT></TD>
|
|
<TD><INPUT id=urlbox size=35 value=http://localhost/cimom></TD></TR>
|
|
<TR>
|
|
<TD><FONT
|
|
size=1><LABEL>Namespace </LABEL></FONT></TD>
|
|
<TD><INPUT id=namespacebox value=root\cimv2
|
|
style="HEIGHT: 22px; WIDTH: 243px"></TD></TR>
|
|
<TR>
|
|
<TD><FONT
|
|
size=1><LABEL>Object </LABEL></FONT></TD>
|
|
<TD><INPUT id=classbox style="HEIGHT: 22px; LEFT: 1px;
|
|
TOP: 2px; WIDTH: 243px"
|
|
value=Win32_LogicalDisk></TD></TR>
|
|
<TR>
|
|
<TD><FONT
|
|
size=1><LABEL>Query</LABEL>
|
|
</FONT></TD>
|
|
<TD><TEXTAREA id=querybox rows=5 style="HEIGHT: 26px; WIDTH: 270px">select * from win32_processor</TEXTAREA></TD></TR>
|
|
<TR>
|
|
<TD><FONT size=1>Property
|
|
Name</FONT></TD>
|
|
<TD><INPUT id=propertyBox name=text1
|
|
style="HEIGHT: 22px; WIDTH: 243px"></TD></TR>
|
|
<TR>
|
|
<TD><FONT size=1>Property Value</FONT></TD>
|
|
<TD><INPUT id=propertyValueBox name=text2
|
|
style="HEIGHT: 22px; WIDTH: 243px"></TD></TR>
|
|
<TR>
|
|
<TD><FONT size=1>Class Origin </FONT></TD>
|
|
<TD><INPUT id=includeClassOrigin name=checkbox2 type=checkbox>
|
|
<FONT size=1>Assoc Class <INPUT
|
|
id=assocClass name=text3
|
|
style="HEIGHT: 22px; WIDTH: 123px"> </FONT></TD></TR>
|
|
<TR>
|
|
<TD><FONT size=1>Deep Inheritance</FONT></TD>
|
|
<TD><INPUT CHECKED id=deepInheritance name=checkbox4 type=checkbox> <FONT
|
|
size=1>Result Class <INPUT id=resultClass name=text3
|
|
style="HEIGHT: 22px; WIDTH: 123px"></FONT></TD></TR>
|
|
<TR>
|
|
<TD><FONT size=1>Local Only</FONT></TD>
|
|
<TD><INPUT CHECKED id=localOnly name=checkbox3 type=checkbox> <FONT
|
|
size=1>Role
|
|
<INPUT id=role name=text3
|
|
style="HEIGHT: 22px; WIDTH: 123px"></FONT></TD></TR>
|
|
<TR>
|
|
<TD><FONT
|
|
size=1>Qualifiers </FONT></TD>
|
|
<TD><INPUT id=includeQualifiers name=checkbox1
|
|
type=checkbox> <FONT size=1>Result
|
|
Role <INPUT id=resultRole name=text3
|
|
style="HEIGHT: 22px; WIDTH: 123px"></FONT></TD></TR></TABLE></DIV>
|
|
<DIV class=group><BR> </DIV>
|
|
<DIV class=group> </DIV>
|
|
<DIV class=group> </DIV>
|
|
<DIV class=group> </DIV>
|
|
<DIV class=group> </DIV>
|
|
<DIV class=group> </DIV>
|
|
<DIV class=group> </DIV>
|
|
<DIV class=group> </DIV>
|
|
<DIV class=group> </DIV>
|
|
<DIV class=group> </DIV>
|
|
<DIV class=group> </DIV>
|
|
<DIV class=group> </DIV>
|
|
<DIV class=group><BR> </DIV>
|
|
<DIV class=group>
|
|
Operation
|
|
<SELECT id=operation name=select1 onChange='UpdateOperationId()' style="HEIGHT: 22px; WIDTH: 190px">
|
|
<OPTION value=Associators>Associators</OPTION>
|
|
<OPTION value=AssociatorNames>AssociatorNames</OPTION>
|
|
<OPTION value=CreateClass>CreateClass</OPTION>
|
|
<OPTION value=CreateInstance>CreateInstance</OPTION>
|
|
<OPTION value=CUSTOM>CUSTOM</OPTION>
|
|
<OPTION value=DeleteClass>DeleteClass</OPTION>
|
|
<OPTION value=DeleteInstance>DeleteInstance</OPTION>
|
|
<OPTION value=DeleteQualifier>DeleteQualifier</OPTION>
|
|
<OPTION value=EnumerateClasses>EnumerateClasses</OPTION>
|
|
<OPTION value=EnumerateClassNames>EnumerateClassNames</OPTION>
|
|
<OPTION selected value=EnumerateInstances>EnumerateInstances</OPTION>
|
|
<OPTION value=EnumerateInstanceNames>EnumerateInstanceNames</OPTION>
|
|
<OPTION value=EnumerateQualifiers>EnumerateQualifiers</OPTION>
|
|
<OPTION value=ExecQuery>ExecQuery</OPTION>
|
|
<OPTION value=GetClass>GetClass</OPTION>
|
|
<OPTION value=GetInstance>GetInstance</OPTION>
|
|
<OPTION value=GetProperty>GetProperty</OPTION>
|
|
<OPTION value=GetQualifier>GetQualifier</OPTION>
|
|
<OPTION value=ModifyClass>ModifyClass</OPTION>
|
|
<OPTION value=ModifyInstance>ModifyInstance</OPTION>
|
|
<OPTION value=OPTIONS>OPTIONS</OPTION>
|
|
<OPTION value=References>References</OPTION>
|
|
<OPTION value=ReferenceNames>ReferenceNames</OPTION>
|
|
<OPTION value=SetQualifier>SetQualifier</OPTION>
|
|
<OPTION value=SetProperty>SetProperty</OPTION>
|
|
</SELECT>
|
|
<BUTTON id=operationButton onclick=DoOperation(true) style="LEFT: 221px; TOP: 248px">Send</BUTTON>
|
|
<BUTTON id=fileButton onclick=ReadFromFile("try.xml") style="LEFT: 221px; TOP: 248px">ReadFromFile</BUTTON>
|
|
<TEXTAREA id=inputbox rows=5 style="HEIGHT: 26px; WIDTH: 270px">Method</TEXTAREA>
|
|
<INPUT id=showButton name=button1 style="LEFT: 326px; TOP: 334px" type=button value=Show
|
|
onclick=DoOperation(false)></DIV>
|
|
<DIV class=group>M-POST <INPUT
|
|
id=mpost name=checkbox5 type=checkbox></DIV>
|
|
<DIV class=instructions> </DIV>
|
|
<DIV class=instructions> The XML data displayed here is taken from live
|
|
data captured from Microsoft's implementation of CIM. </DIV>
|
|
<DIV class=instructions>
|
|
<HR>
|
|
</DIV>
|
|
|
|
<DIV CLASS="group" id=stylesheet>XSL Stylesheet
|
|
<SELECT id=stylesheetSelect name=select2 onChange='UpdateStylesheet()' style="HEIGHT: 22px; WIDTH: 165px">
|
|
<OPTION selected id=Raw value=Raw>Raw XML</OPTION>
|
|
<OPTION id=MOF value=MOF>Managed Object Format</OPTION>
|
|
<OPTION id=ClassNames value=ClassNames>Class Names</OPTION>
|
|
<OPTION id=PropertyType value=PropertyType>Property Type Table</OPTION>
|
|
<OPTION id=PropertyValue value=PropertyValue>Property Value Table</OPTION>
|
|
<OPTION id=PropValue value=PropValue>Single Property Value</OPTION>
|
|
<OPTION id=ClassPage value=ClassPage>Class Page</OPTION>
|
|
<OPTION id=DetailPage value=DetailPage>Details Page</OPTION>
|
|
</SELECT> <BR><BR>
|
|
<HR>
|
|
|
|
<LABEL>HTTP Response Status</LABEL> <SPAN STYLE="COLOR: red" ID="ResponseStatus"></SPAN>
|
|
<HR>
|
|
<LABEL>HTTP Response Headers</LABEL>
|
|
<BR>
|
|
<SPAN STYLE="COLOR: red" ID="ResponseHeaders"></SPAN></DIV>
|
|
</BODY>
|
|
</HTML>
|