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