meshcentral
Version:
Web based remote computer management server
1 lines • 11.6 kB
JavaScript
var CreateAmtRemoteIder=function(){var e={};function r(){urlvars&&urlvars.idertrace&&console.log(...arguments)}e.protocol=3,e.bytesToAmt=0,e.bytesFromAmt=0,e.rx_timeout=3e4,e.tx_timeout=0,e.heartbeat=2e4,e.version=1,e.acc="",e.inSequence=0,e.outSequence=0,e.iderinfo=null,e.enabled=!1,e.iderStart=0,e.floppy=null,e.cdrom=null,e.floppyReady=!1,e.cdromReady=!1,e.pingTimer=null;var n=String.fromCharCode(0,38,49,128,0,0,0,0,5,30,16,169,8,32,2,0,3,195,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,2,208,0,0),a=String.fromCharCode(0,92,36,128,0,0,0,0,1,10,0,1,0,0,0,0,2,0,0,0,3,22,0,160,0,0,0,0,0,18,2,0,0,0,0,0,0,0,160,0,0,0,5,30,16,169,8,32,2,0,3,195,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,2,208,0,0,8,10,0,0,0,0,0,0,0,0,0,0,11,6,0,0,0,17,36,49),o=String.fromCharCode(0,38,36,128,0,0,0,0,5,30,4,176,2,18,2,0,0,80,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,2,208,0,0),t=String.fromCharCode(0,92,36,128,0,0,0,0,1,10,0,1,0,0,0,0,2,0,0,0,3,22,0,160,0,0,0,0,0,18,2,0,0,0,0,0,0,0,160,0,0,0,5,30,4,176,2,18,2,0,0,80,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,2,208,0,0,8,10,0,0,0,0,0,0,0,0,0,0,11,6,0,0,0,17,36,49),d=String.fromCharCode(0,18,1,128,0,0,0,0,26,10,0,0,0,0,0,0,0,0,0,0),S=String.fromCharCode(0,18,1,128,0,0,0,0,29,10,0,0,0,0,0,0,0,0,0,0),c=String.fromCharCode(0,32,1,128,0,0,0,0,42,24,0,0,0,0,32,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0),i=String.fromCharCode(0,40,1,128,0,0,0,0,1,6,0,255,0,0,0,0,42,24,0,0,0,0,2,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0),C=(String.fromCharCode(0,0,0,40,0,0,0,8),String.fromCharCode(0,0,3,4,0,8,1,0)),s=String.fromCharCode(0,1,3,4,0,0,0,2),m=String.fromCharCode(0,2,3,4,0,0,0,0),l=String.fromCharCode(0,3,3,4,41,0,0,2),f=String.fromCharCode(0,16,1,8,0,0,8,0,0,1,0,0),u=String.fromCharCode(0,30,3,0),h=String.fromCharCode(1,0,3,0),p=String.fromCharCode(1,5,3,0),R=String.fromCharCode(0,18,36,128,0,0,0,0,1,10,0,1,0,0,0,0,2,0,0,0),E=String.fromCharCode(0,18,49,128,0,0,0,0,1,10,0,1,0,0,0,0,2,0,0,0),I=String.fromCharCode(0,14,1,128,0,0,0,0,1,6,0,255,0,0,0,0);function g(r,n,a,o){var t=null,d=0;return 160==r&&(t=e.floppy,null!=e.floppy&&(d=e.floppy.size>>9)),176==r&&(t=e.cdrom,null!=e.cdrom&&(d=e.cdrom.size>>11)),a<0||n+a>d?(e.SendCommandEndResponse(1,5,r,33,0),0):0==a?(e.SendCommandEndResponse(1,0,r,0,0),0):void(null!=t&&(160==r?(n<<=9,a<<=9):(n<<=11,a<<=11),null!==y?(console.log("IDERERROR: Read while performing read"),e.Stop()):(y=t,b=r,A=n,T=a,_(o))))}e.xxStateChange=function(n){r("IDER-StateChange",n),0==n&&e.Stop(),3==n&&e.Start()},e.Start=function(){r("IDER-Start"),r(e.floppy,e.cdrom),e.bytesToAmt=0,e.bytesFromAmt=0,e.inSequence=0,e.outSequence=0,e.SendCommand(64,ShortToStrX(e.rx_timeout)+ShortToStrX(e.tx_timeout)+ShortToStrX(e.heartbeat)+IntToStrX(e.version))},e.Stop=function(){r("IDER-Stop"),e.pingTimer&&(clearInterval(e.pingTimer),e.pingTimer=null),e.parent.Stop()},e.ProcessData=function(n){for(e.bytesFromAmt+=n.length,e.acc+=n,r("IDER-ProcessData",e.acc.length,rstr2hex(e.acc));;){var a=e.ProcessDataEx();if(0==a)return;if(e.inSequence!=ReadIntX(e.acc,4))return r("ERROR: Out of sequence",e.inSequence,ReadIntX(e.acc,4)),void e.Stop();e.inSequence++,e.acc=e.acc.substring(a)}},e.SendCommand=function(n,a,o,t){null==a&&(a="");var d=n>50&&1==o?2:0;t&&(d+=1);var S=String.fromCharCode(n,0,0,d)+IntToStrX(e.outSequence++)+a;e.parent.xxSend(S),e.bytesToAmt+=S.length,75!=n&&r("IDER-SendData",S.length,rstr2hex(S))},e.SendCommandEndResponse=function(r,n,a,o,t){r?e.SendCommand(81,String.fromCharCode(0,0,0,0,0,0,0,0,0,0,0,0,197,0,3,0,0,0,a,80,0,0,0),!0):e.SendCommand(81,String.fromCharCode(0,0,0,0,0,0,0,0,0,0,0,0,135,n<<4,3,0,0,0,a,81,n,o,t),!0)},e.SendDataToHost=function(r,n,a,o){var t=o?0:a.length;1==n?e.SendCommand(84,String.fromCharCode(0,255&a.length,a.length>>8,0,o?180:181,0,2,0,255&t,t>>8,r,88,133,0,3,0,0,0,r,80,0,0,0,0,0,0)+a,n,o):e.SendCommand(84,String.fromCharCode(0,255&a.length,a.length>>8,0,o?180:181,0,2,0,255&t,t>>8,r,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0)+a,n,o)},e.SendGetDataFromHost=function(r,n){e.SendCommand(82,String.fromCharCode(0,255&n,n>>8,0,181,0,0,0,255&n,n>>8,r,88,0,0,0,0,0,0,0,0,0,0,0),!1)},e.SendDisableEnableFeatures=function(r,n){null==n&&(n=""),e.SendCommand(72,String.fromCharCode(r)+n)},e.ProcessDataEx=function(){if(e.acc.length<8)return 0;switch(e.acc.charCodeAt(0)){case 65:if(e.acc.length<30)return 0;var b=e.acc.charCodeAt(29);return e.acc.length<30+b?0:(e.iderinfo={},e.iderinfo.major=e.acc.charCodeAt(8),e.iderinfo.minor=e.acc.charCodeAt(9),e.iderinfo.fwmajor=e.acc.charCodeAt(10),e.iderinfo.fwminor=e.acc.charCodeAt(11),e.iderinfo.readbfr=ReadShortX(e.acc,16),e.iderinfo.writebfr=ReadShortX(e.acc,18),e.iderinfo.proto=e.acc.charCodeAt(21),e.iderinfo.iana=ReadIntX(e.acc,25),r(e.iderinfo),0!=e.iderinfo.proto&&(r("Unknown proto",e.iderinfo.proto),e.Stop()),e.iderinfo.readbfr>8192&&(r("Illegal read buffer size",e.iderinfo.readbfr),e.Stop()),e.iderinfo.writebfr>8192&&(r("Illegal write buffer size",e.iderinfo.writebfr),e.Stop()),0==e.iderStart?e.SendDisableEnableFeatures(3,IntToStrX(9)):1==e.iderStart?e.SendDisableEnableFeatures(3,IntToStrX(17)):2==e.iderStart&&e.SendDisableEnableFeatures(3,IntToStrX(25)),30+b);case 67:return r("CLOSE"),e.Stop(),8;case 68:return e.SendCommand(69),8;case 69:return r("PONG"),8;case 70:if(e.acc.length<9)return 0;var A=e.acc.charCodeAt(8);return null===y?(e.SendCommand(71),r("RESETOCCURED1",A)):(D=!0,r("RESETOCCURED2",A)),9;case 73:if(e.acc.length<13)return 0;var T=e.acc.charCodeAt(8),_=ReadIntX(e.acc,9);switch(r("STATUS_DATA",T,_),T){case 1:1&_&&(0==e.iderStart?e.SendDisableEnableFeatures(3,IntToStrX(9)):1==e.iderStart?e.SendDisableEnableFeatures(3,IntToStrX(17)):2==e.iderStart&&e.SendDisableEnableFeatures(3,IntToStrX(25)));break;case 2:e.enabled=!!(2&_),r("IDER Status: "+e.enabled);break;case 3:1!=_&&r("Register toggle failure")}return 13;case 74:return e.acc.length<11?0:(r("IDER: ABORT",e.acc.charCodeAt(8)),11);case 75:return 8;case 80:if(e.acc.length<28)return 0;var k=16&e.acc.charCodeAt(14)?176:160,v=e.acc.charCodeAt(14),O=e.acc.substring(16,28),X=e.acc.charCodeAt(9);return r("SCSI_CMD",k,rstr2hex(O),X,v),function(b,A,T,D){var y;switch(A.charCodeAt(0)){case 0:switch(r("SCSI: TEST_UNIT_READY",b),b){case 160:if(null==e.floppy)return e.SendCommandEndResponse(1,2,b,58,0),-1;if(0==e.floppyReady)return e.floppyReady=!0,e.SendCommandEndResponse(1,6,b,40,0),-1;break;case 176:if(null==e.cdrom)return e.SendCommandEndResponse(1,2,b,58,0),-1;if(0==e.cdromReady)return e.cdromReady=!0,e.SendCommandEndResponse(1,6,b,40,0),-1;break;default:return r("SCSI Internal error 3",b),-1}e.SendCommandEndResponse(1,0,b,0,0);break;case 8:y=((31&A.charCodeAt(1))<<16)+(A.charCodeAt(2)<<8)+A.charCodeAt(3),0==(v=A.charCodeAt(4))&&(v=256),r("SCSI: READ_6",b,y,v),g(b,y,v,T);break;case 10:return y=((31&A.charCodeAt(1))<<16)+(A.charCodeAt(2)<<8)+A.charCodeAt(3),0==(v=A.charCodeAt(4))&&(v=256),r("SCSI: WRITE_6",b,y,v),e.SendCommandEndResponse(1,2,b,58,0),-1;case 26:if(r("SCSI: MODE_SENSE_6",b),63==A.charCodeAt(2)&&0==A.charCodeAt(3)){var _=0,k=0;switch(b){case 160:if(null==e.floppy)return e.SendCommandEndResponse(1,2,b,58,0),-1;_=0,k=128;break;case 176:if(null==e.cdrom)return e.SendCommandEndResponse(1,2,b,58,0),-1;_=5,k=128;break;default:return r("SCSI Internal error 6",b),-1}return void e.SendDataToHost(b,!0,String.fromCharCode(0,_,k,0),1&T)}e.SendCommandEndResponse(1,5,b,36,0);break;case 27:e.SendCommandEndResponse(1,0,b);break;case 30:if(r("SCSI: ALLOW_MEDIUM_REMOVAL",b),160==b&&null==e.floppy)return e.SendCommandEndResponse(1,2,b,58,0),-1;if(176==b&&null==e.cdrom)return e.SendCommandEndResponse(1,2,b,58,0),-1;e.SendCommandEndResponse(1,0,b,0,0);break;case 35:r("SCSI: READ_FORMAT_CAPACITIES",b);O=ReadShort(A,7);switch(b){case 160:if(null==e.floppy||0==e.floppy.size)return e.SendCommandEndResponse(0,5,b,36,0),-1;(e.floppy.size>>9)-1;break;case 176:if(null==e.cdrom||0==e.cdrom.size)return e.SendCommandEndResponse(0,5,b,36,0),-1;(e.cdrom.size>>11)-1;break;default:return r("SCSI Internal error 4",b),-1}e.SendDataToHost(b,!0,IntToStr(8)+String.fromCharCode(0,0,11,64,2,0,2,0),1&T);break;case 37:r("SCSI: READ_CAPACITY",b);var v=0;switch(b){case 160:if(null==e.floppy||0==e.floppy.size)return e.SendCommandEndResponse(0,2,b,58,0),-1;null!=e.floppy&&(v=(e.floppy.size>>9)-1),r("DEV_FLOPPY",v);break;case 176:if(null==e.floppy||0==e.floppy.size)return e.SendCommandEndResponse(0,2,b,58,0),-1;null!=e.cdrom&&(v=(e.cdrom.size>>11)-1),r("DEV_CDDVD",v);break;default:return r("SCSI Internal error 4",b),-1}r("SCSI: READ_CAPACITY2",b,D),e.SendDataToHost(D,!0,IntToStr(v)+String.fromCharCode(0,0,176==b?8:2,0),1&T);break;case 40:r("SCSI: READ_10",b,y=ReadInt(A,2),v=ReadShort(A,7)),g(b,y,v,T);break;case 42:case 46:r("SCSI: WRITE_10",b,y=ReadInt(A,2),v=ReadShort(A,7)),e.SendGetDataFromHost(b,512*v);break;case 67:var O=ReadShort(A,7),X=2&A.charCodeAt(1),w=7&A.charCodeAt(2);switch(0==w&&(w=A.charCodeAt(9)>>6),r("SCSI: READ_TOC, dev="+b+", buflen="+O+", msf="+X+", format="+w),b){case 160:return e.SendCommandEndResponse(1,5,b,32,0),-1;case 176:break;default:return r("SCSI Internal error 9",b),-1}1==w?e.SendDataToHost(b,!0,String.fromCharCode(0,10,1,1,0,20,1,0,0,0,0,0),1&T):0==w&&(X?e.SendDataToHost(b,!0,String.fromCharCode(0,18,1,1,0,20,1,0,0,0,2,0,0,20,170,0,0,0,52,19),1&T):e.SendDataToHost(b,!0,String.fromCharCode(0,18,1,1,0,20,1,0,0,0,0,0,0,20,170,0,0,0,0,0),1&T));break;case 70:var F=2!=A.charCodeAt(1),H=ReadShort(A,2);if(r("SCSI: GET_CONFIGURATION",b,F,H,O=ReadShort(A,7)),0==O)return e.SendDataToHost(b,!0,IntToStr(60)+IntToStr(8),1&T),-1;var z=IntToStr(8);return 0==H&&(z+=C),(1==H||F&&H<1)&&(z+=s),(2==H||F&&H<2)&&(z+=m),(3==H||F&&H<3)&&(z+=l),(16==H||F&&H<16)&&(z+=f),(30==H||F&&H<30)&&(z+=u),(256==H||F&&H<256)&&(z+=h),(261==H||F&&H<261)&&(z+=p),(z=IntToStr(z.length)+z).length>O&&(z=z.substring(0,O)),e.SendDataToHost(b,!0,z,1&T),-1;case 74:if(r("SCSI: GET_EVENT_STATUS_NOTIFICATION",b,A.charCodeAt(1),A.charCodeAt(4),A.charCodeAt(9)),1!=A.charCodeAt(1)&&16!=A.charCodeAt(4)){r("SCSI ERROR"),e.SendCommandEndResponse(1,5,b,38,1);break}var x=0;(160==b&&null!=e.floppy||176==b&&null!=e.cdrom)&&(x=2),e.SendDataToHost(b,!0,String.fromCharCode(0,x,128,0),1&T);break;case 76:e.SendCommand(81,IntToStrX(0)+IntToStrX(0)+IntToStrX(0)+String.fromCharCode(135,80,3,0,0,0,176,81,5,32,0),!0);break;case 81:return r("SCSI READ_DISC_INFO",b),e.SendCommandEndResponse(0,5,b,32,0),-1;case 85:return r("SCSI ERROR: MODE_SELECT_10",b),e.SendCommandEndResponse(1,5,b,32,0),-1;case 90:r("SCSI: MODE_SENSE_10",b,63&A.charCodeAt(2));z=null;if(0==(O=ReadShort(A,7)))return e.SendDataToHost(b,!0,IntToStr(60)+IntToStr(8),1&T),-1;var N=0;switch(160==b?null!=e.floppy&&(N=e.floppy.size>>9):null!=e.cdrom&&(N=e.cdrom.size>>11),63&A.charCodeAt(2)){case 1:z=160==b?N<=2880?R:E:I;break;case 5:160==b&&(z=N<=2880?o:n);break;case 63:z=160==b?N<=2880?t:a:i;break;case 26:176==b&&(z=d);break;case 29:176==b&&(z=S);break;case 42:176==b&&(z=c)}null==z?e.SendCommandEndResponse(0,5,b,32,0):e.SendDataToHost(b,!0,z,1&T);break;default:return r("IDER: Unknown SCSI command",A.charCodeAt(0)),e.SendCommandEndResponse(0,5,b,32,0),-1}}(k,O,X,v),28;case 83:if(e.acc.length<14)return 0;b=ReadShortX(e.acc,9);return e.acc.length<14+b?0:(r("SCSI_WRITE, len = "+(14+b)),e.SendCommand(81,String.fromCharCode(0,0,0,0,0,0,0,0,0,0,0,0,135,112,3,0,0,0,160,81,7,39,0),!0),14+b);default:r("Unknown IDER command",e.acc[0]),e.Stop()}return 0};var b,A,T,D=!1,y=null;function _(r){var n=T,a=A;T>e.iderinfo.readbfr&&(n=e.iderinfo.readbfr),T-=n,A+=n;var o=new FileReader;o.onload=function(){e.SendDataToHost(b,0==T,this.result,1&r),T>0&&0==D?_(r):(y=null,D&&(e.SendCommand(71),D=!1))},o.readAsBinaryString(y.slice(a,a+n))}return e}