meshcentral
Version:
Web based remote computer management server
1 lines • 5.58 kB
JavaScript
try{Object.defineProperty(Array.prototype,"peek",{value:function(){return 0<this.length?this[this.length-1]:void 0}})}catch(e){}function _ParseWsmanRec(e){for(var t={},a=0;a<e.childNodes.length;a++){var r,n=e.childNodes[a],l=("false"==(r="true"==(r=null==n.childElementCount||0==n.childElementCount?n.textContent:_ParseWsmanRec(n))?!0:r)&&(r=!1),r=parseInt(r)+""===r?parseInt(r):r);if(null!=n.attributes&&0<n.attributes.length)for(var l={Value:r},s=0;s<n.attributes.length;s++)l["@"+n.attributes[s].name]=n.attributes[s].value;t[n.localName]instanceof Array?t[n.localName].push(l):null==t[n.localName]?t[n.localName]=l:t[n.localName]=[t[n.localName],l]}return t}function _PutObjToBodyXml(e,t){if(!e||null==t)return"";var a,r=obj.GetNameFromUrl(e),n="<r:"+r+' xmlns:r="'+e+'">';for(a in t)if(t.hasOwnProperty(a)&&0!==a.indexOf("__")&&0!==a.indexOf("@")&&null!=t[a]&&"function"!=typeof t[a])if("object"==typeof t[a]&&t[a].ReferenceParameters){n+="<r:"+a+"><a:Address>"+t[a].Address+"</a:Address><a:ReferenceParameters><w:ResourceURI>"+t[a].ReferenceParameters.ResourceURI+"</w:ResourceURI><w:SelectorSet>";var l=t[a].ReferenceParameters.SelectorSet.Selector;if(Array.isArray(l))for(var s=0;s<l.length;s++)n+="<w:Selector"+_ObjectToXmlAttributes(l[s])+">"+l[s].Value+"</w:Selector>";else n+="<w:Selector"+_ObjectToXmlAttributes(l)+">"+l.Value+"</w:Selector>";n+="</w:SelectorSet></a:ReferenceParameters></r:"+a+">"}else if(Array.isArray(t[a]))for(s=0;s<t[a].length;s++)n+="<r:"+a+">"+t[a][s].toString()+"</r:"+a+">";else n+="<r:"+a+">"+t[a].toString()+"</r:"+a+">";return n+="</r:"+r+">"}function _treeBuilder(){this.tree=[],this.push=function(e){this.tree.push(e)},this.pop=function(){var e,t=this.tree.pop();return 0<this.tree.length&&((e=this.tree.peek()).childNodes.push(t),e.childElementCount=e.childNodes.length),t},this.peek=function(){return this.tree.peek()},this.addNamespace=function(e,t){if(this.tree.peek().nsTable[e]=t,0<this.tree.peek().attributes.length)for(var a=0;a<this.tree.peek().attributes;++a){var r=this.tree.peek().attributes[a];("*"==e&&r.name==r.localName||"*"!=e&&r.name!=r.localName&&r.name.split(":")[0]==e)&&(r.namespace=t)}},this.getNamespace=function(e){for(var t=this.tree.length-1;0<=t;--t)if(null!=this.tree[t].nsTable[e])return this.tree[t].nsTable[e];return null}}function _turnToXml(e){return null==e?null:{childNodes:[_turnToXmlRec(e)],getElementsByTagName:_getElementsByTagName,getChildElementsByTagName:_getChildElementsByTagName,getElementsByTagNameNS:_getElementsByTagNameNS}}function _getElementsByTagNameNS(t,a){var r=[];return _xmlTraverseAllRec(this.childNodes,function(e){e.localName!=a||e.namespace!=t&&"*"!=t||r.push(e)}),r}function _getElementsByTagName(t){var a=[];return _xmlTraverseAllRec(this.childNodes,function(e){e.localName==t&&a.push(e)}),a}function _getChildElementsByTagName(e){var t=[];if(null!=this.childNodes)for(var a in this.childNodes)this.childNodes[a].localName==e&&t.push(this.childNodes[a]);return t}function _getChildElementsByTagNameNS(e,t){var a=[];if(null!=this.childNodes)for(var r in this.childNodes)this.childNodes[r].localName!=t||"*"!=e&&this.childNodes[r].namespace!=e||a.push(this.childNodes[r]);return a}function _xmlTraverseAllRec(e,t){for(var a in e)t(e[a]),e[a].childNodes&&_xmlTraverseAllRec(e[a].childNodes,t)}function _turnToXmlRec(e){try{if(null==e)return null;var t,a=new _treeBuilder,r=null,n=e.split("<");for(t in n){var l=n[t].split(">"),s=l[0].split(" "),i=s[0];if(0<i.length&&"?"!=i[0])if("/"!=i[0]){var o=[],c=i.split(" ")[0].split(":"),m=1<c.length?c[1]:c[0];if(Object.defineProperty(o,"get",{value:function(){if(1==arguments.length){for(var e in this)if(this[e].name==arguments[0])return this[e]}else{if(2!=arguments.length)throw"attributes.get(): Invalid number of parameters";for(var e in this)if(this[e].name==arguments[1]&&("*"==arguments[0]||this[e].namespace==arguments[0]))return this[e]}}}),a.push({name:i,localName:m,getChildElementsByTagName:_getChildElementsByTagName,getElementsByTagNameNS:_getElementsByTagNameNS,getChildElementsByTagNameNS:_getChildElementsByTagNameNS,attributes:o,childNodes:[],nsTable:{}}),0<s.length){var h,u=!1;for(h in s){if("/"==s[h]){a.peek().namespace=a.peek().name==a.peek().localName?a.getNamespace("*"):a.getNamespace(a.peek().name.substring(0,a.peek().name.indexOf(":"))),a.peek().textContent="",r=a.pop(),u=!0;break}var d,N,g,f,p,y=s[h].indexOf("=");0<y&&(d=s[h].substring(0,y),N=s[h].substring(y+2,s[h].length-1),g=a.getNamespace("*"),"xmlns"==d?(a.addNamespace("*",N),g=N):d.startsWith("xmlns:")?a.addNamespace(d.substring(6),N):2==(f=d.split(":")).length&&(d=f[1],g=a.getNamespace(f[0])),p={name:d,value:N},null!=g&&(p.namespace=g),a.peek().attributes.push(p))}if(u)continue}a.peek().namespace=a.peek().name==a.peek().localName?a.getNamespace("*"):a.getNamespace(a.peek().name.substring(0,a.peek().name.indexOf(":"))),l[1]&&(a.peek().textContent=l[1])}else r=a.pop()}}catch(e){return null}return r}module.exports.ParseWsman=function(t){try{t.childNodes||(t=_turnToXml(t));var e={Header:{}},a=t.getElementsByTagName("Header")[0];if(!(a=a||t.getElementsByTagName("a:Header")[0]))return null;for(var r=0;r<a.childNodes.length;r++){var n=a.childNodes[r];e.Header[n.localName]=n.textContent}var l,s,i=t.getElementsByTagName("Body")[0];return(i=i||t.getElementsByTagName("a:Body")[0])?(0<i.childNodes.length&&(-1!=(s=(l=i.childNodes[0].localName).indexOf("_OUTPUT"))&&s==l.length-7&&(l=l.substring(0,l.length-7)),e.Header.Method=l,e.Body=_ParseWsmanRec(i.childNodes[0])),e):null}catch(e){return console.error("Unable to parse XML: "+t,e),null}}