UNPKG

meshcentral

Version:

Web based remote computer management server

1 lines • 6.38 kB
var CreateWsmanComm=function(e,t,r,n,a){var o={};function s(e){var t="00000000"+e.toString(16);return t.substring(t.length-8)}function c(){for(i in o.socketState=2,o.pendingAjaxCall)o.sendRequest(o.pendingAjaxCall[i][0],o.pendingAjaxCall[i][3],o.pendingAjaxCall[i][4])}function l(e){var t;for(o.socketAccumulator+=(t=new Uint8Array(e.data),String.fromCharCode.apply(null,t));;){if(0==o.socketParseState){var r=o.socketAccumulator.indexOf("\r\n\r\n");if(r<0)return;if(o.socketHeader=o.socketAccumulator.substring(0,r).split("\r\n"),null==o.amtVersion)for(var n in o.socketHeader)0==o.socketHeader[n].indexOf("Server: Intel(R) Active Management Technology ")&&(o.amtVersion=o.socketHeader[n].substring(46));for(n in o.socketAccumulator=o.socketAccumulator.substring(r+4),o.socketParseState=1,o.socketData="",o.socketXHeader={Directive:o.socketHeader[0].split(" ")},o.socketHeader)if(0!=n){var a=o.socketHeader[n].indexOf(":");o.socketXHeader[o.socketHeader[n].substring(0,a).toLowerCase()]=o.socketHeader[n].substring(a+2)}}if(1==o.socketParseState){var s=-1;if(null==o.socketXHeader.connection||"close"!=o.socketXHeader.connection.toLowerCase()||null!=o.socketXHeader["transfer-encoding"]&&"chunked"==o.socketXHeader["transfer-encoding"].toLowerCase())if(null!=o.socketXHeader["content-length"]){if(s=parseInt(o.socketXHeader["content-length"]),o.socketAccumulator.length<s)return;var c=o.socketAccumulator.substring(0,s);o.socketAccumulator=o.socketAccumulator.substring(s),o.socketData=c,s=0}else{var l=o.socketAccumulator.indexOf("\r\n");if(l<0)return;if(s=parseInt(o.socketAccumulator.substring(0,l),16),isNaN(s))return void(o.websocket&&o.websocket.close());if(o.socketAccumulator.length<l+2+s+2)return;c=o.socketAccumulator.substring(l+2,l+2+s);o.socketAccumulator=o.socketAccumulator.substring(l+2+s+2),o.socketData+=c}else s=0;0==s&&(u(o.socketXHeader,o.socketData),o.socketParseState=0,o.socketHeader=null)}}}function u(e,t){var r=parseInt(e.Directive[1]);if(isNaN(r)&&(r=602),401==r&&++o.authcounter<3){if(o.challengeParams=o.parseDigest(e["www-authenticate"]),null!=o.challengeParams.qop){var n=o.challengeParams.qop.split(",");for(var a in n)n[a]=n[a].trim();n.indexOf("auth-int")>=0?o.challengeParams.qop="auth-int":o.challengeParams.qop="auth"}}else{var s=o.pendingAjaxCall.shift();o.authcounter=0,o.ActiveAjaxCount--,o.gotNextMessages(t,"success",{status:r},s),o.PerformNextAjax()}}function g(e){if(o.socketState=0,null!=o.socket&&(o.socket.close(),o.socket=null),o.pendingAjaxCall.length>0){var t=o.pendingAjaxCall.shift(),r=t[5];o.PerformAjaxExNodeJS2(t[0],t[1],t[2],t[3],t[4],--r)}}return o.PendingAjax=[],o.ActiveAjaxCount=0,o.MaxActiveAjaxCount=1,o.FailAllError=0,o.challengeParams=null,o.noncecounter=1,o.authcounter=0,o.socket=null,o.socketState=0,o.host=e,o.port=t,o.user=r,o.pass=n,o.tls=a,o.tlsv1only=1,o.cnonce=Math.random().toString(36).substring(7),o.PerformAjax=function(e,t,r,n,a,s){o.ActiveAjaxCount<o.MaxActiveAjaxCount&&0==o.PendingAjax.length?o.PerformAjaxEx(e,t,r,a,s):1==n?o.PendingAjax.unshift([e,t,r,a,s]):o.PendingAjax.push([e,t,r,a,s])},o.PerformNextAjax=function(){if(!(o.ActiveAjaxCount>=o.MaxActiveAjaxCount||0==o.PendingAjax.length)){var e=o.PendingAjax.shift();o.PerformAjaxEx(e[0],e[1],e[2],e[3],e[4]),o.PerformNextAjax()}},o.PerformAjaxEx=function(e,t,r,n,a){if(0==o.FailAllError)return e||(e=""),o.ActiveAjaxCount++,o.PerformAjaxExNodeJS(e,t,r,n,a);o.gotNextMessagesError({status:o.FailAllError},"error",null,[e,t,r,n,a])},o.pendingAjaxCall=[],o.PerformAjaxExNodeJS=function(e,t,r,n,a){o.PerformAjaxExNodeJS2(e,t,r,n,a,3)},o.PerformAjaxExNodeJS2=function(e,t,r,n,a,s){if(s<=0||0!=o.FailAllError)return o.ActiveAjaxCount--,999!=o.FailAllError&&o.gotNextMessages(null,"error",{status:0==o.FailAllError?408:o.FailAllError},[e,t,r,n,a]),void o.PerformNextAjax();o.pendingAjaxCall.push([e,t,r,n,a,s]),0==o.socketState?o.xxConnectHttpSocket():2==o.socketState&&o.sendRequest(e,n,a)},o.sendRequest=function(e,t,r){var n=(r=r||"POST")+" "+(t=t||"/wsman")+" HTTP/1.1\r\n";if(null!=o.challengeParams){var a=hex_md5(hex_md5(o.user+":"+o.challengeParams.realm+":"+o.pass)+":"+o.challengeParams.nonce+":"+s(o.noncecounter)+":"+o.cnonce+":"+o.challengeParams.qop+":"+hex_md5(r+":"+t+("auth-int"==o.challengeParams.qop?":"+hex_md5(e):"")));n+="Authorization: "+o.renderDigest({username:o.user,realm:o.challengeParams.realm,nonce:o.challengeParams.nonce,uri:t,qop:o.challengeParams.qop,response:a,nc:s(o.noncecounter++),cnonce:o.cnonce})+"\r\n"}!function(e){if(2==o.socketState&&null!=o.socket&&o.socket.readyState==WebSocket.OPEN){for(var t=new Uint8Array(e.length),r=0;r<e.length;++r)t[r]=e.charCodeAt(r);try{o.socket.send(t.buffer)}catch(e){}}}(n+="Host: "+o.host+":"+o.port+"\r\nTransfer-Encoding: chunked\r\n\r\n"+e.length.toString(16).toUpperCase()+"\r\n"+e+"\r\n0\r\n\r\n")},o.parseDigest=function(e){return(t=e.substring(7),t.split(",").reduce((function(e,t){return e.ic?e.st[e.st.length-1]+=","+t:e.st.push(t),t.split('"').length%2==0&&(e.ic=!e.ic),e}),{st:[],ic:!1}).st).reduce((function(e,t){var r=t.trim().split("=");return e[r[0]]=r[1].replace(new RegExp('"',"g"),""),e}),{});var t},o.renderDigest=function(e){var t=[];for(i in e)t.push(i);return"Digest "+t.reduce((function(t,r){return t+","+("nc"==r||"qop"==r?r+"="+e[r]:r+'="'+e[r]+'"')}),"").substring(1)},o.xxConnectHttpSocket=function(){o.socketParseState=0,o.socketAccumulator="",o.socketHeader=null,o.socketData="",o.socketState=1,o.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/webrelay.ashx?p=1&host="+o.host+"&port="+o.port+"&tls="+o.tls+"&tlsv1only="+o.tlsv1only+("*"==r?"&serverauth=1":"")+(void 0===n?"&serverauth=1&user="+r:"")),o.socket.binaryType="arraybuffer",o.socket.onopen=c,o.socket.onmessage=l,o.socket.onclose=g},o.gotNextMessages=function(e,t,r,n){999!=o.FailAllError&&(0==o.FailAllError?200==r.status?n[1](e,200,n[2]):n[1](null,r.status,n[2]):n[1](null,o.FailAllError,n[2]))},o.gotNextMessagesError=function(e,t,r,n){999!=o.FailAllError&&(0==o.FailAllError?n[1](o,null,{Header:{HttpError:e.status}},e.status,n[2]):n[1](null,o.FailAllError,n[2]))},o.CancelAllQueries=function(e){for(;o.PendingAjax.length>0;){var t=o.PendingAjax.shift();t[1](null,e,t[2])}null!=o.websocket&&(o.websocket.close(),o.websocket=null,o.socketState=0)},o}