mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2024-11-27 11:57:45 +03:00
1 line
7.8 KiB
JavaScript
1 line
7.8 KiB
JavaScript
|
function script_setup(e,t){var d={startvars:t};return e.length<6?(console.error("Invalid script length"),null):612182341!=ReadInt(e,0)?(console.error("Invalid binary script"),null):1<ReadShort(e,4)?(console.error("Unsupported script version"),null):(d.script=e.substring(6),d.reset=function(e){d.stop(),d.ip=0,d.variables=t,d.state=1},d.start=function(e){d.stop(),0<(d.stepspeed=e)&&(d.timer=setInterval(function(){d.step()},e))},d.stop=function(){null!=d.timer&&clearInterval(d.timer),d.timer=null,d.stepspeed=0},d.getVar=function(e){if(null!=e)return d.getVarEx(e.split("."),d.variables)},d.getVarEx=function(e,t){try{if(null==e)return;return 0==e.length?t:d.getVarEx(e.slice(1),t[e[0]])}catch(e){return null}},d.setVar=function(e,t){d.setVarEx(e.split("."),d.variables,t)},d.setVarEx=function(e,t,r){1==e.length?t[e[0]]=r:d.setVarEx(e.slice(1),t[e[0]],r)},d.step=function(){if(1==d.state){if(d.ip<d.script.length){var e=ReadShort(d.script,d.ip),t=ReadShort(d.script,d.ip+2),r=ReadShort(d.script,d.ip+4),a=d.ip+6,n=[];for(var s in d.variables)s.startsWith("__")&&delete d.variables[s];for(s=0;s<r;s++){var i=ReadShort(d.script,a),o=d.script.substring(a+2,a+2+i),l=o.charCodeAt(0);if(o=o.substring(1),l<2){for(;1<o.split("{").length;){var c=o.split("{").pop().split("}").shift();o=o.replace("{"+c+"}",d.getVar(c))}1==l&&(d.variables["__"+s]=decodeURI(o),o="__"+s),n.push(o)}2!=l&&3!=l||(d.variables["__"+s]=ReadSInt(o,0),n.push("__"+s)),a+=2+i}d.ip+=t;var u,p=[];for(s=0;s<10;s++)p.push(d.getVar(n[s]));try{if(e<1e4)switch(e){case 0:break;case 1:p[2]?("<"==p[2]&&p[1]<p[3]||"<="==p[2]&&p[1]<=p[3]||"!="==p[2]&&p[1]!=p[3]||"="==p[2]&&p[1]==p[3]||">="==p[2]&&p[1]>=p[3]||">"==p[2]&&p[1]>p[3])&&(d.ip=p[0]):d.ip=p[0];break;case 2:null==n[1]?delete d.variables[n[0]]:d.setVar(n[0],p[1]);break;case 3:d.onConsole?d.onConsole(d.toString(p[0]),d):console.log(d.toString(p[0]));break;case 4:d.state=2,d.dialog=!0,setDialogMode(11,p[0],p[2],d.xxStepDialogOk,p[1],d);break;case 5:for(var s in p[1])p[1][s][p[2]]==p[3]&&(u=s);break;case 6:u=p[1].substr(p[2],p[3]);break;case 7:u=p[1].indexOf(p[2]);break;case 8:u=p[1].split(p[2]);break;case 9:u=p[1].join(p[2]);break;case 10:u=p[1].length;break;case 11:u=JSON.parse(p[1]);break;case 12:u=JSON.stringify(p[1]);break;case 13:u=p[1]+p[2];break;case 14:u=p[1]-p[2];break;case 15:u=parseInt(p[1]);break;case 16:d.state=2,d.amtstack.BatchEnum(p[0],p[1],d.xxWsmanReturn,d);break;case 17:d.state=2,d.amtstack.Put(p[0],p[1],d.xxWsmanReturn,d);break;case 18:d.state=2,d.amtstack.Create(p[0],p[1],d.xxWsmanReturn,d);break;case 19:d.state=2,d.amtstack.Delete(p[0],p[1],d.xxWsmanReturn,d);break;case 20:d.state=2,d.amtstack.Exec(p[0],p[1],p[2],d.xxWsmanReturn,d,0,p[3]);break;case 21:d.stepspeed=p[0],null!=d.timer&&(clearInterval(d.timer),d.timer=setInterval(function(){d.step()},d.stepspeed));break;case 22:d.state=2,d.amtstack.Subscribe(p[0],p[1],p[2],d.xxWsmanReturn,d,0,p[3],p[4],p[5],p[6]);break;case 23:d.state=2,d.amtstack.UnSubscribe(p[0],d.xxWsmanReturn,d,0,p[1]);break;case 24:console.log(p[1],p[2],p[1].charCodeAt(p[2])),u=p[1].charCodeAt(p[2]);break;case 25:d.state=2,amtcert_signWithCaKey(p[0],null,p[1],{CN:"Untrusted Root Certificate"},d.xxSignWithDummyCaReturn);break;default:d.state=9,console.error("Script Error, unknown command: "+e)}else e<2e4?u=script_functionTableX2[e-1e4](p[1],p[2],p[3],p[4],p[5],p[6]):script_functionTableX3&&script_functionTableX3[e-2e4]&&(u=script_functionTableX3[e-2e4](d,p[1],p[2],p[3],p[4],p[5],p[6]));null!=u&&d.setVar(n[0],u)}catch(e){"object"==typeof e&&(e=e.message),d.setVar("_exception",e)}}return 1==d.state&&d.ip>=d.script.length&&(d.state=0,d.stop()),d.onStep&&d.onStep(d),d}},d.xxStepDialogOk=function(e){d.variables.DialogSelect=e,d.state=1,d.dialog=!1,d.onStep&&d.onStep(d)},d.xxWsmanReturnFix=function(e){e&&null!=e&&(e.Header&&(e.Header=e.Header,delete e.Header),e.Body&&(e.Body=e.Body,delete e.Body),e.Responses&&(e.Responses=e.Responses,delete e.Responses),e.Response&&(e.Response=e.Response,delete e.Response),e.ReturnValueStr&&(e.ReturnValueStr=e.ReturnValueStr,delete e.ReturnValueStr))},d.xxWsmanRetu
|