UNPKG

meshcentral

Version:

Web based remote computer management server

1 lines 12.5 kB
var CreateAmtRemoteTerminal=function(e,r){var t={};t.DivId=e,t.DivElement=document.getElementById(e),t.protocol=1,r.protocol&&(t.protocol=r.protocol),t.terminalEmulation=1,t.fxEmulation=0,t.lineFeed="\r\n",t.debugmode=0,t.width=80,t.height=25,t.heightLock=0;var i,n=["000000","BB0000","00BB00","BBBB00","0000BB","BB00BB","00BBBB","BBBBBB","555555","FF5555","55FF55","FFFF55","5555FF","FF55FF","55FFFF","FFFFFF"],a=0,h=7,o=0,c=!0,f=0,s=0,d=0,l=0,m=0,u=[],g=0,w=0,C=[],S=[],T=!1,b=!0,k=!1,v=[],p="";function y(e,r){switch(m){case 0:if(27===r)m=1,u=[],g=0,w=0;else B(e);break;case 1:switch(e){case"[":m=2;break;case"(":m=4;break;case")":m=5;break;case"]":m=6;break;case"=":k=!0,m=0;break;case">":k=!1,m=0;break;case"7":d=f,l=s,m=0;break;case"8":f=d,s=l,m=0;break;case"M":for(var n=i[1];n>=i[0]+1;n--)for(var T=0;T<t.width;T++)S[n][T]=S[n-1][T],C[n][T]=C[n-1][T];for(n=i[0]+1-1;n>i[0]-1;n--)for(T=0;T<t.width;T++)S[n][T]=" ",C[n][T]=448;m=0;break;default:console.log("unknown terminal short code",e),m=0}break;case 2:if(e>="0"&&e<="9"){u[g]?u[g]=10*u[g]+(e-"0"):u[g]=e-"0";break}if(";"==e){g++;break}if("?"==e){w=1;break}u[0]||(u[0]=0),function(e,r,n,d){if(1==d)switch(e){case"l":25==r[0]&&(b=!1);break;case"h":25==r[0]&&(b=!0)}else if(0==d){var l;switch(e){case"c":t.TermResetScreen();break;case"A":1==n&&(0==r[0]?s--:s-=r[0],s<0&&(s=0));break;case"B":1==n&&(0==r[0]?s++:s+=r[0],s>t.height&&(s=t.height));break;case"C":1==n&&(0==r[0]?f++:f+=r[0],f>t.width&&(f=t.width));break;case"D":1==n&&(0==r[0]?f--:f-=r[0],f<0&&(f=0));break;case"d":1==n&&((s=r[0]-1)>t.height&&(s=t.height),s<0&&(s=0));break;case"G":1==n&&((f=r[0]-1)<0&&(f=0),f>t.width-1&&(f=t.width-1));break;case"P":var m=1;for(1==n&&(m=r[0]),l=f;l<t.width-m;l++)S[s][l]=S[s][l+m],C[s][l]=C[s][l+m];for(l=t.width-m;l<t.width;l++)S[s][l]=" ",C[s][l]=448;break;case"L":var u=1;for(1==n&&(u=r[0]),0==u&&(u=1),w=i[1];w>=s+u;w--)S[w]=S[w-u],C[w]=C[w-u];for(w=s;w<s+u;w++)for(S[w]=[],C[w]=[],m=0;m<t.width;m++)S[w][m]=" ",C[w][m]=448;break;case"J":if(1==n&&2==r[0])t.TermClear((o<<12)+(h<<6)),f=0,s=0,v=[];else if(0==n||1==n&&0==r[0])for(E(),l=s+1;l<t.height;l++)L(l);else if(1==n&&1==r[0])for(E(),l=0;l<s-1;l++)L(l);break;case"H":2==n?(r[0]<1&&(r[0]=1),r[1]<1&&(r[1]=1),r[0]>t.height&&(r[0]=t.height),r[1]>t.width&&(r[1]=t.width),s=r[0]-1,f=r[1]-1):(s=0,f=0);break;case"m":for(l=0;l<n;l++)if(r[l]&&0!=r[l])if(1==r[l])h<8&&(h+=8);else if(2==r[l]||22==r[l])h>=8&&(h-=8);else if(7==r[l])a=2;else if(27==r[l])a=0;else if(r[l]>=30&&r[l]<=37){var g=h>=8;h=r[l]-30,g&&h<=8&&(h+=8)}else r[l]>=40&&r[l]<=47?o=r[l]-40:r[l]>=90&&r[l]<=99?h=r[l]-82:r[l]>=100&&r[l]<=109&&(o=r[l]-92);else o=0,h=7,a=0;break;case"K":0!=n&&(1!=n||r[0]&&0!=r[0])?1==n&&(1==r[0]?function(){for(var e=(h<<6)+(o<<12)+a,r=0;r<f;r++)S[s][r]=" ",C[s][r]=e}():2==r[0]&&L(s)):E();break;case"h":c=!0;break;case"l":c=!1;break;case"r":2==n&&(i=[r[0]-1,r[1]-1]),i[0]<0&&(i[0]=0),i[0]>t.height-1&&(i[0]=t.height-1),i[1]<0&&(i[1]=0),i[1]>t.height-1&&(i[1]=t.height-1),i[0]>i[1]&&(i[0]=i[1]);break;case"S":m=1;1==n&&(m=r[0]);for(var w=i[0];w<=i[1]-m;w++)for(var T=0;T<t.width;T++)S[w][T]=S[w+m][T],C[w][T]=C[w+m][T];for(w=i[1]-m+1;w<i[1];w++)for(T=0;T<t.width;T++)S[w][T]=" ",C[w][T]=448;break;case"M":m=1;1==n&&(m=r[0]);for(w=s;w<=i[1]-m;w++)for(T=0;T<t.width;T++)S[w][T]=S[w+m][T],C[w][T]=C[w+m][T];for(w=i[1]-m+1;w<i[1];w++)for(T=0;T<t.width;T++)S[w][T]=" ",C[w][T]=448;break;case"T":m=1;1==n&&(m=r[0]);for(w=i[1];w>i[0]+m;w--)for(T=0;T<t.width;T++)S[w][T]=S[w-m][T],C[w][T]=C[w-m][T];for(w=i[0]+m;w>i[0];w--)for(T=0;T<t.width;T++)S[w][T]=" ",C[w][T]=448;break;case"X":m=1;var k=f,p=s;for(1==n&&(m=r[0]);m>0&&p<t.height;)S[p][k]=" ",m--,++k>=t.width&&(k=0,p++);break;default:console.log("Unknown terminal code",e,r,d)}}}(e,u,g+1,w),m=0;break;case 4:case 5:m=0;break;case 6:var p=e.charCodeAt(0);";"==e?g++:7==p?(!function(e){if(0==e.length)return;var r=parseInt(e[0]);(0==r||2==r)&&e.length>1&&"?"!=e[1]&&t.onTitleChange&&t.onTitleChange(t,t.title=e[1])}(u),m=0):u[g]?u[g]+=e:u[g]=e}}t.title=null,t.onTitleChange=null,t.Start=function(){},t.Init=function(e,r){t.width=e||80,t.height=r||25;for(var i=0;i<t.height;i++){S[i]=[],C[i]=[];for(var n=0;n<t.width;n++)S[i][n]=" ",C[i][n]=448}t.TermInit(),t.TermDraw()},t.xxStateChange=function(e){},t.ProcessData=function(e){if(2==t.debugmode&&console.log("TRecv("+e.length+"): "+rstr2hex(e)),0==t.terminalEmulation)try{e=decode_utf8(p+e)}catch(r){return void(p+=e)}p="",null!=t.capture&&(t.capture+=e),function(e){for(var r=0;r<e.length;r++)y(String.fromCharCode(e.charCodeAt(r)),e.charCodeAt(r))}(e),t.TermDraw()},t.ProcessVt100String=function(e){for(var r=0;r<e.length;r++)B(String.fromCharCode(e.charCodeAt(r)))};var K=[199,252,233,226,228,224,229,231,234,235,232,239,238,236,196,197,201,230,198,244,246,242,251,249,255,214,220,162,163,165,8359,402,225,237,243,250,241,209,170,218,191,8976,172,189,188,161,171,187,9619,9618,9617,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9576,9560,9554,9555,9579,9578,9496,9484,9608,9604,9611,9616,9600,945,223,915,960,931,963,181,964,966,952,8486,948,8734,248,949,8719,8801,177,8805,8806,8992,8993,247,8776,176,8226,183,8730,8319,178,8718,160],D=[199,252,233,226,228,224,229,231,234,235,232,239,238,236,196,197,201,230,198,244,246,242,251,249,255,214,220,162,163,165,8359,402,225,237,243,250,241,209,170,218,191,8976,172,189,188,161,174,187,9619,9618,9617,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9576,9560,9554,9555,9579,9578,9496,9484,9608,9604,9611,9616,9600,945,223,915,960,931,963,181,964,966,952,8486,948,8734,248,949,8719,8801,177,8805,8806,8992,8993,247,8776,176,8226,183,8730,8319,178,8718,160];K=[199,252,233,226,228,224,229,231,234,235,232,239,238,236,196,197,201,230,198,244,246,242,251,249,255,214,220,162,163,165,8359,402,225,237,243,250,241,209,170,218,191,8976,172,189,188,161,171,187,9619,9618,9617,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9576,9560,9554,9555,9579,9578,9496,9484,9608,9604,9611,9616,9600,945,223,915,960,931,963,181,964,966,952,8486,948,8734,248,949,8719,8801,177,8805,8806,8992,8993,247,8776,176,8226,183,8730,8319,178,8718,160],D=[199,252,233,226,228,224,229,231,234,235,232,239,238,236,196,197,201,230,198,244,246,242,251,249,255,214,220,162,163,165,8359,402,225,237,243,250,241,209,170,218,191,8976,172,189,188,161,174,187,9619,9618,9617,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9576,9560,9554,9555,9579,9578,9496,9484,9608,9604,9611,9616,9600,945,223,915,960,931,963,181,964,966,952,8486,948,8734,248,949,8719,8801,177,8805,8806,8992,8993,247,8776,176,8226,183,8730,8319,178,8718,160];function B(e){if("\0"!=e&&7!=e.charCodeAt()){var r=e.charCodeAt();switch(1==t.terminalEmulation?128&r&&(e=String.fromCharCode(K[127&r])):2==t.terminalEmulation&&128&r&&(e=String.fromCharCode(D[127&r])),r){case 16:e=" ";break;case 24:e="↑";break;case 25:e="↓"}switch(f>t.width&&(f=t.width),s>t.height-1&&(s=t.height-1),e){case"\b":f>0&&(f--,T&&F(" "));break;case"\t":for(var n=8-f%8,a=0;a<n;a++)B(" ");break;case"\n":++s>i[1]&&(t.recordLineTobackBuffer(0),P(1),s=i[1]),(t.lineFeed="\r")&&(f=0);break;case"\r":f=0;break;default:f>=t.width&&(f=0,c&&s++,s>=t.height-1&&(P(1),s=t.height-1)),F(e),f++}}}function F(e){S[s][f]=e,C[s][f]=(h<<6)+(o<<12)+a}function E(){for(var e=(h<<6)+(o<<12)+a,r=f;r<t.width;r++)S[s][r]=" ",C[s][r]=e}function L(e){for(var r=(h<<6)+(o<<12)+a,i=0;i<t.width;i++)S[e][i]=" ",C[e][i]=r}function P(e){var r,n;for(n=i[0];n<=i[1]-e;n++)S[n]=S[n+e],C[n]=C[n+e];for(n=i[1]-e+1;n<=i[1];n++)for(S[n]=[],C[n]=[],r=0;r<t.width;r++)S[n][r]=" ",C[n][r]=448}return t.TermClear=function(e){for(var r=0;r<t.height;r++)for(var i=0;i<t.width;i++)S[r][i]=" ",C[r][i]=e;v=[]},t.TermResetScreen=function(){a=0,h=7,o=0,c=b=!0,f=s=0,T=!1,i=[0,t.height-1],k=!1,t.TermClear(448),p=""},t.TermSendKeys=function(e){2==t.debugmode&&console.log("TSend("+e.length+"): "+rstr2hex(e),e),t.parent.send(e)},t.TermSendKey=function(e){2==t.debugmode&&console.log("TSend(1): "+rstr2hex(String.fromCharCode(e)),e),t.parent.send(String.fromCharCode(e))},t.TermHandleKeys=function(e){if(!e.ctrlKey)return 127==e.which?t.TermSendKey(8):13==e.which?t.TermSendKeys(t.lineFeed):0!=e.which&&t.TermSendKey(e.which),!1;e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},t.TermHandleKeyUp=function(e){return 8!=e.which&&32!=e.which&&9!=e.which||(e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1)},t.TermHandleKeyDown=function(e){if(e.which>=65&&e.which<=90&&1==e.ctrlKey)return t.TermSendKey(e.which-64),e.preventDefault&&e.preventDefault(),void(e.stopPropagation&&e.stopPropagation());if(27==e.which)return t.TermSendKeys(String.fromCharCode(27)),!0;if(1==k){if(37==e.which)return t.TermSendKeys(String.fromCharCode(27,79,68)),!0;if(38==e.which)return t.TermSendKeys(String.fromCharCode(27,79,65)),!0;if(39==e.which)return t.TermSendKeys(String.fromCharCode(27,79,67)),!0;if(40==e.which)return t.TermSendKeys(String.fromCharCode(27,79,66)),!0}else{if(37==e.which)return t.TermSendKeys(String.fromCharCode(27,91,68)),!0;if(38==e.which)return t.TermSendKeys(String.fromCharCode(27,91,65)),!0;if(39==e.which)return t.TermSendKeys(String.fromCharCode(27,91,67)),!0;if(40==e.which)return t.TermSendKeys(String.fromCharCode(27,91,66)),!0}if(33==e.which)return t.TermSendKeys(String.fromCharCode(27,91,53,126)),!0;if(34==e.which)return t.TermSendKeys(String.fromCharCode(27,91,54,126)),!0;if(35==e.which)return t.TermSendKeys(String.fromCharCode(27,91,70)),!0;if(36==e.which)return t.TermSendKeys(String.fromCharCode(27,91,72)),!0;if(45==e.which)return t.TermSendKeys(String.fromCharCode(27,91,50,126)),!0;if(46==e.which)return t.TermSendKeys(String.fromCharCode(27,91,51,126)),!0;if(9==e.which)return t.TermSendKeys("\t"),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!0;var r=[80,81,119,120,116,117,113,114,112,77],i=[49,50,51,52,53,54,55,56,57,48,33,64],n=[80,81,82,83,84,85,86,87,88,89,90,91];if(e.which>111&e.which<124&&0==e.repeat){if(0==t.fxEmulation&&e.which<122)return t.TermSendKeys(String.fromCharCode(27,91,79,r[e.which-112])),!0;if(1==t.fxEmulation)return t.TermSendKeys(String.fromCharCode(27,i[e.which-112])),!0;if(2==t.fxEmulation)return t.TermSendKeys(String.fromCharCode(27,79,n[e.which-112])),!0}r=[80,81,119,120,116,117,113,114,112,77];if(e.which>111&e.which<122&&0==e.repeat)return t.TermSendKeys(String.fromCharCode(27,91,79,r[e.which-112])),!0;i=[49,50,51,52,53,54,55,56,57,48,33,64];if(e.which>111&e.which<124&&0==e.repeat)return t.TermSendKeys(String.fromCharCode(27,i[e.which-112])),!0;n=[80,81,82,83,84,85,86,87,88,89,90,91];return e.which>111&e.which<124&&0==e.repeat?(t.TermSendKeys(String.fromCharCode(27,79,n[e.which-112])),!0):8!=e.which&&32!=e.which&&9!=e.which||(t.TermSendKey(e.which),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1)},t.recordLineTobackBuffer=function(e){var r="",i="",n=t.TermDrawLine(i,e,r);i=n[0],r=n[1],v.push(i+r+"<br>")},t.TermDrawLine=function(e,r,i){for(var a,h,o,c,d=1,l=0;l<t.width;++l)switch(a=C[r][l],f==l&&s==r&&b&&(a|=2),a!=d&&(e+=i,o=6,c=12,2&a&&(o=12,c=6),e+='<span style="color:#'+n[a>>o&63]+";background-color:#"+n[a>>c&63],1&a&&(e+=";text-decoration:underline"),e+=';">',i="</span>"+(i=""),d=a),h=S[r][l]){case"&":e+="&amp;";break;case"<":e+="&lt;";break;case">":e+="&gt;";break;case" ":e+="&nbsp;";break;default:e+=h}return[e,i]},t.TermDraw=function(){for(var e="",r="",i=0;i<t.height;++i){var n=t.TermDrawLine(r,i,e);r=n[0],e=n[1],i!=t.height-1&&(r+="<br>")}v.length>800&&(v=v.slice(v.length-800));var a=v.join("");t.DivElement.innerHTML="<font size='4'><b>"+a+r+e+"</b></font>",t.DivElement.scrollTop=t.DivElement.scrollHeight,0==t.heightLock&&setTimeout(t.TermLockHeight,10)},t.TermLockHeight=function(){t.heightLock=t.DivElement.clientHeight,t.DivElement.style.height=t.DivElement.parentNode.style.height=t.heightLock+"px",t.DivElement.style["overflow-y"]="scroll"},t.TermInit=function(){t.TermResetScreen()},t.heightLock=0,t.DivElement.style.height="",null!=r&&null!=r.cols&&null!=r.rows?t.Init(r.cols,r.rows):t.Init(),t}