improved proxy support in ClickOnce application.
Ylian Saint-Hilaire committed
Mar 19, 2019 at 09:54 UTC
747586cdd9cba03522da5fd4abc58097239a0f34
11 files changed
+71
-77
agents/meshcore.js
+7
-9
@@ -461,7 +461,7 @@ function createMeshCore(agent) {
461
}
462
case 'getclip': {
463
// Send the load clipboard back to the user
464
- sendConsoleText('getClip: ' + JSON.stringify(data));
464
+ //sendConsoleText('getClip: ' + JSON.stringify(data));
465
if (require('MeshAgent').isService)
466
{
467
require('clipboard').dispatchRead().then(function (str) { mesh.SendCommand({ "action": "msg", "type": "getclip", "sessionid": data.sessionid, "data": str }); });
@@ -474,7 +474,7 @@ function createMeshCore(agent) {
474
}
475
case 'setclip': {
476
// Set the load clipboard to a user value
477
- sendConsoleText('setClip: ' + JSON.stringify(data));
477
+ //sendConsoleText('setClip: ' + JSON.stringify(data));
478
if (typeof data.data == 'string')
479
{
480
if (require('MeshAgent').isService)
@@ -1177,22 +1177,20 @@ function createMeshCore(agent) {
1177
case 'getclip':
1178
if (require('MeshAgent').isService) {
1179
require('clipboard').dispatchRead().then(function (str) { sendConsoleText(str, sessionid); });
1180
- }
1181
- else {
1180
+ } else {
1181
require("clipboard").read().then(function (str) { sendConsoleText(str, sessionid); });
1182
}
1183
break;
1184
case 'setclip': {
1185
if (args['_'].length != 1) {
1187
- response = 'Proper usage: setclip (text)';
1188
- }
1189
- else {
1186
+ response = 'Proper usage: setclip "sample text"';
1187
+ } else {
1188
if (require('MeshAgent').isService) {
1189
require('clipboard').dispatchWrite(args['_'][0]);
1192
- response = 'Setting clipboard to: ' + args['_'][0];
1190
+ response = 'Setting clipboard to: "' + args['_'][0] + '"';
1191
}
1192
else {
1195
- require("clipboard")(args['_'][0]); response = 'Setting clipboard to: ' + args['_'][0];
1193
+ require("clipboard")(args['_'][0]); response = 'Setting clipboard to: "' + args['_'][0] + '"';
1194
}
1195
}
1196
break;
agents/meshcore.min.js
+1
-1
@@ -1 +1 @@
1
-process.on("uncaughtException",function(a){require("MeshAgent").SendCommand({action:"msg",type:"console",value:"uncaughtException1: "+a})});var MESHRIGHT_EDITMESH=1;var MESHRIGHT_MANAGEUSERS=2;var MESHRIGHT_MANAGECOMPUTERS=4;var MESHRIGHT_REMOTECONTROL=8;var MESHRIGHT_AGENTCONSOLE=16;var MESHRIGHT_SERVERFILES=32;var MESHRIGHT_WAKEDEVICE=64;var MESHRIGHT_SETNOTES=128;var MESHRIGHT_REMOTEVIEW=256;var MESHRIGHT_NOTERMINAL=512;var MESHRIGHT_NOFILES=1024;var MESHRIGHT_NOAMT=2048;var MESHRIGHT_LIMITEDINPUT=4096;function createMeshCore(agent){var obj={};var meshCoreObj={action:"coreinfo",value:"MeshCore v6",caps:14};try{require("os").name().then(function(v){meshCoreObj.osdesc=v})}catch(ex){}var meshServerConnectionState=0;var tunnels={};var lastMeInfo=null;var lastNetworkInfo=null;var lastPublicLocationInfo=null;var selfInfoUpdateTimer=null;var http=require("http");var net=require("net");var fs=require("fs");var rtc=require("ILibWebRTC");var amt=null;var processManager=require("process-manager");var wifiScannerLib=null;var wifiScanner=null;var networkMonitor=null;var amtscanner=null;var nextTunnelIndex=1;var amtPolicy=null;if(agent==null){db=require("SimpleDataStore").Shared();sha=require("SHA256Stream");mesh=require("MeshAgent");childProcess=require("child_process");if(mesh.hasKVM==1){try{if((process.platform=="win32")||(process.platform=="darwin")||(require("monitor-info").kvm_x11_support)){meshCoreObj.caps|=1}}catch(ex){}}}else{meshCoreObj.value+="-NodeJS";meshCoreObj.caps=8;mesh=agent.getMeshApi()}try{var AMTScannerModule=require("amt-scanner");amtscanner=new AMTScannerModule()}catch(ex){amtscanner=null}var SMBiosTables=null;var SMBiosTablesRaw=null;try{var SMBiosModule=null;try{SMBiosModule=require("smbios")}catch(ex){}if(SMBiosModule!=null){SMBiosModule.get(function(data){if(data!=null){SMBiosTablesRaw=data;SMBiosTables=require("smbios").parse(data);if(mesh.isControlChannelConnected){mesh.SendCommand({action:"smbios",value:SMBiosTablesRaw})}if(SMBiosTables.amtInfo&&(SMBiosTables.amtInfo.AMT==true)){var amtmodule=require("amt-manage");amt=new amtmodule(mesh,db,true);amt.onStateChange=function(state){if(state==2){sendPeriodicServerUpdate(1)}};if(amtPolicy!=null){amt.setPolicy(amtPolicy)}amt.start()}}})}}catch(ex){sendConsoleText("ex1: "+ex)}try{var wifiScannerLib=require("wifi-scanner");wifiScanner=new wifiScannerLib();wifiScanner.on("accessPoint",function(data){sendConsoleText("wifiScanner: "+data)})}catch(ex){wifiScannerLib=null;wifiScanner=null}var getIpLocationDataExInProgress=false;var getIpLocationDataExCounts=[0,0];function getIpLocationDataEx(func){if(getIpLocationDataExInProgress==true){return false}try{getIpLocationDataExInProgress=true;getIpLocationDataExCounts[0]++;var options=http.parseUri("http://ipinfo.io/json");options.method="GET";http.request(options,function(resp){if(resp.statusCode==200){var geoData="";resp.data=function(geoipdata){geoData+=geoipdata};resp.end=function(){var location=null;try{if(typeof geoData=="string"){var result=JSON.parse(geoData);if(result.ip&&result.loc){location=result}}}catch(e){}if(func){getIpLocationDataExCounts[1]++;func(location)}}}else{func(null)}getIpLocationDataExInProgress=false}).end();return true}catch(e){return false}}function clearGatewayMac(str){if(str==null){return null}var x=JSON.parse(str);for(var i in x.netif){if(x.netif[i].gatewaymac){delete x.netif[i].gatewaymac}}return JSON.stringify(x)}function getIpLocationData(func){var publicLocationInfo=db.Get("publicLocationInfo");if(publicLocationInfo!=null){publicLocationInfo=JSON.parse(publicLocationInfo)}if(publicLocationInfo==null){getIpLocationDataEx(function(locationData){if(locationData!=null){publicLocationInfo={};publicLocationInfo.netInfoStr=lastNetworkInfo;publicLocationInfo.locationData=locationData;var x=db.Put("publicLocationInfo",JSON.stringify(publicLocationInfo));if(func){func(locationData)}}else{if(func){func(null)}}})}else{if(clearGatewayMac(publicLocationInfo.netInfoStr)==clearGatewayMac(lastNetworkInfo)){if(func){func(publicLocationInfo.locationData)}}else{getIpLocationDataEx(function(locationData){if(locationData!=null){publicLocationInfo={};publicLocationInfo.netInfoStr=lastNetworkInfo;publicLocationInfo.locationData=locationData;var x=db.Put("publicLocationInfo",JSON.stringify(publicLocationInfo));if(func){func(locationData)}}else{if(func){func(publicLocationInfo.locationData)}}})}}}if(!String.prototype.endsWith){String.prototype.endsWith=function(searchString,position){var subjectString=this.toString();if(typeof position!=="number"||!isFinite(position)||Math.floor(position)!==position||position>subjectString.length){position=subjectString.length}position-=searchString.length;var lastIndex=subjectString.lastIndexOf(searchString,position);return lastIndex!==-1&&lastIndex===position}}obj.path={join:function(){var x=[];for(var i in arguments){var w=arguments[i];if(w!=null){while(w.endsWith("/")||w.endsWith("\\")){w=w.substring(0,w.length-1)}if(i!=0){while(w.startsWith("/")||w.startsWith("\\")){w=w.substring(1)}}x.push(w)}}if(x.length==0){return"/"}return x.join("/")}};function toNumberIfNumber(x){if((typeof x=="string")&&(+parseInt(x)===x)){x=parseInt(x)}return x}function char2hex(i){return(i+256).toString(16).substr(-2).toUpperCase()}function rstr2hex(input){var r="",i;for(i=0;i<input.length;i++){r+=char2hex(input.charCodeAt(i))}return r}function buf2rstr(buf){var r="";for(var i=0;i<buf.length;i++){r+=String.fromCharCode(buf[i])}return r}function hex2rstr(d){if(typeof d!="string"||d.length==0){return""}var r="",m=(""+d).match(/../g),t;while(t=m.shift()){r+=String.fromCharCode("0x"+t)}return r}function objToString(x,p,pad,ret){if(ret==undefined){ret=""}if(p==undefined){p=0}if(x==null){return"[null]"}if(p>8){return"[...]"}if(x==undefined){return"[undefined]"}if(typeof x=="string"){if(p==0){return x}return'"'+x+'"'}if(typeof x=="buffer"){return"[buffer]"}if(typeof x!="object"){return x}var r="{"+(ret?"\r\n":" ");for(var i in x){if(i!="_ObjectID"){r+=(addPad(p+2,pad)+i+": "+objToString(x[i],p+2,pad,ret)+(ret?"\r\n":" "))}}return r+addPad(p,pad)+"}"}function addPad(p,ret){var r="";for(var i=0;i<p;i++){r+=ret}return r}function splitArgs(str){var myArray=[],myRegexp=/[^\s"]+|"([^"]*)"/gi;do{var match=myRegexp.exec(str);if(match!=null){myArray.push(match[1]?match[1]:match[0])}}while(match!=null);return myArray}function parseArgs(argv){var results={_:[]},current=null;for(var i=1,len=argv.length;i<len;i++){var x=argv[i];if(x.length>2&&x[0]=="-"&&x[1]=="-"){if(current!=null){results[current]=true}current=x.substring(2)}else{if(current!=null){results[current]=toNumberIfNumber(x);current=null}else{results._.push(toNumberIfNumber(x))}}}if(current!=null){results[current]=true}return results}function getServerTargetUrl(path){var x=mesh.ServerUrl;if(x==null){return null}if(path==null){path=""}x=http.parseUri(x);if(x==null){return null}return x.protocol+"//"+x.host+":"+x.port+"/"+path}function getServerTargetUrlEx(url){if(url.substring(0,2)=="*/"){return getServerTargetUrl(url.substring(2))}return url}function sendWakeOnLan(hexMac){var count=0;try{var interfaces=require("os").networkInterfaces();var magic="FFFFFFFFFFFF";for(var x=1;x<=16;++x){magic+=hexMac}var magicbin=Buffer.from(magic,"hex");for(var adapter in interfaces){if(interfaces.hasOwnProperty(adapter)){for(var i=0;i<interfaces[adapter].length;++i){var addr=interfaces[adapter][i];if((addr.family=="IPv4")&&(addr.mac!="00:00:00:00:00:00")){var socket=require("dgram").createSocket({type:"udp4"});socket.bind({address:addr.address});socket.setBroadcast(true);socket.send(magicbin,7,"255.255.255.255");count++}}}}}catch(e){}return count}function handleServerCommand(data){if(typeof data=="object"){switch(data.action){case"msg":switch(data.type){case"console":if(data.value&&data.sessionid){var args=splitArgs(data.value);processConsoleCommand(args[0].toLowerCase(),parseArgs(args),data.rights,data.sessionid)}break;case"tunnel":if(data.value!=null){var xurl=getServerTargetUrlEx(data.value);if(xurl!=null){var woptions=http.parseUri(xurl);woptions.rejectUnauthorized=0;var tunnel=http.request(woptions);tunnel.upgrade=onTunnelUpgrade;tunnel.on("error",function(e){sendConsoleText("ERROR: "+JSON.stringify(e))});tunnel.sessionid=data.sessionid;tunnel.rights=data.rights;tunnel.state=0;tunnel.url=xurl;tunnel.protocol=0;tunnel.tcpaddr=data.tcpaddr;tunnel.tcpport=data.tcpport;tunnel.end();var index=nextTunnelIndex++;tunnel.index=index;tunnels[index]=tunnel}}break;case"ps":if(data.sessionid){processManager.getProcesses(function(plist){mesh.SendCommand({action:"msg",type:"ps",value:JSON.stringify(plist),sessionid:data.sessionid})})}break;case"pskill":if(data.value){try{process.kill(data.value)}catch(e){sendConsoleText("pskill: "+JSON.stringify(e))}}break;case"openUrl":sendConsoleText("OpenURL: "+data.url);if(data.url){mesh.SendCommand({action:"msg",type:"openUrl",url:data.url,sessionid:data.sessionid,success:(openUserDesktopUrl(data.url)!=null)})}break;case"getclip":sendConsoleText("getClip: "+JSON.stringify(data));if(require("MeshAgent").isService){require("clipboard").dispatchRead().then(function(str){mesh.SendCommand({action:"msg",type:"getclip",sessionid:data.sessionid,data:str})})}else{require("clipboard").read().then(function(str){mesh.SendCommand({action:"msg",type:"getclip",sessionid:data.sessionid,data:str})})}break;case"setclip":sendConsoleText("setClip: "+JSON.stringify(data));if(typeof data.data=="string"){if(require("MeshAgent").isService){require("clipboard").dispatchWrite(data.data)}else{require("clipboard")(data.data)}mesh.SendCommand({action:"msg",type:"setclip",sessionid:data.sessionid,success:true})}break;default:break}break;case"wakeonlan":sendConsoleText("Server requesting wake-on-lan for: "+data.macs.join(", "));for(var i in data.macs){sendWakeOnLan(data.macs[i])}break;case"poweraction":if((mesh.ExecPowerState!=undefined)&&(data.actiontype)){var forced=0;if(data.forced==1){forced=1}data.actiontype=parseInt(data.actiontype);sendConsoleText("Performing power action="+data.actiontype+", forced="+forced+".");var r=mesh.ExecPowerState(data.actiontype,forced);sendConsoleText("ExecPowerState returned code: "+r)}break;case"iplocation":getIpLocationData(function(location){mesh.SendCommand({action:"iplocation",type:"publicip",value:location})});break;case"toast":if(data.title&&data.msg){require("toaster").Toast(data.title,data.msg)}break;case"openUrl":sendConsoleText("OpenURL: "+data.url);if(data.url){mesh.SendCommand({action:"openUrl",url:data.url,sessionid:data.sessionid,success:(openUserDesktopUrl(data.url)!=null)})}break;case"amtPolicy":amtPolicy=data.amtPolicy;if(data.amtPolicy!=null){db.Put("amtPolicy",JSON.stringify(data.amtPolicy))}else{db.Put("amtPolicy",null)}if(amt!=null){amt.setPolicy(amtPolicy)}break;case"getScript":sendConsoleText("getScript: "+JSON.stringify(data));break;default:break}}}function getDirectoryInfo(reqpath){var response={path:reqpath,dir:[]};if(((reqpath==undefined)||(reqpath==""))&&(process.platform=="win32")){var results=null;try{results=fs.readDrivesSync()}catch(e){}if(results!=null){for(var i=0;i<results.length;++i){var drive={n:results[i].name,t:1};if(results[i].type=="REMOVABLE"){drive.dt="removable"}response.dir.push(drive)}}}else{if(reqpath==""){reqpath="/"}var results=null,xpath=obj.path.join(reqpath,"*");try{results=fs.readdirSync(xpath)}catch(e){}if(results!=null){for(var i=0;i<results.length;++i){if((results[i]!=".")&&(results[i]!="..")){var stat=null,p=obj.path.join(reqpath,results[i]);try{stat=fs.statSync(p)}catch(e){}if((stat!=null)&&(stat!=undefined)){if(stat.isDirectory()==true){response.dir.push({n:results[i],t:2,d:stat.mtime})}else{response.dir.push({n:results[i],t:3,s:stat.size,d:stat.mtime})}}}}}}return response}function onTunnelUpgrade(response,s,head){this.s=s;s.httprequest=this;s.end=onTunnelClosed;s.tunnel=this;if(this.tcpport!=null){s.pause();s.data=onTcpRelayServerTunnelData;var connectionOptions={port:parseInt(this.tcpport)};if(this.tcpaddr!=null){connectionOptions.host=this.tcpaddr}else{connectionOptions.host="127.0.0.1"}s.tcprelay=net.createConnection(connectionOptions,onTcpRelayTargetTunnelConnect);s.tcprelay.peerindex=this.index}else{s.data=onTunnelData}}function onTcpRelayTargetTunnelConnect(){var peerTunnel=tunnels[this.peerindex];this.pipe(peerTunnel.s);peerTunnel.s.first=true;peerTunnel.s.resume()}function onTcpRelayServerTunnelData(data){if(this.first==true){this.first=false;this.pipe(this.tcprelay)}}function onTunnelClosed(){if(tunnels[this.httprequest.index]==null){return}delete tunnels[this.httprequest.index];if(this.httprequest.uploadFile){fs.closeSync(this.httprequest.uploadFile);this.httprequest.uploadFile=undefined}if(this.httprequest.downloadFile){fs.closeSync(this.httprequest.downloadFile);this.httprequest.downloadFile=undefined}if(this.webrtc!=null){if(this.webrtc.rtcchannel){try{this.webrtc.rtcchannel.close()}catch(e){}this.webrtc.rtcchannel.removeAllListeners("data");this.webrtc.rtcchannel.removeAllListeners("end");delete this.webrtc.rtcchannel}if(this.webrtc.websocket){delete this.webrtc.websocket}try{this.webrtc.close()}catch(e){}this.webrtc.removeAllListeners("connected");this.webrtc.removeAllListeners("disconnected");this.webrtc.removeAllListeners("dataChannel");delete this.webrtc}this.removeAllListeners("data")}function onTunnelSendOk(){}function onTunnelData(data){if(this.httprequest.uploadFile){try{fs.writeSync(this.httprequest.uploadFile,data)}catch(e){this.write(new Buffer(JSON.stringify({action:"uploaderror"})));return}this.write(new Buffer(JSON.stringify({action:"uploadack",reqid:this.httprequest.uploadFileid})));return}if(this.httprequest.state==0){if(data=="c"){this.httprequest.state=1}}else{if(this.httprequest.protocol==0){this.httprequest.protocol=parseInt(data);if(typeof this.httprequest.protocol!="number"){this.httprequest.protocol=0}if(this.httprequest.protocol==1){if(((this.httprequest.rights&MESHRIGHT_REMOTECONTROL)==0)||((this.httprequest.rights!=4294967295)&&((this.httprequest.rights&MESHRIGHT_NOTERMINAL)!=0))){this.httprequest.protocol=999999;this.httprequest.s.end();sendConsoleText("Error: No Terminal Control Rights.");return}if(process.platform=="win32"){this.httprequest._term=require("win-terminal").Start(80,25);this.httprequest._term.pipe(this,{dataTypeSkip:1});this.pipe(this.httprequest._term,{dataTypeSkip:1,end:false});this.prependListener("end",function(){this.httprequest._term.end(function(){console.log("Terminal was closed")})})}else{this.httprequest.process=childProcess.execFile("/bin/sh",["sh"],{type:childProcess.SpawnTypes.TERM});this.httprequest.process.tunnel=this;this.httprequest.process.on("exit",function(ecode,sig){this.tunnel.end()});this.httprequest.process.stderr.on("data",function(chunk){this.parent.tunnel.write(chunk)});this.httprequest.process.stdout.pipe(this,{dataTypeSkip:1});this.pipe(this.httprequest.process.stdin,{dataTypeSkip:1,end:false});this.prependListener("end",function(){this.httprequest.process.kill()})}this.end=function(){if(process.platform=="win32"){this.unpipe(this.httprequest._term);this.httprequest._term.unpipe(this);if(this.rtcchannel){this.rtcchannel.unpipe(this.httprequest._term);this.httprequest._term.unpipe(this.rtcchannel)}this.httprequest._term.end();this.httprequest._term=null}else{}};this.removeAllListeners("data");this.on("data",onTunnelControlData);if(process.platform=="linux"){this.httprequest.process.stdin.write("stty erase ^H\nalias ls='ls --color=auto'\nclear\n")}}else{if(this.httprequest.protocol==2){if(((this.httprequest.rights&MESHRIGHT_REMOTECONTROL)==0)&&((this.httprequest.rights&MESHRIGHT_REMOTEVIEW)==0)){this.httprequest.protocol=999999;this.httprequest.s.end();sendConsoleText("Error: No Desktop Control Rights.");return}this.httprequest.desktop={state:0,kvm:mesh.getRemoteDesktopStream(),tunnel:this};this.httprequest.desktop.kvm.parent=this.httprequest.desktop;this.desktop=this.httprequest.desktop;this.end=function(){--this.desktop.kvm.connectionCount;this.unpipe(this.httprequest.desktop.kvm);this.httprequest.desktop.kvm.unpipe(this);if(this.rtcchannel){this.rtcchannel.unpipe(this.httprequest.desktop.kvm);this.httprequest.desktop.kvm.unpipe(this.rtcchannel)}if(this.desktop.kvm.connectionCount==0){this.httprequest.desktop.kvm.end()}};if(this.httprequest.desktop.kvm.hasOwnProperty("connectionCount")){this.httprequest.desktop.kvm.connectionCount++}else{this.httprequest.desktop.kvm.connectionCount=1}if((this.httprequest.rights==4294967295)||(((this.httprequest.rights&MESHRIGHT_REMOTECONTROL)!=0)&&((this.httprequest.rights&MESHRIGHT_REMOTEVIEW)==0))){this.pipe(this.httprequest.desktop.kvm,{dataTypeSkip:1,end:false})}else{}this.httprequest.desktop.kvm.pipe(this,{dataTypeSkip:1});this.removeAllListeners("data");this.on("data",onTunnelControlData)}else{if(this.httprequest.protocol==5){if(((this.httprequest.rights&MESHRIGHT_REMOTECONTROL)==0)||((this.httprequest.rights!=4294967295)&&((this.httprequest.rights&MESHRIGHT_NOFILES)!=0))){this.httprequest.protocol=999999;this.httprequest.s.end();sendConsoleText("Error: No Files Control Rights.");return}}}}}else{if(this.httprequest.protocol==1){this.httprequest.process.write(data)}else{if(this.httprequest.protocol==2){if(this.httprequest.desktop.state==0){this.write(new Buffer(String.fromCharCode(17,254,0,0,77,69,83,72,0,0,0,0,2)));this.httprequest.desktop.state=1}else{this.httprequest.desktop.write(data)}}else{if(this.httprequest.protocol==5){var cmd=null;try{cmd=JSON.parse(data)}catch(e){}if(cmd==null){return}if((cmd.ctrlChannel=="102938")||((cmd.type=="offer")&&(cmd.sdp!=null))){onTunnelControlData(cmd,this);return}if(cmd.action==undefined){return}if((cmd.path!=null)&&(process.platform!="win32")&&(cmd.path[0]!="/")){cmd.path="/"+cmd.path}switch(cmd.action){case"ls":var response=getDirectoryInfo(cmd.path);if(cmd.reqid!=undefined){response.reqid=cmd.reqid}this.write(new Buffer(JSON.stringify(response)));break;case"mkdir":fs.mkdirSync(cmd.path);break;case"rm":for(var i in cmd.delfiles){try{deleteFolderRecursive(obj.path.join(cmd.path,cmd.delfiles[i]),cmd.rec)}catch(e){}}break;case"rename":var oldfullpath=obj.path.join(cmd.path,cmd.oldname);var newfullpath=obj.path.join(cmd.path,cmd.newname);try{fs.renameSync(oldfullpath,newfullpath)}catch(e){console.log(e)}break;case"download":var sendNextBlock=0;if(cmd.sub=="start"){if(this.filedownload!=null){this.write({action:"download",sub:"cancel",id:this.filedownload.id});delete this.filedownload}this.filedownload={id:cmd.id,path:cmd.path,ptr:0};try{this.filedownload.f=fs.openSync(this.filedownload.path,"rbN")}catch(e){this.write({action:"download",sub:"cancel",id:this.filedownload.id});delete this.filedownload}if(this.filedownload){this.write({action:"download",sub:"start",id:cmd.id})}}else{if((this.filedownload!=null)&&(cmd.id==this.filedownload.id)){if(cmd.sub=="startack"){sendNextBlock=8}else{if(cmd.sub=="stop"){delete this.filedownload}else{if(cmd.sub=="ack"){sendNextBlock=1}}}}}while(sendNextBlock>0){sendNextBlock--;var buf=new Buffer(4096);var len=fs.readSync(this.filedownload.f,buf,4,4092,null);this.filedownload.ptr+=len;if(len<4092){buf.writeInt32BE(16777217,0);fs.closeSync(this.filedownload.f);delete this.filedownload;sendNextBlock=0}else{buf.writeInt32BE(16777216,0)}this.write(buf.slice(0,len+4))}break;case"upload":if(this.httprequest.uploadFile!=undefined){fs.closeSync(this.httprequest.uploadFile);this.httprequest.uploadFile=undefined}if(cmd.path==undefined){break}var filepath=cmd.name?obj.path.join(cmd.path,cmd.name):cmd.path;try{this.httprequest.uploadFile=fs.openSync(filepath,"wbN")}catch(e){this.write(new Buffer(JSON.stringify({action:"uploaderror",reqid:cmd.reqid})));break}this.httprequest.uploadFileid=cmd.reqid;if(this.httprequest.uploadFile){this.write(new Buffer(JSON.stringify({action:"uploadstart",reqid:this.httprequest.uploadFileid})))}break;case"copy":for(var i in cmd.names){var sc=obj.path.join(cmd.scpath,cmd.names[i]),ds=obj.path.join(cmd.dspath,cmd.names[i]);if(sc!=ds){try{fs.copyFileSync(sc,ds)}catch(e){}}}break;case"move":for(var i in cmd.names){var sc=obj.path.join(cmd.scpath,cmd.names[i]),ds=obj.path.join(cmd.dspath,cmd.names[i]);if(sc!=ds){try{fs.copyFileSync(sc,ds);fs.unlinkSync(sc)}catch(e){}}}break;default:break}}}}}}}function deleteFolderRecursive(path,rec){if(fs.existsSync(path)){if(rec==true){fs.readdirSync(obj.path.join(path,"*")).forEach(function(file,index){var curPath=obj.path.join(path,file);if(fs.statSync(curPath).isDirectory()){deleteFolderRecursive(curPath,true)}else{fs.unlinkSync(curPath)}})}fs.unlinkSync(path)}}function onTunnelWebRTCControlData(data){if(typeof data!="string"){return}var obj;try{obj=JSON.parse(data)}catch(e){sendConsoleText("Invalid control JSON on WebRTC: "+data);return}if(obj.type=="close"){try{this.close()}catch(e){}try{this.xrtc.close()}catch(e){}}}function onTunnelControlData(data,ws){var obj;if(ws==null){ws=this}if(typeof data=="string"){try{obj=JSON.parse(data)}catch(e){sendConsoleText("Invalid control JSON: "+data);return}}else{if(typeof data=="object"){obj=data}else{return}}if(obj.action){switch(obj.action){case"lock":try{if(process.platform=="win32"){var child=require("child_process");child.execFile(process.env.windir+"\\system32\\cmd.exe",["/c","RunDll32.exe user32.dll,LockWorkStation"],{type:1})}}catch(e){}break;default:break}return}if(obj.type=="close"){try{ws.close()}catch(e){}}else{if(obj.type=="webrtc0"){if(ws.httprequest.protocol==1){if(process.platform=="win32"){ws.httprequest._term.unpipe(ws)}else{ws.httprequest.process.stdout.unpipe(ws);ws.httprequest.process.stderr.unpipe(ws)}}else{if(ws.httprequest.protocol==2){ws.httprequest.desktop.kvm.unpipe(ws)}else{ws.rtcchannel.httprequest=ws.httprequest;ws.rtcchannel.removeAllListeners("data");ws.rtcchannel.on("data",onTunnelData)}}ws.write('{"ctrlChannel":"102938","type":"webrtc1"}')}else{if(obj.type=="webrtc1"){if(ws.httprequest.protocol==1){if(process.platform=="win32"){ws.unpipe(ws.httprequest._term);ws.rtcchannel.pipe(ws.httprequest._term,{dataTypeSkip:1})}else{ws.unpipe(ws.httprequest.process.stdin);ws.rtcchannel.pipe(ws.httprequest.process.stdin,{dataTypeSkip:1})}ws.resume()}else{if(ws.httprequest.protocol==2){ws.unpipe(ws.httprequest.desktop.kvm);try{ws.webrtc.rtcchannel.pipe(ws.httprequest.desktop.kvm,{dataTypeSkip:1,end:false})}catch(e){sendConsoleText("EX2")}ws.resume()}}ws.write('{"ctrlChannel":"102938","type":"webrtc2"}')}else{if(obj.type=="webrtc2"){if(ws.httprequest.protocol==1){if(process.platform=="win32"){ws.httprequest._term.pipe(ws.webrtc.rtcchannel,{dataTypeSkip:1,end:false})}else{ws.httprequest.process.stdout.pipe(ws.webrtc.rtcchannel,{dataTypeSkip:1,end:false});ws.httprequest.process.stderr.pipe(ws.webrtc.rtcchannel,{dataTypeSkip:1,end:false})}}else{if(ws.httprequest.protocol==2){ws.httprequest.desktop.kvm.pipe(ws.webrtc.rtcchannel,{dataTypeSkip:1})}}}else{if(obj.type=="offer"){if(ws.httprequest.protocol==1){return}ws.webrtc=rtc.createConnection();ws.webrtc.websocket=ws;ws.webrtc.on("connected",function(){});ws.webrtc.on("disconnected",function(){});ws.webrtc.on("dataChannel",function(rtcchannel){rtcchannel.xrtc=this;rtcchannel.websocket=this.websocket;this.rtcchannel=rtcchannel;this.websocket.rtcchannel=rtcchannel;this.websocket.rtcchannel.on("data",onTunnelWebRTCControlData);this.websocket.rtcchannel.on("end",function(){if(this.websocket.desktop&&this.websocket.desktop.kvm){this.unpipe(this.websocket.desktop.kvm);this.websocket.httprequest.desktop.kvm.unpipe(this)}});this.websocket.write('{"ctrlChannel":"102938","type":"webrtc0"}')});var sdp=null;try{sdp=ws.webrtc.setOffer(obj.sdp)}catch(ex){}if(sdp!=null){ws.write({type:"answer",ctrlChannel:"102938",sdp:sdp})}}}}}}}var consoleWebSockets={};var consoleHttpRequest=null;function consoleHttpResponse(response){response.data=function(data){sendConsoleText(rstr2hex(buf2rstr(data)),this.sessionid);consoleHttpRequest=null};response.close=function(){sendConsoleText("httprequest.response.close",this.sessionid);consoleHttpRequest=null}}function openUserDesktopUrl(url){var child=null;try{switch(process.platform){case"win32":child=require("child_process").execFile(process.env.windir+"\\system32\\cmd.exe",["/c","start",url],{type:childProcess.SpawnTypes.USER});break;case"linux":child=require("child_process").execFile("/usr/bin/xdg-open",["xdg-open",url],{uid:require("user-sessions").consoleUid()});break;case"darwin":child=require("child_process").execFile("/usr/bin/open",["open",url],{uid:require("user-sessions").consoleUid()});break;default:break}}catch(ex){}return child}function processConsoleCommand(cmd,args,rights,sessionid){try{var response=null;switch(cmd){case"help":response="Available commands: help, info, osinfo,args, print, type, dbget, dbset, dbcompact, eval, parseuri, httpget,\r\nwslist, wsconnect, wssend, wsclose, notify, ls, ps, kill, amt, netinfo, location, power, wakeonlan, scanwifi,\r\nscanamt, setdebug, smbios, rawsmbios, toast, lock, users, sendcaps, openurl, amtreset, amtccm, amtdeactivate,\r\namtpolicy, getscript, getclip, setclip.";break;case"getclip":if(require("MeshAgent").isService){require("clipboard").dispatchRead().then(function(str){sendConsoleText(str,sessionid)})}else{require("clipboard").read().then(function(str){sendConsoleText(str,sessionid)})}break;case"setclip":if(args._.length!=1){response="Proper usage: setclip (text)"}else{if(require("MeshAgent").isService){require("clipboard").dispatchWrite(args._[0]);response="Setting clipboard to: "+args._[0]}else{require("clipboard")(args._[0]);response="Setting clipboard to: "+args._[0]}}break;case"amtreset":if(amt!=null){amt.reset();response="Done."}break;case"amtlmsreset":if(amt!=null){amt.lmsreset();response="Done."}break;case"amtccm":if(amt==null){response="Intel AMT not supported."}else{if(args._.length!=1){response="Proper usage: amtccm (adminPassword)"}else{amt.setPolicy({type:0});amt.activeToCCM(args._[0])}}break;case"amtdeactivate":if(amt==null){response="Intel AMT not supported."}else{amt.setPolicy({type:0});amt.deactivateCCM()}break;case"amtpolicy":if(amtPolicy==null){response="No Intel(R) AMT policy."}else{response=JSON.stringify(amtPolicy)}break;case"openurl":if(args._.length!=1){response="Proper usage: openurl (url)"}else{if(openUserDesktopUrl(args._[0])==null){response="Failed."}else{response="Success."}}break;case"users":if(meshCoreObj.users==null){response="Active users are unknown."}else{response="Active Users: "+meshCoreObj.users.join(", ")+"."}require("user-sessions").enumerateUsers().then(function(u){for(var i in u){sendConsoleText(u[i])}});break;case"toast":if(process.platform=="win32"){if(args._.length<1){response='Proper usage: toast "message"'}else{require("toaster").Toast("MeshCentral",args._[0]);response="ok"}}else{response="Only supported on Windows."}break;case"setdebug":if(args._.length<1){response="Proper usage: setdebug (target), 0 = Disabled, 1 = StdOut, 2 = This Console, * = All Consoles, 4 = WebLog, 8 = Logfile"}else{if(args._[0]=="*"){console.setDestination(2)}else{console.setDestination(parseInt(args._[0]),sessionid)}}break;case"ps":processManager.getProcesses(function(plist){var x="";for(var i in plist){x+=i+", "+plist[i].cmd+((plist[i].user)?(", "+plist[i].user):"")+"\r\n"}sendConsoleText(x,sessionid)});break;case"kill":if((args._.length<1)){response="Proper usage: kill [pid]"}else{process.kill(parseInt(args._[0]));response="Killed process "+args._[0]+"."}break;case"smbios":if(SMBiosTables==null){response="SMBios tables not available."}else{response=objToString(SMBiosTables,0," ",true)}break;case"rawsmbios":if(SMBiosTablesRaw==null){response="SMBios tables not available."}else{response="";for(var i in SMBiosTablesRaw){var header=false;for(var j in SMBiosTablesRaw[i]){if(SMBiosTablesRaw[i][j].length>0){if(header==false){response+=("Table type #"+i+((require("smbios").smTableTypes[i]==null)?"":(", "+require("smbios").smTableTypes[i])))+"\r\n";header=true}response+=(" "+SMBiosTablesRaw[i][j].toString("hex"))+"\r\n"}}}}break;case"eval":if(args._.length<1){response='Proper usage: eval "JavaScript code"'}else{response=JSON.stringify(mesh.eval(args._[0]))}break;case"notify":if(args._.length!=1){response='Proper usage: notify "message" [--session]'}else{var notification={action:"msg",type:"notify",value:args._[0],tag:"console"};if(args.session){notification.sessionid=sessionid}mesh.SendCommand(notification);response="ok"}break;case"info":response="Current Core: "+meshCoreObj.value+".\r\nAgent Time: "+Date()+".\r\nUser Rights: 0x"+rights.toString(16)+".\r\nPlatform: "+process.platform+".\r\nCapabilities: "+meshCoreObj.caps+".\r\nServer URL: "+mesh.ServerUrl+".";if(amt!=null){response+="\r\nBuilt-in LMS: "+["Disabled","Connecting..","Connected"][amt.lmsstate]+"."}if(meshCoreObj.osdesc){response+="\r\nOS: "+meshCoreObj.osdesc+"."}response+="\r\nModules: "+addedModules.join(", ")+".";response+="\r\nServer Connection: "+mesh.isControlChannelConnected+", State: "+meshServerConnectionState+".";response+="\rlastMeInfo: "+lastMeInfo+".";var oldNodeId=db.Get("OldNodeId");if(oldNodeId!=null){response+="\r\nOldNodeID: "+oldNodeId+"."}if(process.platform!="win32"){response+="\r\nX11 support: "+require("monitor-info").kvm_x11_support+"."}break;case"osinfo":var i=1;if(args._.length>0){i=parseInt(args._[0]);if(i>8){i=8}response="Calling "+i+" times."}for(var j=0;j<i;j++){var pr=require("os").name();pr.sessionid=sessionid;pr.then(function(v){sendConsoleText("OS: "+v,this.sessionid)})}break;case"sendcaps":if(args._.length==0){response="Proper usage: sendcaps (number)"}else{meshCoreObj.caps=parseInt(args._[0]);mesh.SendCommand(meshCoreObj);response=JSON.stringify(meshCoreObj)}break;case"sendosdesc":if(args._.length>0){meshCoreObj.osdesc=args._[0];mesh.SendCommand(meshCoreObj);response=JSON.stringify(meshCoreObj)}else{response="Proper usage: sendosdesc [os description]"}break;case"args":response="args "+objToString(args,0," ",true);break;case"print":var r=[];for(var i in args._){r.push(args._[i])}console.log(r.join(" "));response="Message printed on agent console.";break;case"type":if(args._.length==0){response="Proper usage: type (filepath) [maxlength]"}else{var max=4096;if((args._.length>1)&&(typeof args._[1]=="number")){max=args._[1]}if(max>4096){max=4096}var buf=Buffer.alloc(max),fd=fs.openSync(args._[0],"r"),r=fs.readSync(fd,buf,0,max);response=buf.toString();var i=response.indexOf("\n");if((i>0)&&(response[i-1]!="\r")){response=response.split("\n").join("\r\n")}if(r==max){response+="..."}fs.closeSync(fd)}break;case"dbkeys":response=JSON.stringify(db.Keys);break;case"dbget":if(db==null){response="Database not accessible.";break}if(args._.length!=1){response="Proper usage: dbget (key)"}else{response=db.Get(args._[0])}break;case"dbset":if(db==null){response="Database not accessible.";break}if(args._.length!=2){response="Proper usage: dbset (key) (value)"}else{var r=db.Put(args._[0],args._[1]);response="Key set: "+r}break;case"dbcompact":if(db==null){response="Database not accessible.";break}var r=db.Compact();response="Database compacted: "+r;break;case"httpget":if(consoleHttpRequest!=null){response="HTTP operation already in progress."}else{if(args._.length!=1){response="Proper usage: httpget (url)"}else{var options=http.parseUri(args._[0]);options.method="GET";if(options==null){response="Invalid url."}else{try{consoleHttpRequest=http.request(options,consoleHttpResponse)}catch(e){response="Invalid HTTP GET request"}consoleHttpRequest.sessionid=sessionid;if(consoleHttpRequest!=null){consoleHttpRequest.end();response="HTTPGET "+options.protocol+"//"+options.host+":"+options.port+options.path}}}}break;case"wslist":response="";for(var i in consoleWebSockets){var httprequest=consoleWebSockets[i];response+="Websocket #"+i+", "+httprequest.url+"\r\n"}if(response==""){response="no websocket sessions."}break;case"wsconnect":if(args._.length==0){response="Proper usage: wsconnect (url)\r\nFor example: wsconnect wss://localhost:443/meshrelay.ashx?id=abc"}else{var httprequest=null;try{var options=http.parseUri(args._[0]);options.rejectUnauthorized=0;httprequest=http.request(options)}catch(e){response="Invalid HTTP websocket request"}if(httprequest!=null){httprequest.upgrade=onWebSocketUpgrade;httprequest.on("error",function(e){sendConsoleText("ERROR: "+JSON.stringify(e))});var index=1;while(consoleWebSockets[index]){index++}httprequest.sessionid=sessionid;httprequest.index=index;httprequest.url=args._[0];consoleWebSockets[index]=httprequest;response="New websocket session #"+index}}break;case"wssend":if(args._.length==0){response="Proper usage: wssend (socketnumber)\r\n";for(var i in consoleWebSockets){var httprequest=consoleWebSockets[i];response+="Websocket #"+i+", "+httprequest.url+"\r\n"}}else{var i=parseInt(args._[0]);var httprequest=consoleWebSockets[i];if(httprequest!=undefined){httprequest.s.write(args._[1]);response="ok"}else{response="Invalid web socket number"}}break;case"wsclose":if(args._.length==0){response="Proper usage: wsclose (socketnumber)"}else{var i=parseInt(args._[0]);var httprequest=consoleWebSockets[i];if(httprequest!=undefined){if(httprequest.s!=null){httprequest.s.end()}else{httprequest.end()}response="ok"}else{response="Invalid web socket number"}}break;case"tunnels":response="";for(var i in tunnels){response+="Tunnel #"+i+", "+tunnels[i].url+"\r\n"}if(response==""){response="No websocket sessions."}break;case"ls":response="";var xpath="*";if(args._.length>0){xpath=obj.path.join(args._[0],"*")}response="List of "+xpath+"\r\n";var results=fs.readdirSync(xpath);for(var i=0;i<results.length;++i){var stat=null,p=obj.path.join(args._[0],results[i]);try{stat=fs.statSync(p)}catch(e){}if((stat==null)||(stat==undefined)){response+=(results[i]+"\r\n")}else{response+=(results[i]+" "+((stat.isDirectory())?"(Folder)":"(File)")+"\r\n")}}break;case"lsx":response=objToString(getDirectoryInfo(args._[0]),0," ",true);break;case"lock":if(process.platform=="win32"){var child=require("child_process");child.execFile(process.env.windir+"\\system32\\cmd.exe",["/c","RunDll32.exe user32.dll,LockWorkStation"],{type:1});response="Ok"}else{response="Not supported on the platform"}break;case"amt":if(amt!=null){amt.getAmtInfo(function(state){var resp="Intel AMT not detected.";if(state!=null){resp=objToString(state,0," ",true)}sendConsoleText(resp,sessionid)})}break;case"netinfo":var interfaces=require("os").networkInterfaces();response=objToString(interfaces,0," ",true);break;case"netinfo2":response=objToString(mesh.NetInfo,0," ",true);break;case"wakeonlan":if((args._.length!=1)||(args._[0].length!=12)){response='Proper usage: wakeonlan [mac], for example "wakeonlan 010203040506".'}else{var count=sendWakeOnLan(args._[0]);response="Sent wake-on-lan on "+count+" interface(s)."}break;case"sendall":sendConsoleText(args._.join(" "));break;case"power":if(mesh.ExecPowerState==undefined){response="Power command not supported on this agent."}else{if((args._.length==0)||(typeof args._[0]!="number")){response="Proper usage: power (actionNumber), where actionNumber is:\r\n LOGOFF = 1\r\n SHUTDOWN = 2\r\n REBOOT = 3\r\n SLEEP = 4\r\n HIBERNATE = 5\r\n DISPLAYON = 6\r\n KEEPAWAKE = 7\r\n BEEP = 8\r\n CTRLALTDEL = 9\r\n VIBRATE = 13\r\n FLASH = 14"}else{var r=mesh.ExecPowerState(args._[0],args._[1]);response="Power action executed with return code: "+r+"."}}break;case"location":getIpLocationData(function(location){sendConsoleText(objToString({action:"iplocation",type:"publicip",value:location},0," "))});break;case"parseuri":response=JSON.stringify(http.parseUri(args._[0]));break;case"scanwifi":if(wifiScanner!=null){var wifiPresent=wifiScanner.hasWireless;if(wifiPresent){response="Perfoming Wifi scan...";wifiScanner.Scan()}else{response="Wifi absent."}}else{response="Wifi module not present."}break;case"scanamt":if(amtscanner!=null){if(args._.length!=1){response="Usage examples:\r\n scanamt 1.2.3.4\r\n scanamt 1.2.3.0-1.2.3.255\r\n scanamt 1.2.3.0/24\r\n"}else{response="Scanning: "+args._[0]+"...";amtscanner.scan(args._[0],2000,function(data){if(data.length>0){var r="",pstates=["NotActivated","InActivation","Activated"];for(var i in data){var x=data[i];if(r!=""){r+="\r\n"}r+=x.address+" - Intel AMT v"+x.majorVersion+"."+x.minorVersion;if(x.provisioningState<3){r+=(", "+pstates[x.provisioningState])}if(x.provisioningState==2){r+=(", "+x.openPorts.join(", "))}r+="."}}else{r="No Intel AMT found."}sendConsoleText(r)})}}else{response="Intel AMT scanner module not present."}break;case"modules":response=JSON.stringify(addedModules);break;case"getscript":if(args._.length!=1){response="Proper usage: getscript [scriptNumber]."}else{mesh.SendCommand({action:"getScript",type:args._[0]})}break;default:response='Unknown command "'+cmd+'", type "help" for list of avaialble commands.';break}}catch(e){response="Command returned an exception error: "+e;console.log(e)}if(response!=null){sendConsoleText(response,sessionid)}}function sendConsoleText(text,sessionid){if(typeof text=="object"){text=JSON.stringify(text)}mesh.SendCommand({action:"msg",type:"console",value:text,sessionid:sessionid})}function handleServerConnection(state){meshServerConnectionState=state;if(meshServerConnectionState==0){if(selfInfoUpdateTimer!=null){clearInterval(selfInfoUpdateTimer);selfInfoUpdateTimer=null}lastSelfInfo=null}else{var oldNodeId=db.Get("OldNodeId");if(oldNodeId!=null){mesh.SendCommand({action:"mc1migration",oldnodeid:oldNodeId})}mesh.SendCommand(meshCoreObj);if(SMBiosTablesRaw!=null){mesh.SendCommand({action:"smbios",value:SMBiosTablesRaw})}meInfoStr=null;sendPeriodicServerUpdate()}}var sendNetworkUpdateNagleTimer=null;function sendNetworkUpdateNagle(){if(sendNetworkUpdateNagleTimer!=null){clearTimeout(sendNetworkUpdateNagleTimer);sendNetworkUpdateNagleTimer=null}sendNetworkUpdateNagleTimer=setTimeout(sendNetworkUpdate,5000)}function sendNetworkUpdate(force){sendNetworkUpdateNagleTimer=null;var netInfo=mesh.NetInfo;netInfo.action="netinfo";var netInfoStr=JSON.stringify(netInfo);if((force==true)||(clearGatewayMac(netInfoStr)!=clearGatewayMac(lastNetworkInfo))){mesh.SendCommand(netInfo);lastNetworkInfo=netInfoStr}}function sendPeriodicServerUpdate(flags){if(meshServerConnectionState==0){return}if(!flags){flags=4294967295}if((flags&1)&&(amt!=null)){amt.getAmtInfo(function(meinfo){try{if(meinfo==null){return}var intelamt={},p=false;if(meinfo.Versions&&meinfo.Versions.AMT){intelamt.ver=meinfo.Versions.AMT;p=true}if(meinfo.ProvisioningState){intelamt.state=meinfo.ProvisioningState;p=true}if(meinfo.Flags){intelamt.flags=meinfo.Flags;p=true}if(meinfo.OsHostname){intelamt.host=meinfo.OsHostname;p=true}if(meinfo.UUID){intelamt.uuid=meinfo.UUID;p=true}if(p==true){var meInfoStr=JSON.stringify(intelamt);if(meInfoStr!=lastMeInfo){meshCoreObj.intelamt=intelamt;mesh.SendCommand(meshCoreObj);lastMeInfo=meInfoStr}}}catch(ex){}})}if(flags&2){sendNetworkUpdateNagle(false)}}obj.start=function(){mesh.AddCommandHandler(handleServerCommand);mesh.AddConnectHandler(handleServerConnection);try{var userSession=require("user-sessions");userSession.on("changed",function onUserSessionChanged(){userSession.enumerateUsers().then(function(users){var u=[],a=users.Active;for(var i=0;i<a.length;i++){var un=a[i].Domain?(a[i].Domain+"\\"+a[i].Username):(a[i].Username);if(u.indexOf(un)==-1){u.push(un)}}meshCoreObj.users=u;mesh.SendCommand(meshCoreObj)})});userSession.emit("changed")}catch(ex){}};obj.stop=function(){mesh.AddCommandHandler(null);mesh.AddConnectHandler(null)};function onWebSocketClosed(){sendConsoleText("WebSocket #"+this.httprequest.index+" closed.",this.httprequest.sessionid);delete consoleWebSockets[this.httprequest.index]}function onWebSocketData(data){sendConsoleText("Got WebSocket #"+this.httprequest.index+" data: "+data,this.httprequest.sessionid)}function onWebSocketSendOk(){sendConsoleText("WebSocket #"+this.index+" SendOK.",this.sessionid)}function onWebSocketUpgrade(response,s,head){sendConsoleText("WebSocket #"+this.index+" connected.",this.sessionid);this.s=s;s.httprequest=this;s.end=onWebSocketClosed;s.data=onWebSocketData}return obj}try{var xexports=null,mainMeshCore=null;try{xexports=module.exports}catch(e){}if(xexports!=null){module.exports.createMeshCore=createMeshCore}else{mainMeshCore=createMeshCore();mainMeshCore.start(null)}}catch(ex){require("MeshAgent").SendCommand({action:"msg",type:"console",value:"uncaughtException2: "+ex})};
\ No newline at end of file
1
+process.on("uncaughtException",function(a){require("MeshAgent").SendCommand({action:"msg",type:"console",value:"uncaughtException1: "+a})});var MESHRIGHT_EDITMESH=1;var MESHRIGHT_MANAGEUSERS=2;var MESHRIGHT_MANAGECOMPUTERS=4;var MESHRIGHT_REMOTECONTROL=8;var MESHRIGHT_AGENTCONSOLE=16;var MESHRIGHT_SERVERFILES=32;var MESHRIGHT_WAKEDEVICE=64;var MESHRIGHT_SETNOTES=128;var MESHRIGHT_REMOTEVIEW=256;var MESHRIGHT_NOTERMINAL=512;var MESHRIGHT_NOFILES=1024;var MESHRIGHT_NOAMT=2048;var MESHRIGHT_LIMITEDINPUT=4096;function createMeshCore(agent){var obj={};var meshCoreObj={action:"coreinfo",value:"MeshCore v6",caps:14};try{require("os").name().then(function(v){meshCoreObj.osdesc=v})}catch(ex){}var meshServerConnectionState=0;var tunnels={};var lastMeInfo=null;var lastNetworkInfo=null;var lastPublicLocationInfo=null;var selfInfoUpdateTimer=null;var http=require("http");var net=require("net");var fs=require("fs");var rtc=require("ILibWebRTC");var amt=null;var processManager=require("process-manager");var wifiScannerLib=null;var wifiScanner=null;var networkMonitor=null;var amtscanner=null;var nextTunnelIndex=1;var amtPolicy=null;if(agent==null){db=require("SimpleDataStore").Shared();sha=require("SHA256Stream");mesh=require("MeshAgent");childProcess=require("child_process");if(mesh.hasKVM==1){try{if((process.platform=="win32")||(process.platform=="darwin")||(require("monitor-info").kvm_x11_support)){meshCoreObj.caps|=1}}catch(ex){}}}else{meshCoreObj.value+="-NodeJS";meshCoreObj.caps=8;mesh=agent.getMeshApi()}try{var AMTScannerModule=require("amt-scanner");amtscanner=new AMTScannerModule()}catch(ex){amtscanner=null}var SMBiosTables=null;var SMBiosTablesRaw=null;try{var SMBiosModule=null;try{SMBiosModule=require("smbios")}catch(ex){}if(SMBiosModule!=null){SMBiosModule.get(function(data){if(data!=null){SMBiosTablesRaw=data;SMBiosTables=require("smbios").parse(data);if(mesh.isControlChannelConnected){mesh.SendCommand({action:"smbios",value:SMBiosTablesRaw})}if(SMBiosTables.amtInfo&&(SMBiosTables.amtInfo.AMT==true)){var amtmodule=require("amt-manage");amt=new amtmodule(mesh,db,true);amt.onStateChange=function(state){if(state==2){sendPeriodicServerUpdate(1)}};if(amtPolicy!=null){amt.setPolicy(amtPolicy)}amt.start()}}})}}catch(ex){sendConsoleText("ex1: "+ex)}try{var wifiScannerLib=require("wifi-scanner");wifiScanner=new wifiScannerLib();wifiScanner.on("accessPoint",function(data){sendConsoleText("wifiScanner: "+data)})}catch(ex){wifiScannerLib=null;wifiScanner=null}var getIpLocationDataExInProgress=false;var getIpLocationDataExCounts=[0,0];function getIpLocationDataEx(func){if(getIpLocationDataExInProgress==true){return false}try{getIpLocationDataExInProgress=true;getIpLocationDataExCounts[0]++;var options=http.parseUri("http://ipinfo.io/json");options.method="GET";http.request(options,function(resp){if(resp.statusCode==200){var geoData="";resp.data=function(geoipdata){geoData+=geoipdata};resp.end=function(){var location=null;try{if(typeof geoData=="string"){var result=JSON.parse(geoData);if(result.ip&&result.loc){location=result}}}catch(e){}if(func){getIpLocationDataExCounts[1]++;func(location)}}}else{func(null)}getIpLocationDataExInProgress=false}).end();return true}catch(e){return false}}function clearGatewayMac(str){if(str==null){return null}var x=JSON.parse(str);for(var i in x.netif){if(x.netif[i].gatewaymac){delete x.netif[i].gatewaymac}}return JSON.stringify(x)}function getIpLocationData(func){var publicLocationInfo=db.Get("publicLocationInfo");if(publicLocationInfo!=null){publicLocationInfo=JSON.parse(publicLocationInfo)}if(publicLocationInfo==null){getIpLocationDataEx(function(locationData){if(locationData!=null){publicLocationInfo={};publicLocationInfo.netInfoStr=lastNetworkInfo;publicLocationInfo.locationData=locationData;var x=db.Put("publicLocationInfo",JSON.stringify(publicLocationInfo));if(func){func(locationData)}}else{if(func){func(null)}}})}else{if(clearGatewayMac(publicLocationInfo.netInfoStr)==clearGatewayMac(lastNetworkInfo)){if(func){func(publicLocationInfo.locationData)}}else{getIpLocationDataEx(function(locationData){if(locationData!=null){publicLocationInfo={};publicLocationInfo.netInfoStr=lastNetworkInfo;publicLocationInfo.locationData=locationData;var x=db.Put("publicLocationInfo",JSON.stringify(publicLocationInfo));if(func){func(locationData)}}else{if(func){func(publicLocationInfo.locationData)}}})}}}if(!String.prototype.endsWith){String.prototype.endsWith=function(searchString,position){var subjectString=this.toString();if(typeof position!=="number"||!isFinite(position)||Math.floor(position)!==position||position>subjectString.length){position=subjectString.length}position-=searchString.length;var lastIndex=subjectString.lastIndexOf(searchString,position);return lastIndex!==-1&&lastIndex===position}}obj.path={join:function(){var x=[];for(var i in arguments){var w=arguments[i];if(w!=null){while(w.endsWith("/")||w.endsWith("\\")){w=w.substring(0,w.length-1)}if(i!=0){while(w.startsWith("/")||w.startsWith("\\")){w=w.substring(1)}}x.push(w)}}if(x.length==0){return"/"}return x.join("/")}};function toNumberIfNumber(x){if((typeof x=="string")&&(+parseInt(x)===x)){x=parseInt(x)}return x}function char2hex(i){return(i+256).toString(16).substr(-2).toUpperCase()}function rstr2hex(input){var r="",i;for(i=0;i<input.length;i++){r+=char2hex(input.charCodeAt(i))}return r}function buf2rstr(buf){var r="";for(var i=0;i<buf.length;i++){r+=String.fromCharCode(buf[i])}return r}function hex2rstr(d){if(typeof d!="string"||d.length==0){return""}var r="",m=(""+d).match(/../g),t;while(t=m.shift()){r+=String.fromCharCode("0x"+t)}return r}function objToString(x,p,pad,ret){if(ret==undefined){ret=""}if(p==undefined){p=0}if(x==null){return"[null]"}if(p>8){return"[...]"}if(x==undefined){return"[undefined]"}if(typeof x=="string"){if(p==0){return x}return'"'+x+'"'}if(typeof x=="buffer"){return"[buffer]"}if(typeof x!="object"){return x}var r="{"+(ret?"\r\n":" ");for(var i in x){if(i!="_ObjectID"){r+=(addPad(p+2,pad)+i+": "+objToString(x[i],p+2,pad,ret)+(ret?"\r\n":" "))}}return r+addPad(p,pad)+"}"}function addPad(p,ret){var r="";for(var i=0;i<p;i++){r+=ret}return r}function splitArgs(str){var myArray=[],myRegexp=/[^\s"]+|"([^"]*)"/gi;do{var match=myRegexp.exec(str);if(match!=null){myArray.push(match[1]?match[1]:match[0])}}while(match!=null);return myArray}function parseArgs(argv){var results={_:[]},current=null;for(var i=1,len=argv.length;i<len;i++){var x=argv[i];if(x.length>2&&x[0]=="-"&&x[1]=="-"){if(current!=null){results[current]=true}current=x.substring(2)}else{if(current!=null){results[current]=toNumberIfNumber(x);current=null}else{results._.push(toNumberIfNumber(x))}}}if(current!=null){results[current]=true}return results}function getServerTargetUrl(path){var x=mesh.ServerUrl;if(x==null){return null}if(path==null){path=""}x=http.parseUri(x);if(x==null){return null}return x.protocol+"//"+x.host+":"+x.port+"/"+path}function getServerTargetUrlEx(url){if(url.substring(0,2)=="*/"){return getServerTargetUrl(url.substring(2))}return url}function sendWakeOnLan(hexMac){var count=0;try{var interfaces=require("os").networkInterfaces();var magic="FFFFFFFFFFFF";for(var x=1;x<=16;++x){magic+=hexMac}var magicbin=Buffer.from(magic,"hex");for(var adapter in interfaces){if(interfaces.hasOwnProperty(adapter)){for(var i=0;i<interfaces[adapter].length;++i){var addr=interfaces[adapter][i];if((addr.family=="IPv4")&&(addr.mac!="00:00:00:00:00:00")){var socket=require("dgram").createSocket({type:"udp4"});socket.bind({address:addr.address});socket.setBroadcast(true);socket.send(magicbin,7,"255.255.255.255");count++}}}}}catch(e){}return count}function handleServerCommand(data){if(typeof data=="object"){switch(data.action){case"msg":switch(data.type){case"console":if(data.value&&data.sessionid){var args=splitArgs(data.value);processConsoleCommand(args[0].toLowerCase(),parseArgs(args),data.rights,data.sessionid)}break;case"tunnel":if(data.value!=null){var xurl=getServerTargetUrlEx(data.value);if(xurl!=null){var woptions=http.parseUri(xurl);woptions.rejectUnauthorized=0;var tunnel=http.request(woptions);tunnel.upgrade=onTunnelUpgrade;tunnel.on("error",function(e){sendConsoleText("ERROR: "+JSON.stringify(e))});tunnel.sessionid=data.sessionid;tunnel.rights=data.rights;tunnel.state=0;tunnel.url=xurl;tunnel.protocol=0;tunnel.tcpaddr=data.tcpaddr;tunnel.tcpport=data.tcpport;tunnel.end();var index=nextTunnelIndex++;tunnel.index=index;tunnels[index]=tunnel}}break;case"ps":if(data.sessionid){processManager.getProcesses(function(plist){mesh.SendCommand({action:"msg",type:"ps",value:JSON.stringify(plist),sessionid:data.sessionid})})}break;case"pskill":if(data.value){try{process.kill(data.value)}catch(e){sendConsoleText("pskill: "+JSON.stringify(e))}}break;case"openUrl":sendConsoleText("OpenURL: "+data.url);if(data.url){mesh.SendCommand({action:"msg",type:"openUrl",url:data.url,sessionid:data.sessionid,success:(openUserDesktopUrl(data.url)!=null)})}break;case"getclip":if(require("MeshAgent").isService){require("clipboard").dispatchRead().then(function(str){mesh.SendCommand({action:"msg",type:"getclip",sessionid:data.sessionid,data:str})})}else{require("clipboard").read().then(function(str){mesh.SendCommand({action:"msg",type:"getclip",sessionid:data.sessionid,data:str})})}break;case"setclip":if(typeof data.data=="string"){if(require("MeshAgent").isService){require("clipboard").dispatchWrite(data.data)}else{require("clipboard")(data.data)}mesh.SendCommand({action:"msg",type:"setclip",sessionid:data.sessionid,success:true})}break;default:break}break;case"wakeonlan":sendConsoleText("Server requesting wake-on-lan for: "+data.macs.join(", "));for(var i in data.macs){sendWakeOnLan(data.macs[i])}break;case"poweraction":if((mesh.ExecPowerState!=undefined)&&(data.actiontype)){var forced=0;if(data.forced==1){forced=1}data.actiontype=parseInt(data.actiontype);sendConsoleText("Performing power action="+data.actiontype+", forced="+forced+".");var r=mesh.ExecPowerState(data.actiontype,forced);sendConsoleText("ExecPowerState returned code: "+r)}break;case"iplocation":getIpLocationData(function(location){mesh.SendCommand({action:"iplocation",type:"publicip",value:location})});break;case"toast":if(data.title&&data.msg){require("toaster").Toast(data.title,data.msg)}break;case"openUrl":sendConsoleText("OpenURL: "+data.url);if(data.url){mesh.SendCommand({action:"openUrl",url:data.url,sessionid:data.sessionid,success:(openUserDesktopUrl(data.url)!=null)})}break;case"amtPolicy":amtPolicy=data.amtPolicy;if(data.amtPolicy!=null){db.Put("amtPolicy",JSON.stringify(data.amtPolicy))}else{db.Put("amtPolicy",null)}if(amt!=null){amt.setPolicy(amtPolicy)}break;case"getScript":sendConsoleText("getScript: "+JSON.stringify(data));break;default:break}}}function getDirectoryInfo(reqpath){var response={path:reqpath,dir:[]};if(((reqpath==undefined)||(reqpath==""))&&(process.platform=="win32")){var results=null;try{results=fs.readDrivesSync()}catch(e){}if(results!=null){for(var i=0;i<results.length;++i){var drive={n:results[i].name,t:1};if(results[i].type=="REMOVABLE"){drive.dt="removable"}response.dir.push(drive)}}}else{if(reqpath==""){reqpath="/"}var results=null,xpath=obj.path.join(reqpath,"*");try{results=fs.readdirSync(xpath)}catch(e){}if(results!=null){for(var i=0;i<results.length;++i){if((results[i]!=".")&&(results[i]!="..")){var stat=null,p=obj.path.join(reqpath,results[i]);try{stat=fs.statSync(p)}catch(e){}if((stat!=null)&&(stat!=undefined)){if(stat.isDirectory()==true){response.dir.push({n:results[i],t:2,d:stat.mtime})}else{response.dir.push({n:results[i],t:3,s:stat.size,d:stat.mtime})}}}}}}return response}function onTunnelUpgrade(response,s,head){this.s=s;s.httprequest=this;s.end=onTunnelClosed;s.tunnel=this;if(this.tcpport!=null){s.pause();s.data=onTcpRelayServerTunnelData;var connectionOptions={port:parseInt(this.tcpport)};if(this.tcpaddr!=null){connectionOptions.host=this.tcpaddr}else{connectionOptions.host="127.0.0.1"}s.tcprelay=net.createConnection(connectionOptions,onTcpRelayTargetTunnelConnect);s.tcprelay.peerindex=this.index}else{s.data=onTunnelData}}function onTcpRelayTargetTunnelConnect(){var peerTunnel=tunnels[this.peerindex];this.pipe(peerTunnel.s);peerTunnel.s.first=true;peerTunnel.s.resume()}function onTcpRelayServerTunnelData(data){if(this.first==true){this.first=false;this.pipe(this.tcprelay)}}function onTunnelClosed(){if(tunnels[this.httprequest.index]==null){return}delete tunnels[this.httprequest.index];if(this.httprequest.uploadFile){fs.closeSync(this.httprequest.uploadFile);this.httprequest.uploadFile=undefined}if(this.httprequest.downloadFile){fs.closeSync(this.httprequest.downloadFile);this.httprequest.downloadFile=undefined}if(this.webrtc!=null){if(this.webrtc.rtcchannel){try{this.webrtc.rtcchannel.close()}catch(e){}this.webrtc.rtcchannel.removeAllListeners("data");this.webrtc.rtcchannel.removeAllListeners("end");delete this.webrtc.rtcchannel}if(this.webrtc.websocket){delete this.webrtc.websocket}try{this.webrtc.close()}catch(e){}this.webrtc.removeAllListeners("connected");this.webrtc.removeAllListeners("disconnected");this.webrtc.removeAllListeners("dataChannel");delete this.webrtc}this.removeAllListeners("data")}function onTunnelSendOk(){}function onTunnelData(data){if(this.httprequest.uploadFile){try{fs.writeSync(this.httprequest.uploadFile,data)}catch(e){this.write(new Buffer(JSON.stringify({action:"uploaderror"})));return}this.write(new Buffer(JSON.stringify({action:"uploadack",reqid:this.httprequest.uploadFileid})));return}if(this.httprequest.state==0){if(data=="c"){this.httprequest.state=1}}else{if(this.httprequest.protocol==0){this.httprequest.protocol=parseInt(data);if(typeof this.httprequest.protocol!="number"){this.httprequest.protocol=0}if(this.httprequest.protocol==1){if(((this.httprequest.rights&MESHRIGHT_REMOTECONTROL)==0)||((this.httprequest.rights!=4294967295)&&((this.httprequest.rights&MESHRIGHT_NOTERMINAL)!=0))){this.httprequest.protocol=999999;this.httprequest.s.end();sendConsoleText("Error: No Terminal Control Rights.");return}if(process.platform=="win32"){this.httprequest._term=require("win-terminal").Start(80,25);this.httprequest._term.pipe(this,{dataTypeSkip:1});this.pipe(this.httprequest._term,{dataTypeSkip:1,end:false});this.prependListener("end",function(){this.httprequest._term.end(function(){console.log("Terminal was closed")})})}else{this.httprequest.process=childProcess.execFile("/bin/sh",["sh"],{type:childProcess.SpawnTypes.TERM});this.httprequest.process.tunnel=this;this.httprequest.process.on("exit",function(ecode,sig){this.tunnel.end()});this.httprequest.process.stderr.on("data",function(chunk){this.parent.tunnel.write(chunk)});this.httprequest.process.stdout.pipe(this,{dataTypeSkip:1});this.pipe(this.httprequest.process.stdin,{dataTypeSkip:1,end:false});this.prependListener("end",function(){this.httprequest.process.kill()})}this.end=function(){if(process.platform=="win32"){this.unpipe(this.httprequest._term);this.httprequest._term.unpipe(this);if(this.rtcchannel){this.rtcchannel.unpipe(this.httprequest._term);this.httprequest._term.unpipe(this.rtcchannel)}this.httprequest._term.end();this.httprequest._term=null}else{}};this.removeAllListeners("data");this.on("data",onTunnelControlData);if(process.platform=="linux"){this.httprequest.process.stdin.write("stty erase ^H\nalias ls='ls --color=auto'\nclear\n")}}else{if(this.httprequest.protocol==2){if(((this.httprequest.rights&MESHRIGHT_REMOTECONTROL)==0)&&((this.httprequest.rights&MESHRIGHT_REMOTEVIEW)==0)){this.httprequest.protocol=999999;this.httprequest.s.end();sendConsoleText("Error: No Desktop Control Rights.");return}this.httprequest.desktop={state:0,kvm:mesh.getRemoteDesktopStream(),tunnel:this};this.httprequest.desktop.kvm.parent=this.httprequest.desktop;this.desktop=this.httprequest.desktop;this.end=function(){--this.desktop.kvm.connectionCount;this.unpipe(this.httprequest.desktop.kvm);this.httprequest.desktop.kvm.unpipe(this);if(this.rtcchannel){this.rtcchannel.unpipe(this.httprequest.desktop.kvm);this.httprequest.desktop.kvm.unpipe(this.rtcchannel)}if(this.desktop.kvm.connectionCount==0){this.httprequest.desktop.kvm.end()}};if(this.httprequest.desktop.kvm.hasOwnProperty("connectionCount")){this.httprequest.desktop.kvm.connectionCount++}else{this.httprequest.desktop.kvm.connectionCount=1}if((this.httprequest.rights==4294967295)||(((this.httprequest.rights&MESHRIGHT_REMOTECONTROL)!=0)&&((this.httprequest.rights&MESHRIGHT_REMOTEVIEW)==0))){this.pipe(this.httprequest.desktop.kvm,{dataTypeSkip:1,end:false})}else{}this.httprequest.desktop.kvm.pipe(this,{dataTypeSkip:1});this.removeAllListeners("data");this.on("data",onTunnelControlData)}else{if(this.httprequest.protocol==5){if(((this.httprequest.rights&MESHRIGHT_REMOTECONTROL)==0)||((this.httprequest.rights!=4294967295)&&((this.httprequest.rights&MESHRIGHT_NOFILES)!=0))){this.httprequest.protocol=999999;this.httprequest.s.end();sendConsoleText("Error: No Files Control Rights.");return}}}}}else{if(this.httprequest.protocol==1){this.httprequest.process.write(data)}else{if(this.httprequest.protocol==2){if(this.httprequest.desktop.state==0){this.write(new Buffer(String.fromCharCode(17,254,0,0,77,69,83,72,0,0,0,0,2)));this.httprequest.desktop.state=1}else{this.httprequest.desktop.write(data)}}else{if(this.httprequest.protocol==5){var cmd=null;try{cmd=JSON.parse(data)}catch(e){}if(cmd==null){return}if((cmd.ctrlChannel=="102938")||((cmd.type=="offer")&&(cmd.sdp!=null))){onTunnelControlData(cmd,this);return}if(cmd.action==undefined){return}if((cmd.path!=null)&&(process.platform!="win32")&&(cmd.path[0]!="/")){cmd.path="/"+cmd.path}switch(cmd.action){case"ls":var response=getDirectoryInfo(cmd.path);if(cmd.reqid!=undefined){response.reqid=cmd.reqid}this.write(new Buffer(JSON.stringify(response)));break;case"mkdir":fs.mkdirSync(cmd.path);break;case"rm":for(var i in cmd.delfiles){try{deleteFolderRecursive(obj.path.join(cmd.path,cmd.delfiles[i]),cmd.rec)}catch(e){}}break;case"rename":var oldfullpath=obj.path.join(cmd.path,cmd.oldname);var newfullpath=obj.path.join(cmd.path,cmd.newname);try{fs.renameSync(oldfullpath,newfullpath)}catch(e){console.log(e)}break;case"download":var sendNextBlock=0;if(cmd.sub=="start"){if(this.filedownload!=null){this.write({action:"download",sub:"cancel",id:this.filedownload.id});delete this.filedownload}this.filedownload={id:cmd.id,path:cmd.path,ptr:0};try{this.filedownload.f=fs.openSync(this.filedownload.path,"rbN")}catch(e){this.write({action:"download",sub:"cancel",id:this.filedownload.id});delete this.filedownload}if(this.filedownload){this.write({action:"download",sub:"start",id:cmd.id})}}else{if((this.filedownload!=null)&&(cmd.id==this.filedownload.id)){if(cmd.sub=="startack"){sendNextBlock=8}else{if(cmd.sub=="stop"){delete this.filedownload}else{if(cmd.sub=="ack"){sendNextBlock=1}}}}}while(sendNextBlock>0){sendNextBlock--;var buf=new Buffer(4096);var len=fs.readSync(this.filedownload.f,buf,4,4092,null);this.filedownload.ptr+=len;if(len<4092){buf.writeInt32BE(16777217,0);fs.closeSync(this.filedownload.f);delete this.filedownload;sendNextBlock=0}else{buf.writeInt32BE(16777216,0)}this.write(buf.slice(0,len+4))}break;case"upload":if(this.httprequest.uploadFile!=undefined){fs.closeSync(this.httprequest.uploadFile);this.httprequest.uploadFile=undefined}if(cmd.path==undefined){break}var filepath=cmd.name?obj.path.join(cmd.path,cmd.name):cmd.path;try{this.httprequest.uploadFile=fs.openSync(filepath,"wbN")}catch(e){this.write(new Buffer(JSON.stringify({action:"uploaderror",reqid:cmd.reqid})));break}this.httprequest.uploadFileid=cmd.reqid;if(this.httprequest.uploadFile){this.write(new Buffer(JSON.stringify({action:"uploadstart",reqid:this.httprequest.uploadFileid})))}break;case"copy":for(var i in cmd.names){var sc=obj.path.join(cmd.scpath,cmd.names[i]),ds=obj.path.join(cmd.dspath,cmd.names[i]);if(sc!=ds){try{fs.copyFileSync(sc,ds)}catch(e){}}}break;case"move":for(var i in cmd.names){var sc=obj.path.join(cmd.scpath,cmd.names[i]),ds=obj.path.join(cmd.dspath,cmd.names[i]);if(sc!=ds){try{fs.copyFileSync(sc,ds);fs.unlinkSync(sc)}catch(e){}}}break;default:break}}}}}}}function deleteFolderRecursive(path,rec){if(fs.existsSync(path)){if(rec==true){fs.readdirSync(obj.path.join(path,"*")).forEach(function(file,index){var curPath=obj.path.join(path,file);if(fs.statSync(curPath).isDirectory()){deleteFolderRecursive(curPath,true)}else{fs.unlinkSync(curPath)}})}fs.unlinkSync(path)}}function onTunnelWebRTCControlData(data){if(typeof data!="string"){return}var obj;try{obj=JSON.parse(data)}catch(e){sendConsoleText("Invalid control JSON on WebRTC: "+data);return}if(obj.type=="close"){try{this.close()}catch(e){}try{this.xrtc.close()}catch(e){}}}function onTunnelControlData(data,ws){var obj;if(ws==null){ws=this}if(typeof data=="string"){try{obj=JSON.parse(data)}catch(e){sendConsoleText("Invalid control JSON: "+data);return}}else{if(typeof data=="object"){obj=data}else{return}}if(obj.action){switch(obj.action){case"lock":try{if(process.platform=="win32"){var child=require("child_process");child.execFile(process.env.windir+"\\system32\\cmd.exe",["/c","RunDll32.exe user32.dll,LockWorkStation"],{type:1})}}catch(e){}break;default:break}return}if(obj.type=="close"){try{ws.close()}catch(e){}}else{if(obj.type=="webrtc0"){if(ws.httprequest.protocol==1){if(process.platform=="win32"){ws.httprequest._term.unpipe(ws)}else{ws.httprequest.process.stdout.unpipe(ws);ws.httprequest.process.stderr.unpipe(ws)}}else{if(ws.httprequest.protocol==2){ws.httprequest.desktop.kvm.unpipe(ws)}else{ws.rtcchannel.httprequest=ws.httprequest;ws.rtcchannel.removeAllListeners("data");ws.rtcchannel.on("data",onTunnelData)}}ws.write('{"ctrlChannel":"102938","type":"webrtc1"}')}else{if(obj.type=="webrtc1"){if(ws.httprequest.protocol==1){if(process.platform=="win32"){ws.unpipe(ws.httprequest._term);ws.rtcchannel.pipe(ws.httprequest._term,{dataTypeSkip:1})}else{ws.unpipe(ws.httprequest.process.stdin);ws.rtcchannel.pipe(ws.httprequest.process.stdin,{dataTypeSkip:1})}ws.resume()}else{if(ws.httprequest.protocol==2){ws.unpipe(ws.httprequest.desktop.kvm);try{ws.webrtc.rtcchannel.pipe(ws.httprequest.desktop.kvm,{dataTypeSkip:1,end:false})}catch(e){sendConsoleText("EX2")}ws.resume()}}ws.write('{"ctrlChannel":"102938","type":"webrtc2"}')}else{if(obj.type=="webrtc2"){if(ws.httprequest.protocol==1){if(process.platform=="win32"){ws.httprequest._term.pipe(ws.webrtc.rtcchannel,{dataTypeSkip:1,end:false})}else{ws.httprequest.process.stdout.pipe(ws.webrtc.rtcchannel,{dataTypeSkip:1,end:false});ws.httprequest.process.stderr.pipe(ws.webrtc.rtcchannel,{dataTypeSkip:1,end:false})}}else{if(ws.httprequest.protocol==2){ws.httprequest.desktop.kvm.pipe(ws.webrtc.rtcchannel,{dataTypeSkip:1})}}}else{if(obj.type=="offer"){if(ws.httprequest.protocol==1){return}ws.webrtc=rtc.createConnection();ws.webrtc.websocket=ws;ws.webrtc.on("connected",function(){});ws.webrtc.on("disconnected",function(){});ws.webrtc.on("dataChannel",function(rtcchannel){rtcchannel.xrtc=this;rtcchannel.websocket=this.websocket;this.rtcchannel=rtcchannel;this.websocket.rtcchannel=rtcchannel;this.websocket.rtcchannel.on("data",onTunnelWebRTCControlData);this.websocket.rtcchannel.on("end",function(){if(this.websocket.desktop&&this.websocket.desktop.kvm){this.unpipe(this.websocket.desktop.kvm);this.websocket.httprequest.desktop.kvm.unpipe(this)}});this.websocket.write('{"ctrlChannel":"102938","type":"webrtc0"}')});var sdp=null;try{sdp=ws.webrtc.setOffer(obj.sdp)}catch(ex){}if(sdp!=null){ws.write({type:"answer",ctrlChannel:"102938",sdp:sdp})}}}}}}}var consoleWebSockets={};var consoleHttpRequest=null;function consoleHttpResponse(response){response.data=function(data){sendConsoleText(rstr2hex(buf2rstr(data)),this.sessionid);consoleHttpRequest=null};response.close=function(){sendConsoleText("httprequest.response.close",this.sessionid);consoleHttpRequest=null}}function openUserDesktopUrl(url){var child=null;try{switch(process.platform){case"win32":child=require("child_process").execFile(process.env.windir+"\\system32\\cmd.exe",["/c","start",url],{type:childProcess.SpawnTypes.USER});break;case"linux":child=require("child_process").execFile("/usr/bin/xdg-open",["xdg-open",url],{uid:require("user-sessions").consoleUid()});break;case"darwin":child=require("child_process").execFile("/usr/bin/open",["open",url],{uid:require("user-sessions").consoleUid()});break;default:break}}catch(ex){}return child}function processConsoleCommand(cmd,args,rights,sessionid){try{var response=null;switch(cmd){case"help":response="Available commands: help, info, osinfo,args, print, type, dbget, dbset, dbcompact, eval, parseuri, httpget,\r\nwslist, wsconnect, wssend, wsclose, notify, ls, ps, kill, amt, netinfo, location, power, wakeonlan, scanwifi,\r\nscanamt, setdebug, smbios, rawsmbios, toast, lock, users, sendcaps, openurl, amtreset, amtccm, amtdeactivate,\r\namtpolicy, getscript, getclip, setclip.";break;case"getclip":if(require("MeshAgent").isService){require("clipboard").dispatchRead().then(function(str){sendConsoleText(str,sessionid)})}else{require("clipboard").read().then(function(str){sendConsoleText(str,sessionid)})}break;case"setclip":if(args._.length!=1){response='Proper usage: setclip "sample text"'}else{if(require("MeshAgent").isService){require("clipboard").dispatchWrite(args._[0]);response='Setting clipboard to: "'+args._[0]+'"'}else{require("clipboard")(args._[0]);response='Setting clipboard to: "'+args._[0]+'"'}}break;case"amtreset":if(amt!=null){amt.reset();response="Done."}break;case"amtlmsreset":if(amt!=null){amt.lmsreset();response="Done."}break;case"amtccm":if(amt==null){response="Intel AMT not supported."}else{if(args._.length!=1){response="Proper usage: amtccm (adminPassword)"}else{amt.setPolicy({type:0});amt.activeToCCM(args._[0])}}break;case"amtdeactivate":if(amt==null){response="Intel AMT not supported."}else{amt.setPolicy({type:0});amt.deactivateCCM()}break;case"amtpolicy":if(amtPolicy==null){response="No Intel(R) AMT policy."}else{response=JSON.stringify(amtPolicy)}break;case"openurl":if(args._.length!=1){response="Proper usage: openurl (url)"}else{if(openUserDesktopUrl(args._[0])==null){response="Failed."}else{response="Success."}}break;case"users":if(meshCoreObj.users==null){response="Active users are unknown."}else{response="Active Users: "+meshCoreObj.users.join(", ")+"."}require("user-sessions").enumerateUsers().then(function(u){for(var i in u){sendConsoleText(u[i])}});break;case"toast":if(process.platform=="win32"){if(args._.length<1){response='Proper usage: toast "message"'}else{require("toaster").Toast("MeshCentral",args._[0]);response="ok"}}else{response="Only supported on Windows."}break;case"setdebug":if(args._.length<1){response="Proper usage: setdebug (target), 0 = Disabled, 1 = StdOut, 2 = This Console, * = All Consoles, 4 = WebLog, 8 = Logfile"}else{if(args._[0]=="*"){console.setDestination(2)}else{console.setDestination(parseInt(args._[0]),sessionid)}}break;case"ps":processManager.getProcesses(function(plist){var x="";for(var i in plist){x+=i+", "+plist[i].cmd+((plist[i].user)?(", "+plist[i].user):"")+"\r\n"}sendConsoleText(x,sessionid)});break;case"kill":if((args._.length<1)){response="Proper usage: kill [pid]"}else{process.kill(parseInt(args._[0]));response="Killed process "+args._[0]+"."}break;case"smbios":if(SMBiosTables==null){response="SMBios tables not available."}else{response=objToString(SMBiosTables,0," ",true)}break;case"rawsmbios":if(SMBiosTablesRaw==null){response="SMBios tables not available."}else{response="";for(var i in SMBiosTablesRaw){var header=false;for(var j in SMBiosTablesRaw[i]){if(SMBiosTablesRaw[i][j].length>0){if(header==false){response+=("Table type #"+i+((require("smbios").smTableTypes[i]==null)?"":(", "+require("smbios").smTableTypes[i])))+"\r\n";header=true}response+=(" "+SMBiosTablesRaw[i][j].toString("hex"))+"\r\n"}}}}break;case"eval":if(args._.length<1){response='Proper usage: eval "JavaScript code"'}else{response=JSON.stringify(mesh.eval(args._[0]))}break;case"notify":if(args._.length!=1){response='Proper usage: notify "message" [--session]'}else{var notification={action:"msg",type:"notify",value:args._[0],tag:"console"};if(args.session){notification.sessionid=sessionid}mesh.SendCommand(notification);response="ok"}break;case"info":response="Current Core: "+meshCoreObj.value+".\r\nAgent Time: "+Date()+".\r\nUser Rights: 0x"+rights.toString(16)+".\r\nPlatform: "+process.platform+".\r\nCapabilities: "+meshCoreObj.caps+".\r\nServer URL: "+mesh.ServerUrl+".";if(amt!=null){response+="\r\nBuilt-in LMS: "+["Disabled","Connecting..","Connected"][amt.lmsstate]+"."}if(meshCoreObj.osdesc){response+="\r\nOS: "+meshCoreObj.osdesc+"."}response+="\r\nModules: "+addedModules.join(", ")+".";response+="\r\nServer Connection: "+mesh.isControlChannelConnected+", State: "+meshServerConnectionState+".";response+="\rlastMeInfo: "+lastMeInfo+".";var oldNodeId=db.Get("OldNodeId");if(oldNodeId!=null){response+="\r\nOldNodeID: "+oldNodeId+"."}if(process.platform!="win32"){response+="\r\nX11 support: "+require("monitor-info").kvm_x11_support+"."}break;case"osinfo":var i=1;if(args._.length>0){i=parseInt(args._[0]);if(i>8){i=8}response="Calling "+i+" times."}for(var j=0;j<i;j++){var pr=require("os").name();pr.sessionid=sessionid;pr.then(function(v){sendConsoleText("OS: "+v,this.sessionid)})}break;case"sendcaps":if(args._.length==0){response="Proper usage: sendcaps (number)"}else{meshCoreObj.caps=parseInt(args._[0]);mesh.SendCommand(meshCoreObj);response=JSON.stringify(meshCoreObj)}break;case"sendosdesc":if(args._.length>0){meshCoreObj.osdesc=args._[0];mesh.SendCommand(meshCoreObj);response=JSON.stringify(meshCoreObj)}else{response="Proper usage: sendosdesc [os description]"}break;case"args":response="args "+objToString(args,0," ",true);break;case"print":var r=[];for(var i in args._){r.push(args._[i])}console.log(r.join(" "));response="Message printed on agent console.";break;case"type":if(args._.length==0){response="Proper usage: type (filepath) [maxlength]"}else{var max=4096;if((args._.length>1)&&(typeof args._[1]=="number")){max=args._[1]}if(max>4096){max=4096}var buf=Buffer.alloc(max),fd=fs.openSync(args._[0],"r"),r=fs.readSync(fd,buf,0,max);response=buf.toString();var i=response.indexOf("\n");if((i>0)&&(response[i-1]!="\r")){response=response.split("\n").join("\r\n")}if(r==max){response+="..."}fs.closeSync(fd)}break;case"dbkeys":response=JSON.stringify(db.Keys);break;case"dbget":if(db==null){response="Database not accessible.";break}if(args._.length!=1){response="Proper usage: dbget (key)"}else{response=db.Get(args._[0])}break;case"dbset":if(db==null){response="Database not accessible.";break}if(args._.length!=2){response="Proper usage: dbset (key) (value)"}else{var r=db.Put(args._[0],args._[1]);response="Key set: "+r}break;case"dbcompact":if(db==null){response="Database not accessible.";break}var r=db.Compact();response="Database compacted: "+r;break;case"httpget":if(consoleHttpRequest!=null){response="HTTP operation already in progress."}else{if(args._.length!=1){response="Proper usage: httpget (url)"}else{var options=http.parseUri(args._[0]);options.method="GET";if(options==null){response="Invalid url."}else{try{consoleHttpRequest=http.request(options,consoleHttpResponse)}catch(e){response="Invalid HTTP GET request"}consoleHttpRequest.sessionid=sessionid;if(consoleHttpRequest!=null){consoleHttpRequest.end();response="HTTPGET "+options.protocol+"//"+options.host+":"+options.port+options.path}}}}break;case"wslist":response="";for(var i in consoleWebSockets){var httprequest=consoleWebSockets[i];response+="Websocket #"+i+", "+httprequest.url+"\r\n"}if(response==""){response="no websocket sessions."}break;case"wsconnect":if(args._.length==0){response="Proper usage: wsconnect (url)\r\nFor example: wsconnect wss://localhost:443/meshrelay.ashx?id=abc"}else{var httprequest=null;try{var options=http.parseUri(args._[0]);options.rejectUnauthorized=0;httprequest=http.request(options)}catch(e){response="Invalid HTTP websocket request"}if(httprequest!=null){httprequest.upgrade=onWebSocketUpgrade;httprequest.on("error",function(e){sendConsoleText("ERROR: "+JSON.stringify(e))});var index=1;while(consoleWebSockets[index]){index++}httprequest.sessionid=sessionid;httprequest.index=index;httprequest.url=args._[0];consoleWebSockets[index]=httprequest;response="New websocket session #"+index}}break;case"wssend":if(args._.length==0){response="Proper usage: wssend (socketnumber)\r\n";for(var i in consoleWebSockets){var httprequest=consoleWebSockets[i];response+="Websocket #"+i+", "+httprequest.url+"\r\n"}}else{var i=parseInt(args._[0]);var httprequest=consoleWebSockets[i];if(httprequest!=undefined){httprequest.s.write(args._[1]);response="ok"}else{response="Invalid web socket number"}}break;case"wsclose":if(args._.length==0){response="Proper usage: wsclose (socketnumber)"}else{var i=parseInt(args._[0]);var httprequest=consoleWebSockets[i];if(httprequest!=undefined){if(httprequest.s!=null){httprequest.s.end()}else{httprequest.end()}response="ok"}else{response="Invalid web socket number"}}break;case"tunnels":response="";for(var i in tunnels){response+="Tunnel #"+i+", "+tunnels[i].url+"\r\n"}if(response==""){response="No websocket sessions."}break;case"ls":response="";var xpath="*";if(args._.length>0){xpath=obj.path.join(args._[0],"*")}response="List of "+xpath+"\r\n";var results=fs.readdirSync(xpath);for(var i=0;i<results.length;++i){var stat=null,p=obj.path.join(args._[0],results[i]);try{stat=fs.statSync(p)}catch(e){}if((stat==null)||(stat==undefined)){response+=(results[i]+"\r\n")}else{response+=(results[i]+" "+((stat.isDirectory())?"(Folder)":"(File)")+"\r\n")}}break;case"lsx":response=objToString(getDirectoryInfo(args._[0]),0," ",true);break;case"lock":if(process.platform=="win32"){var child=require("child_process");child.execFile(process.env.windir+"\\system32\\cmd.exe",["/c","RunDll32.exe user32.dll,LockWorkStation"],{type:1});response="Ok"}else{response="Not supported on the platform"}break;case"amt":if(amt!=null){amt.getAmtInfo(function(state){var resp="Intel AMT not detected.";if(state!=null){resp=objToString(state,0," ",true)}sendConsoleText(resp,sessionid)})}break;case"netinfo":var interfaces=require("os").networkInterfaces();response=objToString(interfaces,0," ",true);break;case"netinfo2":response=objToString(mesh.NetInfo,0," ",true);break;case"wakeonlan":if((args._.length!=1)||(args._[0].length!=12)){response='Proper usage: wakeonlan [mac], for example "wakeonlan 010203040506".'}else{var count=sendWakeOnLan(args._[0]);response="Sent wake-on-lan on "+count+" interface(s)."}break;case"sendall":sendConsoleText(args._.join(" "));break;case"power":if(mesh.ExecPowerState==undefined){response="Power command not supported on this agent."}else{if((args._.length==0)||(typeof args._[0]!="number")){response="Proper usage: power (actionNumber), where actionNumber is:\r\n LOGOFF = 1\r\n SHUTDOWN = 2\r\n REBOOT = 3\r\n SLEEP = 4\r\n HIBERNATE = 5\r\n DISPLAYON = 6\r\n KEEPAWAKE = 7\r\n BEEP = 8\r\n CTRLALTDEL = 9\r\n VIBRATE = 13\r\n FLASH = 14"}else{var r=mesh.ExecPowerState(args._[0],args._[1]);response="Power action executed with return code: "+r+"."}}break;case"location":getIpLocationData(function(location){sendConsoleText(objToString({action:"iplocation",type:"publicip",value:location},0," "))});break;case"parseuri":response=JSON.stringify(http.parseUri(args._[0]));break;case"scanwifi":if(wifiScanner!=null){var wifiPresent=wifiScanner.hasWireless;if(wifiPresent){response="Perfoming Wifi scan...";wifiScanner.Scan()}else{response="Wifi absent."}}else{response="Wifi module not present."}break;case"scanamt":if(amtscanner!=null){if(args._.length!=1){response="Usage examples:\r\n scanamt 1.2.3.4\r\n scanamt 1.2.3.0-1.2.3.255\r\n scanamt 1.2.3.0/24\r\n"}else{response="Scanning: "+args._[0]+"...";amtscanner.scan(args._[0],2000,function(data){if(data.length>0){var r="",pstates=["NotActivated","InActivation","Activated"];for(var i in data){var x=data[i];if(r!=""){r+="\r\n"}r+=x.address+" - Intel AMT v"+x.majorVersion+"."+x.minorVersion;if(x.provisioningState<3){r+=(", "+pstates[x.provisioningState])}if(x.provisioningState==2){r+=(", "+x.openPorts.join(", "))}r+="."}}else{r="No Intel AMT found."}sendConsoleText(r)})}}else{response="Intel AMT scanner module not present."}break;case"modules":response=JSON.stringify(addedModules);break;case"getscript":if(args._.length!=1){response="Proper usage: getscript [scriptNumber]."}else{mesh.SendCommand({action:"getScript",type:args._[0]})}break;default:response='Unknown command "'+cmd+'", type "help" for list of avaialble commands.';break}}catch(e){response="Command returned an exception error: "+e;console.log(e)}if(response!=null){sendConsoleText(response,sessionid)}}function sendConsoleText(text,sessionid){if(typeof text=="object"){text=JSON.stringify(text)}mesh.SendCommand({action:"msg",type:"console",value:text,sessionid:sessionid})}function handleServerConnection(state){meshServerConnectionState=state;if(meshServerConnectionState==0){if(selfInfoUpdateTimer!=null){clearInterval(selfInfoUpdateTimer);selfInfoUpdateTimer=null}lastSelfInfo=null}else{var oldNodeId=db.Get("OldNodeId");if(oldNodeId!=null){mesh.SendCommand({action:"mc1migration",oldnodeid:oldNodeId})}mesh.SendCommand(meshCoreObj);if(SMBiosTablesRaw!=null){mesh.SendCommand({action:"smbios",value:SMBiosTablesRaw})}meInfoStr=null;sendPeriodicServerUpdate()}}var sendNetworkUpdateNagleTimer=null;function sendNetworkUpdateNagle(){if(sendNetworkUpdateNagleTimer!=null){clearTimeout(sendNetworkUpdateNagleTimer);sendNetworkUpdateNagleTimer=null}sendNetworkUpdateNagleTimer=setTimeout(sendNetworkUpdate,5000)}function sendNetworkUpdate(force){sendNetworkUpdateNagleTimer=null;var netInfo=mesh.NetInfo;netInfo.action="netinfo";var netInfoStr=JSON.stringify(netInfo);if((force==true)||(clearGatewayMac(netInfoStr)!=clearGatewayMac(lastNetworkInfo))){mesh.SendCommand(netInfo);lastNetworkInfo=netInfoStr}}function sendPeriodicServerUpdate(flags){if(meshServerConnectionState==0){return}if(!flags){flags=4294967295}if((flags&1)&&(amt!=null)){amt.getAmtInfo(function(meinfo){try{if(meinfo==null){return}var intelamt={},p=false;if(meinfo.Versions&&meinfo.Versions.AMT){intelamt.ver=meinfo.Versions.AMT;p=true}if(meinfo.ProvisioningState){intelamt.state=meinfo.ProvisioningState;p=true}if(meinfo.Flags){intelamt.flags=meinfo.Flags;p=true}if(meinfo.OsHostname){intelamt.host=meinfo.OsHostname;p=true}if(meinfo.UUID){intelamt.uuid=meinfo.UUID;p=true}if(p==true){var meInfoStr=JSON.stringify(intelamt);if(meInfoStr!=lastMeInfo){meshCoreObj.intelamt=intelamt;mesh.SendCommand(meshCoreObj);lastMeInfo=meInfoStr}}}catch(ex){}})}if(flags&2){sendNetworkUpdateNagle(false)}}obj.start=function(){mesh.AddCommandHandler(handleServerCommand);mesh.AddConnectHandler(handleServerConnection);try{var userSession=require("user-sessions");userSession.on("changed",function onUserSessionChanged(){userSession.enumerateUsers().then(function(users){var u=[],a=users.Active;for(var i=0;i<a.length;i++){var un=a[i].Domain?(a[i].Domain+"\\"+a[i].Username):(a[i].Username);if(u.indexOf(un)==-1){u.push(un)}}meshCoreObj.users=u;mesh.SendCommand(meshCoreObj)})});userSession.emit("changed")}catch(ex){}};obj.stop=function(){mesh.AddCommandHandler(null);mesh.AddConnectHandler(null)};function onWebSocketClosed(){sendConsoleText("WebSocket #"+this.httprequest.index+" closed.",this.httprequest.sessionid);delete consoleWebSockets[this.httprequest.index]}function onWebSocketData(data){sendConsoleText("Got WebSocket #"+this.httprequest.index+" data: "+data,this.httprequest.sessionid)}function onWebSocketSendOk(){sendConsoleText("WebSocket #"+this.index+" SendOK.",this.sessionid)}function onWebSocketUpgrade(response,s,head){sendConsoleText("WebSocket #"+this.index+" connected.",this.sessionid);this.s=s;s.httprequest=this;s.end=onWebSocketClosed;s.data=onWebSocketData}return obj}try{var xexports=null,mainMeshCore=null;try{xexports=module.exports}catch(e){}if(xexports!=null){module.exports.createMeshCore=createMeshCore}else{mainMeshCore=createMeshCore();mainMeshCore.start(null)}}catch(ex){require("MeshAgent").SendCommand({action:"msg",type:"console",value:"uncaughtException2: "+ex})};
\ No newline at end of file
certoperations.js
+3
-7
@@ -156,13 +156,9 @@ module.exports.CertificateOperations = function (parent) {
156
var extensions = [{ name: "basicConstraints", cA: false }, { name: "keyUsage", keyCertSign: false, digitalSignature: true, nonRepudiation: false, keyEncipherment: true, dataEncipherment: (extKeyUsage.serverAuth !== true) }, extKeyUsage, { name: "subjectKeyIdentifier" }];
157
158
if (extKeyUsage.serverAuth === true) {
159
-
160
- // set subjectAltName according to commonName parsing.
159
+ // Set subjectAltName according to commonName parsing.
160
// Ideally, we should let opportunity in given interface to set any type of altNames according to node_forge library
162
- // such as type 2, 6 and 7
163
- // 2 -> DNS
164
- // 6 -> URI
165
- // 7 -> IP
161
+ // such as type 2, 6 and 7. (2 -> DNS, 6 -> URI, 7 -> IP)
162
var altNames = [];
163
164
// According to commonName parsing (IP or DNS), add URI and DNS and/or IP altNames
@@ -176,7 +172,7 @@ module.exports.CertificateOperations = function (parent) {
172
}
173
altNames.push({ type: 6, value: "http://" + commonName + "/" })
174
179
- // add localhost stuff for easy testing on localhost ;)
175
+ // Add localhost stuff for easy testing on localhost ;)
176
altNames.push({ type: 2, value: "localhost" });
177
altNames.push({ type: 6, value: "http://localhost/" });
178
altNames.push({ type: 7, ip: "127.0.0.1" });
package.json
+1
-1
@@ -1,6 +1,6 @@
1
{
2
"name": "meshcentral",
3
- "version": "0.3.0-n",
3
+ "version": "0.3.0-p",
4
"keywords": [
5
"Remote Management",
6
"Intel AMT",
public/clickonce/minirouter/Application Files/MeshMiniRouter_2_0_0_26/MeshMiniRouter.application
renamed
+19
-19
@@ -1,30 +1,30 @@
1
<?xml version="1.0" encoding="utf-8"?>
2
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
3
- <assemblyIdentity name="MeshMiniRouter.application" version="2.0.0.25" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" />
3
+ <assemblyIdentity name="MeshMiniRouter.application" version="2.0.0.26" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" />
4
<description asmv2:publisher="Meshcentral.com" asmv2:product="MeshCentral Mini-Router" asmv2:supportUrl="https://meshcentral.com/" xmlns="urn:schemas-microsoft-com:asm.v1" />
5
<deployment install="false" mapFileExtensions="true" trustURLParameters="true" />
6
<compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2">
7
<framework targetVersion="4.5" profile="Full" supportedRuntime="4.0.30319" />
8
</compatibleFrameworks>
9
<dependency>
10
- <dependentAssembly dependencyType="install" codebase="Application Files\MeshMiniRouter_2_0_0_25\MeshMiniRouter.exe.manifest" size="15528">
11
- <assemblyIdentity name="MeshMiniRouter.exe" version="2.0.0.25" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" type="win32" />
10
+ <dependentAssembly dependencyType="install" codebase="Application Files\MeshMiniRouter_2_0_0_26\MeshMiniRouter.exe.manifest" size="15528">
11
+ <assemblyIdentity name="MeshMiniRouter.exe" version="2.0.0.26" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" type="win32" />
12
<hash>
13
<dsig:Transforms>
14
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
15
</dsig:Transforms>
16
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
17
- <dsig:DigestValue>CKdIZTY+zacc9zaEUGL/QVNR9UVhMgCupCL19vNPmxA=</dsig:DigestValue>
17
+ <dsig:DigestValue>kyG2U9fWMq5IcgDZPDbO47tJ7nqKdDWzttJGE7CJeSo=</dsig:DigestValue>
18
</hash>
19
</dependentAssembly>
20
</dependency>
21
-<publisherIdentity name="CN=Ylian Saint-Hilaire, OU=Open Source, O=Ylian Saint-Hilaire, POBox=97124, STREET=1370 NE Orenco Station Pkwy Unit 24, L=Hillsboro, S=Oregon, PostalCode=97124, C=US" issuerKeyHash="0ee13aa8533a31d58abec1bbad671a0385ad340e" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>JJ26OWrp+sgoU/eac0hoqHXp+i9Tv9y6BZLcg1X4XPw=</DigestValue></Reference></SignedInfo><SignatureValue>Vqo7kyRpoyTdshuBZp8jO6ItlZD9DUrHX15E5ccQKufS7YYxZ68tdJXKsg88/Gq4urge5pupz0UfEOf8lSqY3ER/1fLgfptImkL1azTCReOH061+Fc69U03j4YJxMrBEScq7gxlUFijU3C8zplw1uMWcGIC22q+ZTXD5jLSLorT9lUs6EKaub5h9gufm9/h6IEbXlEcoGxqhrD6vVrHDoJ7OHZ9XqETvZEXAMXzYWjbPYh5mljPWNxw8JUenTqgEUU+KxnKFJk1VwA1JANzOmHslqKmizYdpqbyTAoGYTLQy0BDhj4nkWtHpATlGA9Fn5+XbHUoILbTqj4KigTDfrA==</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>y4Gj+dSbVyfeUCgvmvxt+1aLfwGaoEm5N5HuXHc9snxJImo/EyJ64vrQH0lsKD0lWlIwdQpD69/5RjyMoHfspKNQj1MWu9xJzaq57l7TWb/L0GZn+TbEaiD732WVKi0ogJ8iSlzzN1vnUZUbTN/yQpbLb+hyYYntCDhzW3ONGul0OE/0l/DtCUEgRAW3vLVV4z4JkTkOUJ6fpH55/zYw2OtlAWRpN+kEArdpjbJzanv410vJt+djfS2rhHB5asiWkscMkub8rlrBUtKPQWjjSZ5yLE3Vx++1CvTiAIH3HyXQisbUR2ZbnLiZ133wPkrEHFrxC6hPjIWeDZz/hZWlmQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="fc5cf85583dc9205badcbf532ffae975a86848739af75328c8fae96a39ba9d24" Description="" Url=""><as:assemblyIdentity name="MeshMiniRouter.application" version="2.0.0.25" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=Ylian Saint-Hilaire, OU=Open Source, O=Ylian Saint-Hilaire, POBox=97124, STREET=1370 NE Orenco Station Pkwy Unit 24, L=Hillsboro, S=Oregon, PostalCode=97124, C=US</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>bRwLwns6JZuKPsNdKr/ifDW+tp6bjQkgB+U7XtB7My0=</DigestValue></Reference></SignedInfo><SignatureValue>Sm4l3B936+UjHgz73PNokuALoag38Zk2Dgm3IwX6c9l13NoKT9jhTuL6uRixn7sGL9tTLhas4QvRlIRcasEP9sMFY4LAdfb09i+SdjQaQ9oT6vgrfL+sPo/P45NtTFdJo8oj43pZKzIqbL/BScNWKpuNNAUjN3jq2T7cd8E7tTyFhnztCzS21a/9yGtMZqsiI2Z0SR5MoE7BUuQyJHMKKuC7p/KmccKqjctRCHZbvZVDsuEcRE0fLdct1K0K/o0G2Qs01CUBST8O7iJJ0GVuezlsGqkP4OJ5rnV1HVz1XtZiOlum7kZeCpUf/dhlVSZ1IxOvMU3BKJJ3YNtfx2mkNA==</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>y4Gj+dSbVyfeUCgvmvxt+1aLfwGaoEm5N5HuXHc9snxJImo/EyJ64vrQH0lsKD0lWlIwdQpD69/5RjyMoHfspKNQj1MWu9xJzaq57l7TWb/L0GZn+TbEaiD732WVKi0ogJ8iSlzzN1vnUZUbTN/yQpbLb+hyYYntCDhzW3ONGul0OE/0l/DtCUEgRAW3vLVV4z4JkTkOUJ6fpH55/zYw2OtlAWRpN+kEArdpjbJzanv410vJt+djfS2rhHB5asiWkscMkub8rlrBUtKPQWjjSZ5yLE3Vx++1CvTiAIH3HyXQisbUR2ZbnLiZ133wPkrEHFrxC6hPjIWeDZz/hZWlmQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIFiDCCBHCgAwIBAgIRAMFAkI8vylir+13tTaPNiCMwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSQwIgYDVQQDExtTZWN0aWdvIFJTQSBDb2RlIFNpZ25pbmcgQ0EwHhcNMTkwMjA1MDAwMDAwWhcNMjIwMjA0MjM1OTU5WjCB0jELMAkGA1UEBhMCVVMxDjAMBgNVBBEMBTk3MTI0MQ8wDQYDVQQIDAZPcmVnb24xEjAQBgNVBAcMCUhpbGxzYm9ybzEsMCoGA1UECQwjMTM3MCBORSBPcmVuY28gU3RhdGlvbiBQa3d5IFVuaXQgMjQxDjAMBgNVBBIMBTk3MTI0MRwwGgYDVQQKDBNZbGlhbiBTYWludC1IaWxhaXJlMRQwEgYDVQQLDAtPcGVuIFNvdXJjZTEcMBoGA1UEAwwTWWxpYW4gU2FpbnQtSGlsYWlyZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMuBo/nUm1cn3lAoL5r8bftWi38BmqBJuTeR7lx3PbJ8SSJqPxMieuL60B9JbCg9JVpSMHUKQ+vf+UY8jKB37KSjUI9TFrvcSc2que5e01m/y9BmZ/k2xGog+99llSotKICfIkpc8zdb51GVG0zf8kKWy2/ocmGJ7Qg4c1tzjRrpdDhP9Jfw7QlBIEQFt7y1VeM+CZE5DlCen6R+ef82MNjrZQFkaTfpBAK3aY2yc2p7+NdLybfnY30tq4RweWrIlpLHDJLm/K5awVLSj0Fo40mecixN1cfvtQr04gCB9x8l0IrG1EdmW5y4mdd98D5KxBxa8QuoT4yFng2c/4WVpZkCAwEAAaOCAawwggGoMB8GA1UdIwQYMBaAFA7hOqhTOjHVir7Bu61nGgOFrTQOMB0GA1UdDgQWBBQAKclWaab3fMGe08CkV+m0jGQiNzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAzARBglghkgBhvhCAQEEBAMCBBAwQAYDVR0gBDkwNzA1BgwrBgEEAbIxAQIBAwIwJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ29kZVNpZ25pbmdDQS5jcmwwcwYIKwYBBQUHAQEEZzBlMD4GCCsGAQUFBzAChjJodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29SU0FDb2RlU2lnbmluZ0NBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wJAYDVR0RBB0wG4EZeXNhaW50aGlsYWlyZUBob3RtYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAGmd9J2Rp/PtNv9D2Pd38bn2Omkf8TI+Devz20d+00Pq1+0BJbh98V9jR3SgVbFdZqawnPwP53QNuFgofoRELZitu8OLqmxJRX6H4b6nsxmLR0XHBnNv1rh0mwgIOi6qGO8TvJEUrnr0Yj8zQpTAwnBRWMjmybqxgNNovui67Yq+0ppaXpGlOfMzVYmkv+cONVg3GeNLU7WEIMT2hrwpKRhmz3XVR3Mn3og8tUqrlqe0leBTLhg84t0ltP5xzP+Wyv+grOZGyGup2h9mWYa5AyrqVnRYsbnhhhi8UwaGTNu+v1WdpGt3eoYQGRPFNJtWIpCdN82D5hygSlaTjUEW6OA==</X509Certificate><X509Certificate>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</X509Certificate></X509Data></KeyInfo><Object><as:Timestamp>MIIIDwYJKoZIhvcNAQcCoIIIADCCB/wCAQExCzAJBgUrDgMCGgUAMIIBEwYJKoZI
22
-hvcNAQcBoIIBBASCAQBKbiXcH3fr5SMeDPvc82iS4AuhqDfxmTYOCbcjBfpz2XXc
23
-2gpP2OFO4vq5GLGfuwYv21MuFqzhC9GUhFxqwQ/2wwVjgsB19vT2L5J2NBpD2hPq
24
-+Ct8v6w+j8/jk21MV0mjyiPjelkrMipsv8FJw1Yqm400BSM3eOrZPtx3wTu1PIWG
25
-fO0LNLbVr/3Ia0xmqyIjZnRJHkygTsFS5DIkcwoq4Lun8qZxwqqNy1EIdlu9lUOy
26
-4RxETR8t1y3UrQr+jQbZCzTUJQFJPw7uIknQZW57OWwaqQ/g4nmudXUdXPVe1mI6
27
-W6buRl4KlR/92GVVJnUjE68xTcEokndg21/HaaQ0oIIEnTCCBJkwggOBoAMCAQIC
21
+<publisherIdentity name="CN=Ylian Saint-Hilaire, OU=Open Source, O=Ylian Saint-Hilaire, POBox=97124, STREET=1370 NE Orenco Station Pkwy Unit 24, L=Hillsboro, S=Oregon, PostalCode=97124, C=US" issuerKeyHash="0ee13aa8533a31d58abec1bbad671a0385ad340e" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>sZQnmVC2OxtzRsta18ZFRfm3l+iLXvHmtTbuXUg2eDQ=</DigestValue></Reference></SignedInfo><SignatureValue>gw/314hsyn1oj4l+OHKitPKlHxxPykhG161n7em2N5IsPDnhgE/ADVvwbdBYc2FCyVbN/gXlwrM1j/OOigCf60zFxN+qi2Rs4v7Tm1FUKR54pXkfI3WTByfQEPUpvPbb6lQz+NqhRgbd4pvzzHJdbisxNV6QYGSPMm9SinC9xnbiiFllVJXtGWM7YNKQfnxZq9Q2rThjjEJNQ8wDgAWFdf8wyymqX0BSHUn4/BdojDCQLUuv3bUW6u1THzx6c3mLVnfPFALnrlIC2GXx2evSqtaM57PTxK4K6A4PrinuK+JhbUNlqWWMRgI/IMgN8wPNLc4vFLKGNv6SCaLU4eN0aw==</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>y4Gj+dSbVyfeUCgvmvxt+1aLfwGaoEm5N5HuXHc9snxJImo/EyJ64vrQH0lsKD0lWlIwdQpD69/5RjyMoHfspKNQj1MWu9xJzaq57l7TWb/L0GZn+TbEaiD732WVKi0ogJ8iSlzzN1vnUZUbTN/yQpbLb+hyYYntCDhzW3ONGul0OE/0l/DtCUEgRAW3vLVV4z4JkTkOUJ6fpH55/zYw2OtlAWRpN+kEArdpjbJzanv410vJt+djfS2rhHB5asiWkscMkub8rlrBUtKPQWjjSZ5yLE3Vx++1CvTiAIH3HyXQisbUR2ZbnLiZ133wPkrEHFrxC6hPjIWeDZz/hZWlmQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="347836485dee36b5e6f15e8be897b7f94545c6d75acb46731b3bb650992794b1" Description="" Url=""><as:assemblyIdentity name="MeshMiniRouter.application" version="2.0.0.26" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=Ylian Saint-Hilaire, OU=Open Source, O=Ylian Saint-Hilaire, POBox=97124, STREET=1370 NE Orenco Station Pkwy Unit 24, L=Hillsboro, S=Oregon, PostalCode=97124, C=US</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>1zv4LsSI/0Ay9Bffe+e3saaMzXcEbnaOvZxz17VA/rA=</DigestValue></Reference></SignedInfo><SignatureValue>PMXlsr/62tnwzBrpDgdSkr/pS8OYjWTQ+aXE1uVHcxBWJEVkZSSdH4M0/trQ88wUhdoaD3dDktvtVtJVlfz6GZQW0NKK1/2uoMxeN8cEN1aaVILCM+XKcnKJwM2SvMCQ6SdHlPrRnF65hG8T6ixMz2Kt3GcaaTK3iXIOIIbJ3DQE5BEkUPPiWNy2te5sJDkgMpIFsmKR4tbqD1KugwNsnS34CmEm/njX4Fz62o6MjdUqRTKaautpYguuvXF+93rmr14JwVAFEQd5SXX1bdzdsgZpyU625e50iW4LM9E0N6TF0xUg7j1lt2YGzwkq8X5o668T7qgBTUxFDDmLBOT6kQ==</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>y4Gj+dSbVyfeUCgvmvxt+1aLfwGaoEm5N5HuXHc9snxJImo/EyJ64vrQH0lsKD0lWlIwdQpD69/5RjyMoHfspKNQj1MWu9xJzaq57l7TWb/L0GZn+TbEaiD732WVKi0ogJ8iSlzzN1vnUZUbTN/yQpbLb+hyYYntCDhzW3ONGul0OE/0l/DtCUEgRAW3vLVV4z4JkTkOUJ6fpH55/zYw2OtlAWRpN+kEArdpjbJzanv410vJt+djfS2rhHB5asiWkscMkub8rlrBUtKPQWjjSZ5yLE3Vx++1CvTiAIH3HyXQisbUR2ZbnLiZ133wPkrEHFrxC6hPjIWeDZz/hZWlmQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIFiDCCBHCgAwIBAgIRAMFAkI8vylir+13tTaPNiCMwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSQwIgYDVQQDExtTZWN0aWdvIFJTQSBDb2RlIFNpZ25pbmcgQ0EwHhcNMTkwMjA1MDAwMDAwWhcNMjIwMjA0MjM1OTU5WjCB0jELMAkGA1UEBhMCVVMxDjAMBgNVBBEMBTk3MTI0MQ8wDQYDVQQIDAZPcmVnb24xEjAQBgNVBAcMCUhpbGxzYm9ybzEsMCoGA1UECQwjMTM3MCBORSBPcmVuY28gU3RhdGlvbiBQa3d5IFVuaXQgMjQxDjAMBgNVBBIMBTk3MTI0MRwwGgYDVQQKDBNZbGlhbiBTYWludC1IaWxhaXJlMRQwEgYDVQQLDAtPcGVuIFNvdXJjZTEcMBoGA1UEAwwTWWxpYW4gU2FpbnQtSGlsYWlyZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMuBo/nUm1cn3lAoL5r8bftWi38BmqBJuTeR7lx3PbJ8SSJqPxMieuL60B9JbCg9JVpSMHUKQ+vf+UY8jKB37KSjUI9TFrvcSc2que5e01m/y9BmZ/k2xGog+99llSotKICfIkpc8zdb51GVG0zf8kKWy2/ocmGJ7Qg4c1tzjRrpdDhP9Jfw7QlBIEQFt7y1VeM+CZE5DlCen6R+ef82MNjrZQFkaTfpBAK3aY2yc2p7+NdLybfnY30tq4RweWrIlpLHDJLm/K5awVLSj0Fo40mecixN1cfvtQr04gCB9x8l0IrG1EdmW5y4mdd98D5KxBxa8QuoT4yFng2c/4WVpZkCAwEAAaOCAawwggGoMB8GA1UdIwQYMBaAFA7hOqhTOjHVir7Bu61nGgOFrTQOMB0GA1UdDgQWBBQAKclWaab3fMGe08CkV+m0jGQiNzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAzARBglghkgBhvhCAQEEBAMCBBAwQAYDVR0gBDkwNzA1BgwrBgEEAbIxAQIBAwIwJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ29kZVNpZ25pbmdDQS5jcmwwcwYIKwYBBQUHAQEEZzBlMD4GCCsGAQUFBzAChjJodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29SU0FDb2RlU2lnbmluZ0NBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wJAYDVR0RBB0wG4EZeXNhaW50aGlsYWlyZUBob3RtYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAGmd9J2Rp/PtNv9D2Pd38bn2Omkf8TI+Devz20d+00Pq1+0BJbh98V9jR3SgVbFdZqawnPwP53QNuFgofoRELZitu8OLqmxJRX6H4b6nsxmLR0XHBnNv1rh0mwgIOi6qGO8TvJEUrnr0Yj8zQpTAwnBRWMjmybqxgNNovui67Yq+0ppaXpGlOfMzVYmkv+cONVg3GeNLU7WEIMT2hrwpKRhmz3XVR3Mn3og8tUqrlqe0leBTLhg84t0ltP5xzP+Wyv+grOZGyGup2h9mWYa5AyrqVnRYsbnhhhi8UwaGTNu+v1WdpGt3eoYQGRPFNJtWIpCdN82D5hygSlaTjUEW6OA==</X509Certificate><X509Certificate>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</X509Certificate></X509Data></KeyInfo><Object><as:Timestamp>MIIIDwYJKoZIhvcNAQcCoIIIADCCB/wCAQExCzAJBgUrDgMCGgUAMIIBEwYJKoZI
22
+hvcNAQcBoIIBBASCAQA8xeWyv/ra2fDMGukOB1KSv+lLw5iNZND5pcTW5UdzEFYk
23
+RWRlJJ0fgzT+2tDzzBSF2hoPd0OS2+1W0lWV/PoZlBbQ0orX/a6gzF43xwQ3VppU
24
+gsIz5cpyconAzZK8wJDpJ0eU+tGcXrmEbxPqLEzPYq3cZxppMreJcg4ghsncNATk
25
+ESRQ8+JY3La17mwkOSAykgWyYpHi1uoPUq6DA2ydLfgKYSb+eNfgXPrajoyN1SpF
26
+Mppq62liC669cX73euavXgnBUAURB3lJdfVt3N2yBmnJTrbl7nSJbgsz0TQ3pMXT
27
+FSDuPWW3ZgbPCSrxfmjrrxPuqAFNTEUMOYsE5PqRoIIEnTCCBJkwggOBoAMCAQIC
28
DxaI8DklXmOOaRQ5B+YzCzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCVVMx
29
CzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMV
30
VGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0
@@ -54,12 +54,12 @@ CQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAcBgNVBAoTFVRo
54
ZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2VydHJ1
55
c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdAIPFojwOSVeY45p
56
FDkH5jMLMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwG
57
-CSqGSIb3DQEJBTEPFw0xOTAyMjgyMzQyMDVaMCMGCSqGSIb3DQEJBDEWBBTqcfSI
58
-ZIH2cGBZ5NbKLS8CFQuGkTANBgkqhkiG9w0BAQEFAASCAQAqA8H6wU7X8d+LDUk/
59
-//8sPvj/VT2AeBOCOWtKtwK4i7iH0BtSuhm5FTSTvad9sSYVEAC/eHvPCiZz58l0
60
-S7Ql4Z/msh9WTlmtR+XFWeSfgvg6zZTY3yJTpv15ee70DyLmOOxbMxGIJyZxrlzH
61
-Ayp4uuzYfUYy4KaEPX/KxnbCJmoNEPdYYgsBCbpvuHi5z25T4F1H204Ou9ylYvjA
62
-xBui3zrud2jm5wshgWfc3rG00RbtvEgQxFKpvXIykny8wL9w7ncMwEbRzcPydess
63
-nmwwCbhRkScEHrtynw04ufMC5PVaF0aNtS7a9SKdkfRbddsxcAXZNxtRAYBbuVE8
64
-TsPW
57
+CSqGSIb3DQEJBTEPFw0xOTAzMTkxNjQ1NDlaMCMGCSqGSIb3DQEJBDEWBBS/kdAN
58
+AixXmnTm+I8aGaAxZgirrDANBgkqhkiG9w0BAQEFAASCAQAyfQEaj4qHaD0A4nxu
59
+2IRwIinYT2PYNzOkA1E9ZDW0aQPOg+QvaILTLshKZxz1YTlng7J+X5gqtiy6x/Su
60
+ffpNUxyrd1j4x6RG2kzVagUMk2Z+hIFvJBM52VcWFQhq9x6gQ7AUOGG3cg7kCeOf
61
+DO21jJGHre2IY19krGsZz1P4+ebfm/BZZaUWqxe3DXsQQzWvRPigorTO/K6Xeciu
62
+qYjG3wyu4WNJOsoGiafecdcsLPF14QBPFXn4OuQG+6rfHuO7aEtVzJcTZ7WGzYh3
63
+IB1/rLld3dtPwH7JrcCIBnX2YjF2Gu9WIFQY0pOaMw4nlqyC3gBiU9dPadHQ1BUp
64
+SIT0
65
</as:Timestamp></Object></Signature></r:issuer></r:license></msrel:RelData></KeyInfo></Signature></asmv1:assembly>
\ No newline at end of file
public/clickonce/minirouter/Application Files/MeshMiniRouter_2_0_0_26/MeshMiniRouter.exe.config.deploy
renamed
public/clickonce/minirouter/Application Files/MeshMiniRouter_2_0_0_26/MeshMiniRouter.exe.deploy
renamed
Binary files a/public/clickonce/minirouter/Application Files/MeshMiniRouter_2_0_0_25/MeshMiniRouter.exe.deploy and b/public/clickonce/minirouter/Application Files/MeshMiniRouter_2_0_0_26/MeshMiniRouter.exe.deploy differ
public/clickonce/minirouter/Application Files/MeshMiniRouter_2_0_0_26/MeshMiniRouter.exe.manifest
renamed
+20
-20
@@ -1,10 +1,10 @@
1
<?xml version="1.0" encoding="utf-8"?>
2
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
3
- <asmv1:assemblyIdentity name="MeshMiniRouter.exe" version="2.0.0.25" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" type="win32" />
3
+ <asmv1:assemblyIdentity name="MeshMiniRouter.exe" version="2.0.0.26" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" type="win32" />
4
<description asmv2:iconFile="MeshMiniRouter.ico" xmlns="urn:schemas-microsoft-com:asm.v1" />
5
<application />
6
<entryPoint>
7
- <assemblyIdentity name="MeshMiniRouter" version="1.0.6998.28274" language="neutral" processorArchitecture="msil" />
7
+ <assemblyIdentity name="MeshMiniRouter" version="1.0.7017.17596" language="neutral" processorArchitecture="msil" />
8
<commandLine file="MeshMiniRouter.exe" parameters="" />
9
</entryPoint>
10
<trustInfo>
@@ -43,14 +43,14 @@
43
</dependentAssembly>
44
</dependency>
45
<dependency>
46
- <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="MeshMiniRouter.exe" size="193344">
47
- <assemblyIdentity name="MeshMiniRouter" version="1.0.6998.28274" language="neutral" processorArchitecture="msil" />
46
+ <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="MeshMiniRouter.exe" size="195392">
47
+ <assemblyIdentity name="MeshMiniRouter" version="1.0.7017.17596" language="neutral" processorArchitecture="msil" />
48
<hash>
49
<dsig:Transforms>
50
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
51
</dsig:Transforms>
52
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
53
- <dsig:DigestValue>znGsSXBIfZbzmb1bWcIxU3m5B9HSsTBQn8eRWF6c4O0=</dsig:DigestValue>
53
+ <dsig:DigestValue>b0EusUP2Qu5+8YABV5b9XFDBK5ZXQITmlCGAl25j1SA=</dsig:DigestValue>
54
</hash>
55
</dependentAssembly>
56
</dependency>
@@ -79,13 +79,13 @@
79
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->
80
</application>
81
</compatibility>
82
-<publisherIdentity name="CN=Ylian Saint-Hilaire, OU=Open Source, O=Ylian Saint-Hilaire, POBox=97124, STREET=1370 NE Orenco Station Pkwy Unit 24, L=Hillsboro, S=Oregon, PostalCode=97124, C=US" issuerKeyHash="0ee13aa8533a31d58abec1bbad671a0385ad340e" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>wesQvZCP4PR6hYljVN0LtZ3FDpHxGfBNo40AActQsW0=</DigestValue></Reference></SignedInfo><SignatureValue>mDMMZby09uFPmDv9KjRXINo2glda8GdtXVQUTeBGGEw25yM3n+BfED9WDDTDDhRZpXa1JrRRKqr+dQAlqfy85Wn5E4UcmExUuQjXDg7SrKrx56biHCXiX7IDbh/VLHE+8P/xQAji2Dd6Z1kiSZd4YtUS7RJLozcM6CeVjchFFojGHk+1RcajQpxzJYUnh8ZdNRS+N/YHQI7WYQ6jQ3MzE078bc4Me4Te3VpzHgKt8WyhxaQHh7MCY7AAHTN5SILtKZ3JO/127AO6ae+RZSmYUVbwcEUKgfh3wTs5Ox2YzIIeyi6eAhkO9no0aOgrQWu2ho1IdbhMqqEFYhq+WGDwiw==</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>y4Gj+dSbVyfeUCgvmvxt+1aLfwGaoEm5N5HuXHc9snxJImo/EyJ64vrQH0lsKD0lWlIwdQpD69/5RjyMoHfspKNQj1MWu9xJzaq57l7TWb/L0GZn+TbEaiD732WVKi0ogJ8iSlzzN1vnUZUbTN/yQpbLb+hyYYntCDhzW3ONGul0OE/0l/DtCUEgRAW3vLVV4z4JkTkOUJ6fpH55/zYw2OtlAWRpN+kEArdpjbJzanv410vJt+djfS2rhHB5asiWkscMkub8rlrBUtKPQWjjSZ5yLE3Vx++1CvTiAIH3HyXQisbUR2ZbnLiZ133wPkrEHFrxC6hPjIWeDZz/hZWlmQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="6db150cb01008da34df019f1910ec59db50bdd546389857af4e08f90bd10ebc1" Description="" Url=""><as:assemblyIdentity name="MeshMiniRouter.exe" version="2.0.0.25" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" type="win32" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=Ylian Saint-Hilaire, OU=Open Source, O=Ylian Saint-Hilaire, POBox=97124, STREET=1370 NE Orenco Station Pkwy Unit 24, L=Hillsboro, S=Oregon, PostalCode=97124, C=US</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>CY8GVgsoTYk3K6bJBY59d+OxGAOW9oCRUQGfC82lsdI=</DigestValue></Reference></SignedInfo><SignatureValue>hcI8ZHqWe5K8uDmKsPUVxdZkkPIaFYmPBRnUEihz7J687Yn7AHn/QVWOxZRdu526bdsUr/Rksv1VTi9He9K7qGB113EDhTngP3uZ1wOQM9oHZHo3wObP5O/YuTQtpH9i3ue1wmmyze9XnCTiaVYSktOAD9Lb8cSKBq+qINhqeUBvnMTboAnQKO+VygFuWGZprfFKNZFiKjbUvM7C7HoK/sOcgqlQg0fsCYTyVmgClTjWuvtqgHy/iyNFvHkHBT+qyHzgR5gaopGy2dv5wKieBYiJDE84En5jMxUl3cG48o1VNMF/s1t6zyMmV/X2+bnjazFlxZSFA0xzOck4FsCm4g==</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>y4Gj+dSbVyfeUCgvmvxt+1aLfwGaoEm5N5HuXHc9snxJImo/EyJ64vrQH0lsKD0lWlIwdQpD69/5RjyMoHfspKNQj1MWu9xJzaq57l7TWb/L0GZn+TbEaiD732WVKi0ogJ8iSlzzN1vnUZUbTN/yQpbLb+hyYYntCDhzW3ONGul0OE/0l/DtCUEgRAW3vLVV4z4JkTkOUJ6fpH55/zYw2OtlAWRpN+kEArdpjbJzanv410vJt+djfS2rhHB5asiWkscMkub8rlrBUtKPQWjjSZ5yLE3Vx++1CvTiAIH3HyXQisbUR2ZbnLiZ133wPkrEHFrxC6hPjIWeDZz/hZWlmQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIFiDCCBHCgAwIBAgIRAMFAkI8vylir+13tTaPNiCMwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSQwIgYDVQQDExtTZWN0aWdvIFJTQSBDb2RlIFNpZ25pbmcgQ0EwHhcNMTkwMjA1MDAwMDAwWhcNMjIwMjA0MjM1OTU5WjCB0jELMAkGA1UEBhMCVVMxDjAMBgNVBBEMBTk3MTI0MQ8wDQYDVQQIDAZPcmVnb24xEjAQBgNVBAcMCUhpbGxzYm9ybzEsMCoGA1UECQwjMTM3MCBORSBPcmVuY28gU3RhdGlvbiBQa3d5IFVuaXQgMjQxDjAMBgNVBBIMBTk3MTI0MRwwGgYDVQQKDBNZbGlhbiBTYWludC1IaWxhaXJlMRQwEgYDVQQLDAtPcGVuIFNvdXJjZTEcMBoGA1UEAwwTWWxpYW4gU2FpbnQtSGlsYWlyZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMuBo/nUm1cn3lAoL5r8bftWi38BmqBJuTeR7lx3PbJ8SSJqPxMieuL60B9JbCg9JVpSMHUKQ+vf+UY8jKB37KSjUI9TFrvcSc2que5e01m/y9BmZ/k2xGog+99llSotKICfIkpc8zdb51GVG0zf8kKWy2/ocmGJ7Qg4c1tzjRrpdDhP9Jfw7QlBIEQFt7y1VeM+CZE5DlCen6R+ef82MNjrZQFkaTfpBAK3aY2yc2p7+NdLybfnY30tq4RweWrIlpLHDJLm/K5awVLSj0Fo40mecixN1cfvtQr04gCB9x8l0IrG1EdmW5y4mdd98D5KxBxa8QuoT4yFng2c/4WVpZkCAwEAAaOCAawwggGoMB8GA1UdIwQYMBaAFA7hOqhTOjHVir7Bu61nGgOFrTQOMB0GA1UdDgQWBBQAKclWaab3fMGe08CkV+m0jGQiNzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAzARBglghkgBhvhCAQEEBAMCBBAwQAYDVR0gBDkwNzA1BgwrBgEEAbIxAQIBAwIwJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ29kZVNpZ25pbmdDQS5jcmwwcwYIKwYBBQUHAQEEZzBlMD4GCCsGAQUFBzAChjJodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29SU0FDb2RlU2lnbmluZ0NBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wJAYDVR0RBB0wG4EZeXNhaW50aGlsYWlyZUBob3RtYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAGmd9J2Rp/PtNv9D2Pd38bn2Omkf8TI+Devz20d+00Pq1+0BJbh98V9jR3SgVbFdZqawnPwP53QNuFgofoRELZitu8OLqmxJRX6H4b6nsxmLR0XHBnNv1rh0mwgIOi6qGO8TvJEUrnr0Yj8zQpTAwnBRWMjmybqxgNNovui67Yq+0ppaXpGlOfMzVYmkv+cONVg3GeNLU7WEIMT2hrwpKRhmz3XVR3Mn3og8tUqrlqe0leBTLhg84t0ltP5xzP+Wyv+grOZGyGup2h9mWYa5AyrqVnRYsbnhhhi8UwaGTNu+v1WdpGt3eoYQGRPFNJtWIpCdN82D5hygSlaTjUEW6OA==</X509Certificate><X509Certificate>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</X509Certificate></X509Data></KeyInfo><Object><as:Timestamp>MIIIDwYJKoZIhvcNAQcCoIIIADCCB/wCAQExCzAJBgUrDgMCGgUAMIIBEwYJKoZI
83
-hvcNAQcBoIIBBASCAQCFwjxkepZ7kry4OYqw9RXF1mSQ8hoViY8FGdQSKHPsnrzt
84
-ifsAef9BVY7FlF27nbpt2xSv9GSy/VVOL0d70ruoYHXXcQOFOeA/e5nXA5Az2gdk
85
-ejfA5s/k79i5NC2kf2Le57XCabLN71ecJOJpVhKS04AP0tvxxIoGr6og2Gp5QG+c
86
-xNugCdAo75XKAW5YZmmt8Uo1kWIqNtS8zsLsegr+w5yCqVCDR+wJhPJWaAKVONa6
87
-+2qAfL+LI0W8eQcFP6rIfOBHmBqikbLZ2/nAqJ4FiIkMTzgSfmMzFSXdwbjyjVU0
88
-wX+zW3rPIyZX9fb5ueNrMWXFlIUDTHM5yTgWwKbioIIEnTCCBJkwggOBoAMCAQIC
82
+<publisherIdentity name="CN=Ylian Saint-Hilaire, OU=Open Source, O=Ylian Saint-Hilaire, POBox=97124, STREET=1370 NE Orenco Station Pkwy Unit 24, L=Hillsboro, S=Oregon, PostalCode=97124, C=US" issuerKeyHash="0ee13aa8533a31d58abec1bbad671a0385ad340e" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>BKdAlZrXv5IU5RYyJsXwmSzXN3shajO88xwddf8+oR4=</DigestValue></Reference></SignedInfo><SignatureValue>FpNA0fKclKOzFJzTL3/G3bLI3DKGCYikPrh2NMAp5u/Y2ejPguMUoKkI9kntUDhRLPNg6B3n5YRVj6SDHL3z648poiJpFA8zagxao654Rb0212cMHq6eckLJ6/b5GTw5hJQbu7aUUdpqAWgqTippd90qNH2OjJ9VWTLgApSRjXRWC4Tu4BPu2CCVczqsJZAZUC3vqRGhE1ausnVjweIFpau/kcn9AaRC3Y85G2r+L6dxyoLYiLtHTciv21uFHB1tXRoEc8lMz/WaF8vksBlGH6fuomiRCPdmCQbYelElTGHaqVOOAieu/tzrtpqc995k8wDh8/O+3AI4KhWti5CIOg==</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>y4Gj+dSbVyfeUCgvmvxt+1aLfwGaoEm5N5HuXHc9snxJImo/EyJ64vrQH0lsKD0lWlIwdQpD69/5RjyMoHfspKNQj1MWu9xJzaq57l7TWb/L0GZn+TbEaiD732WVKi0ogJ8iSlzzN1vnUZUbTN/yQpbLb+hyYYntCDhzW3ONGul0OE/0l/DtCUEgRAW3vLVV4z4JkTkOUJ6fpH55/zYw2OtlAWRpN+kEArdpjbJzanv410vJt+djfS2rhHB5asiWkscMkub8rlrBUtKPQWjjSZ5yLE3Vx++1CvTiAIH3HyXQisbUR2ZbnLiZ133wPkrEHFrxC6hPjIWeDZz/hZWlmQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="1ea13eff751d1cf3bc336a217b37d72c99f0c5263216e51492bfd79a9540a704" Description="" Url=""><as:assemblyIdentity name="MeshMiniRouter.exe" version="2.0.0.26" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" type="win32" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=Ylian Saint-Hilaire, OU=Open Source, O=Ylian Saint-Hilaire, POBox=97124, STREET=1370 NE Orenco Station Pkwy Unit 24, L=Hillsboro, S=Oregon, PostalCode=97124, C=US</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>hcxEn9Qh2vnzu1A+puNkGzzuWsfsz0LP8zzMSwkjzb8=</DigestValue></Reference></SignedInfo><SignatureValue>bVOAcTFwRmCXsq284N6VEIzWma+uK1Sg6YqY+isqHF0a/HDfMil+A75JGSrm11owb18SOuoGei7bCXM7T9It2b1Xxyg9C2yztcVe5X/mo3U4XVktXhqA1L86gDGspoVuSTrIiXoVfnUIyJG0ZR3MlXuYC2G1n8isQRlbm9mPZvP25N9liXcViZPT5d3H2UEe+W7MMR8QKbyVzZHcwd6TI+6GRfbDmNvs7MCSgwGuiiNQ4w8W2pW+K2FHN8T1shC5G8pv0fR8VzPM2JEcnoO1eBF/v+GCLk0XnOJF/NzoDl703aO8Ri9LMgkuQWpJchOlxwBu1Ii/QpOmiG//PT+VJw==</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>y4Gj+dSbVyfeUCgvmvxt+1aLfwGaoEm5N5HuXHc9snxJImo/EyJ64vrQH0lsKD0lWlIwdQpD69/5RjyMoHfspKNQj1MWu9xJzaq57l7TWb/L0GZn+TbEaiD732WVKi0ogJ8iSlzzN1vnUZUbTN/yQpbLb+hyYYntCDhzW3ONGul0OE/0l/DtCUEgRAW3vLVV4z4JkTkOUJ6fpH55/zYw2OtlAWRpN+kEArdpjbJzanv410vJt+djfS2rhHB5asiWkscMkub8rlrBUtKPQWjjSZ5yLE3Vx++1CvTiAIH3HyXQisbUR2ZbnLiZ133wPkrEHFrxC6hPjIWeDZz/hZWlmQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIFiDCCBHCgAwIBAgIRAMFAkI8vylir+13tTaPNiCMwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSQwIgYDVQQDExtTZWN0aWdvIFJTQSBDb2RlIFNpZ25pbmcgQ0EwHhcNMTkwMjA1MDAwMDAwWhcNMjIwMjA0MjM1OTU5WjCB0jELMAkGA1UEBhMCVVMxDjAMBgNVBBEMBTk3MTI0MQ8wDQYDVQQIDAZPcmVnb24xEjAQBgNVBAcMCUhpbGxzYm9ybzEsMCoGA1UECQwjMTM3MCBORSBPcmVuY28gU3RhdGlvbiBQa3d5IFVuaXQgMjQxDjAMBgNVBBIMBTk3MTI0MRwwGgYDVQQKDBNZbGlhbiBTYWludC1IaWxhaXJlMRQwEgYDVQQLDAtPcGVuIFNvdXJjZTEcMBoGA1UEAwwTWWxpYW4gU2FpbnQtSGlsYWlyZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMuBo/nUm1cn3lAoL5r8bftWi38BmqBJuTeR7lx3PbJ8SSJqPxMieuL60B9JbCg9JVpSMHUKQ+vf+UY8jKB37KSjUI9TFrvcSc2que5e01m/y9BmZ/k2xGog+99llSotKICfIkpc8zdb51GVG0zf8kKWy2/ocmGJ7Qg4c1tzjRrpdDhP9Jfw7QlBIEQFt7y1VeM+CZE5DlCen6R+ef82MNjrZQFkaTfpBAK3aY2yc2p7+NdLybfnY30tq4RweWrIlpLHDJLm/K5awVLSj0Fo40mecixN1cfvtQr04gCB9x8l0IrG1EdmW5y4mdd98D5KxBxa8QuoT4yFng2c/4WVpZkCAwEAAaOCAawwggGoMB8GA1UdIwQYMBaAFA7hOqhTOjHVir7Bu61nGgOFrTQOMB0GA1UdDgQWBBQAKclWaab3fMGe08CkV+m0jGQiNzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAzARBglghkgBhvhCAQEEBAMCBBAwQAYDVR0gBDkwNzA1BgwrBgEEAbIxAQIBAwIwJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ29kZVNpZ25pbmdDQS5jcmwwcwYIKwYBBQUHAQEEZzBlMD4GCCsGAQUFBzAChjJodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29SU0FDb2RlU2lnbmluZ0NBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wJAYDVR0RBB0wG4EZeXNhaW50aGlsYWlyZUBob3RtYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAGmd9J2Rp/PtNv9D2Pd38bn2Omkf8TI+Devz20d+00Pq1+0BJbh98V9jR3SgVbFdZqawnPwP53QNuFgofoRELZitu8OLqmxJRX6H4b6nsxmLR0XHBnNv1rh0mwgIOi6qGO8TvJEUrnr0Yj8zQpTAwnBRWMjmybqxgNNovui67Yq+0ppaXpGlOfMzVYmkv+cONVg3GeNLU7WEIMT2hrwpKRhmz3XVR3Mn3og8tUqrlqe0leBTLhg84t0ltP5xzP+Wyv+grOZGyGup2h9mWYa5AyrqVnRYsbnhhhi8UwaGTNu+v1WdpGt3eoYQGRPFNJtWIpCdN82D5hygSlaTjUEW6OA==</X509Certificate><X509Certificate>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</X509Certificate></X509Data></KeyInfo><Object><as:Timestamp>MIIIDwYJKoZIhvcNAQcCoIIIADCCB/wCAQExCzAJBgUrDgMCGgUAMIIBEwYJKoZI
83
+hvcNAQcBoIIBBASCAQBtU4BxMXBGYJeyrbzg3pUQjNaZr64rVKDpipj6KyocXRr8
84
+cN8yKX4DvkkZKubXWjBvXxI66gZ6LtsJcztP0i3ZvVfHKD0LbLO1xV7lf+ajdThd
85
+WS1eGoDUvzqAMaymhW5JOsiJehV+dQjIkbRlHcyVe5gLYbWfyKxBGVub2Y9m8/bk
86
+32WJdxWJk9Pl3cfZQR75bswxHxApvJXNkdzB3pMj7oZF9sOY2+zswJKDAa6KI1Dj
87
+Dxbalb4rYUc3xPWyELkbym/R9HxXM8zYkRyeg7V4EX+/4YIuTRec4kX83OgOXvTd
88
+o7xGL0syCS5BaklyE6XHAG7UiL9Ck6aIb/89P5UnoIIEnTCCBJkwggOBoAMCAQIC
89
DxaI8DklXmOOaRQ5B+YzCzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCVVMx
90
CzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMV
91
VGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0
@@ -115,12 +115,12 @@ CQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAcBgNVBAoTFVRo
115
ZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2VydHJ1
116
c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdAIPFojwOSVeY45p
117
FDkH5jMLMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwG
118
-CSqGSIb3DQEJBTEPFw0xOTAyMjgyMzQyMDJaMCMGCSqGSIb3DQEJBDEWBBRMJ+/D
119
-pucWQI26RB3CEZo9giVyTjANBgkqhkiG9w0BAQEFAASCAQB4JZpMFrUsxSvp4jKN
120
-0HI8c68qKvv37Ed7eF87X74Nto1vI/cT4Qi2ZJj8bzToSBqKbj3UQOhPlmxRWHUg
121
-oArn+tPJLnzwjgor/wA4YAMXCNGZ59n7hOzMfH7aseX6oRXaBXzzEsiggDDjmyf/
122
-9AFp6NqBeNpTr+V5ENGYqyjppiIGGfGTgkroX7Goxfi5KBUAS/jo7TYCv9Nr+y2d
123
-Cd7Zeeo6INNXawHzcTm2YMQRJymj5zFM22y/jko3xKBcyA0KKATthYBhFUsZIAiA
124
-yKVgVtXmZzJcyq3anKKIXqYNz2p3ZICzDiM5gzKdPGbVTo2hgew1UtEOGdz5tLmS
125
-n2jI
118
+CSqGSIb3DQEJBTEPFw0xOTAzMTkxNjQ1NDZaMCMGCSqGSIb3DQEJBDEWBBSez2an
119
+VEYycZr/2kA8EaEr7R9+gzANBgkqhkiG9w0BAQEFAASCAQCIM/0smLHnXLD8kd6+
120
+v7/donrtPuv84Og8Xs0WubVs6WG7HY/JyyMpK2jOKmISAnE/swg5Dfw7IgbP8MJd
121
+tVONxt8yWCC2UJKmNmrZ2nWVj5sCAaDoplUZ2QgOrAbsZe/DtMtfO4L2eKEQuxW7
122
+C4TM6luZwmvK2kUZ7NftpJn+SbhEt8qO/zrj30a0C2VRm+9FCG1KtLHmYbBm7amy
123
+6hkkrFOOwAquw9tWV80DABQ8xu+JgG2bhNkImTbd5EUJXVYO9Y0mBCN/8JOvL4Eg
124
+pjKsJi5qUrBwDZydQJDCNmSC9ycQSCx3cmSciYxM0BU1qxhJieONJMEBciIoC7E1
125
+6zFk
126
</as:Timestamp></Object></Signature></r:issuer></r:license></msrel:RelData></KeyInfo></Signature></asmv1:assembly>
\ No newline at end of file
public/clickonce/minirouter/Application Files/MeshMiniRouter_2_0_0_26/MeshMiniRouter.ico.deploy
renamed
public/clickonce/minirouter/MeshMiniRouter.application
+19
-19
@@ -1,30 +1,30 @@
1
<?xml version="1.0" encoding="utf-8"?>
2
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
3
- <assemblyIdentity name="MeshMiniRouter.application" version="2.0.0.25" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" />
3
+ <assemblyIdentity name="MeshMiniRouter.application" version="2.0.0.26" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" />
4
<description asmv2:publisher="Meshcentral.com" asmv2:product="MeshCentral Mini-Router" asmv2:supportUrl="https://meshcentral.com/" xmlns="urn:schemas-microsoft-com:asm.v1" />
5
<deployment install="false" mapFileExtensions="true" trustURLParameters="true" />
6
<compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2">
7
<framework targetVersion="4.5" profile="Full" supportedRuntime="4.0.30319" />
8
</compatibleFrameworks>
9
<dependency>
10
- <dependentAssembly dependencyType="install" codebase="Application Files\MeshMiniRouter_2_0_0_25\MeshMiniRouter.exe.manifest" size="15528">
11
- <assemblyIdentity name="MeshMiniRouter.exe" version="2.0.0.25" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" type="win32" />
10
+ <dependentAssembly dependencyType="install" codebase="Application Files\MeshMiniRouter_2_0_0_26\MeshMiniRouter.exe.manifest" size="15528">
11
+ <assemblyIdentity name="MeshMiniRouter.exe" version="2.0.0.26" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" type="win32" />
12
<hash>
13
<dsig:Transforms>
14
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
15
</dsig:Transforms>
16
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
17
- <dsig:DigestValue>CKdIZTY+zacc9zaEUGL/QVNR9UVhMgCupCL19vNPmxA=</dsig:DigestValue>
17
+ <dsig:DigestValue>kyG2U9fWMq5IcgDZPDbO47tJ7nqKdDWzttJGE7CJeSo=</dsig:DigestValue>
18
</hash>
19
</dependentAssembly>
20
</dependency>
21
-<publisherIdentity name="CN=Ylian Saint-Hilaire, OU=Open Source, O=Ylian Saint-Hilaire, POBox=97124, STREET=1370 NE Orenco Station Pkwy Unit 24, L=Hillsboro, S=Oregon, PostalCode=97124, C=US" issuerKeyHash="0ee13aa8533a31d58abec1bbad671a0385ad340e" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>JJ26OWrp+sgoU/eac0hoqHXp+i9Tv9y6BZLcg1X4XPw=</DigestValue></Reference></SignedInfo><SignatureValue>Vqo7kyRpoyTdshuBZp8jO6ItlZD9DUrHX15E5ccQKufS7YYxZ68tdJXKsg88/Gq4urge5pupz0UfEOf8lSqY3ER/1fLgfptImkL1azTCReOH061+Fc69U03j4YJxMrBEScq7gxlUFijU3C8zplw1uMWcGIC22q+ZTXD5jLSLorT9lUs6EKaub5h9gufm9/h6IEbXlEcoGxqhrD6vVrHDoJ7OHZ9XqETvZEXAMXzYWjbPYh5mljPWNxw8JUenTqgEUU+KxnKFJk1VwA1JANzOmHslqKmizYdpqbyTAoGYTLQy0BDhj4nkWtHpATlGA9Fn5+XbHUoILbTqj4KigTDfrA==</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>y4Gj+dSbVyfeUCgvmvxt+1aLfwGaoEm5N5HuXHc9snxJImo/EyJ64vrQH0lsKD0lWlIwdQpD69/5RjyMoHfspKNQj1MWu9xJzaq57l7TWb/L0GZn+TbEaiD732WVKi0ogJ8iSlzzN1vnUZUbTN/yQpbLb+hyYYntCDhzW3ONGul0OE/0l/DtCUEgRAW3vLVV4z4JkTkOUJ6fpH55/zYw2OtlAWRpN+kEArdpjbJzanv410vJt+djfS2rhHB5asiWkscMkub8rlrBUtKPQWjjSZ5yLE3Vx++1CvTiAIH3HyXQisbUR2ZbnLiZ133wPkrEHFrxC6hPjIWeDZz/hZWlmQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="fc5cf85583dc9205badcbf532ffae975a86848739af75328c8fae96a39ba9d24" Description="" Url=""><as:assemblyIdentity name="MeshMiniRouter.application" version="2.0.0.25" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=Ylian Saint-Hilaire, OU=Open Source, O=Ylian Saint-Hilaire, POBox=97124, STREET=1370 NE Orenco Station Pkwy Unit 24, L=Hillsboro, S=Oregon, PostalCode=97124, C=US</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>bRwLwns6JZuKPsNdKr/ifDW+tp6bjQkgB+U7XtB7My0=</DigestValue></Reference></SignedInfo><SignatureValue>Sm4l3B936+UjHgz73PNokuALoag38Zk2Dgm3IwX6c9l13NoKT9jhTuL6uRixn7sGL9tTLhas4QvRlIRcasEP9sMFY4LAdfb09i+SdjQaQ9oT6vgrfL+sPo/P45NtTFdJo8oj43pZKzIqbL/BScNWKpuNNAUjN3jq2T7cd8E7tTyFhnztCzS21a/9yGtMZqsiI2Z0SR5MoE7BUuQyJHMKKuC7p/KmccKqjctRCHZbvZVDsuEcRE0fLdct1K0K/o0G2Qs01CUBST8O7iJJ0GVuezlsGqkP4OJ5rnV1HVz1XtZiOlum7kZeCpUf/dhlVSZ1IxOvMU3BKJJ3YNtfx2mkNA==</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>y4Gj+dSbVyfeUCgvmvxt+1aLfwGaoEm5N5HuXHc9snxJImo/EyJ64vrQH0lsKD0lWlIwdQpD69/5RjyMoHfspKNQj1MWu9xJzaq57l7TWb/L0GZn+TbEaiD732WVKi0ogJ8iSlzzN1vnUZUbTN/yQpbLb+hyYYntCDhzW3ONGul0OE/0l/DtCUEgRAW3vLVV4z4JkTkOUJ6fpH55/zYw2OtlAWRpN+kEArdpjbJzanv410vJt+djfS2rhHB5asiWkscMkub8rlrBUtKPQWjjSZ5yLE3Vx++1CvTiAIH3HyXQisbUR2ZbnLiZ133wPkrEHFrxC6hPjIWeDZz/hZWlmQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIFiDCCBHCgAwIBAgIRAMFAkI8vylir+13tTaPNiCMwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSQwIgYDVQQDExtTZWN0aWdvIFJTQSBDb2RlIFNpZ25pbmcgQ0EwHhcNMTkwMjA1MDAwMDAwWhcNMjIwMjA0MjM1OTU5WjCB0jELMAkGA1UEBhMCVVMxDjAMBgNVBBEMBTk3MTI0MQ8wDQYDVQQIDAZPcmVnb24xEjAQBgNVBAcMCUhpbGxzYm9ybzEsMCoGA1UECQwjMTM3MCBORSBPcmVuY28gU3RhdGlvbiBQa3d5IFVuaXQgMjQxDjAMBgNVBBIMBTk3MTI0MRwwGgYDVQQKDBNZbGlhbiBTYWludC1IaWxhaXJlMRQwEgYDVQQLDAtPcGVuIFNvdXJjZTEcMBoGA1UEAwwTWWxpYW4gU2FpbnQtSGlsYWlyZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMuBo/nUm1cn3lAoL5r8bftWi38BmqBJuTeR7lx3PbJ8SSJqPxMieuL60B9JbCg9JVpSMHUKQ+vf+UY8jKB37KSjUI9TFrvcSc2que5e01m/y9BmZ/k2xGog+99llSotKICfIkpc8zdb51GVG0zf8kKWy2/ocmGJ7Qg4c1tzjRrpdDhP9Jfw7QlBIEQFt7y1VeM+CZE5DlCen6R+ef82MNjrZQFkaTfpBAK3aY2yc2p7+NdLybfnY30tq4RweWrIlpLHDJLm/K5awVLSj0Fo40mecixN1cfvtQr04gCB9x8l0IrG1EdmW5y4mdd98D5KxBxa8QuoT4yFng2c/4WVpZkCAwEAAaOCAawwggGoMB8GA1UdIwQYMBaAFA7hOqhTOjHVir7Bu61nGgOFrTQOMB0GA1UdDgQWBBQAKclWaab3fMGe08CkV+m0jGQiNzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAzARBglghkgBhvhCAQEEBAMCBBAwQAYDVR0gBDkwNzA1BgwrBgEEAbIxAQIBAwIwJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ29kZVNpZ25pbmdDQS5jcmwwcwYIKwYBBQUHAQEEZzBlMD4GCCsGAQUFBzAChjJodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29SU0FDb2RlU2lnbmluZ0NBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wJAYDVR0RBB0wG4EZeXNhaW50aGlsYWlyZUBob3RtYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAGmd9J2Rp/PtNv9D2Pd38bn2Omkf8TI+Devz20d+00Pq1+0BJbh98V9jR3SgVbFdZqawnPwP53QNuFgofoRELZitu8OLqmxJRX6H4b6nsxmLR0XHBnNv1rh0mwgIOi6qGO8TvJEUrnr0Yj8zQpTAwnBRWMjmybqxgNNovui67Yq+0ppaXpGlOfMzVYmkv+cONVg3GeNLU7WEIMT2hrwpKRhmz3XVR3Mn3og8tUqrlqe0leBTLhg84t0ltP5xzP+Wyv+grOZGyGup2h9mWYa5AyrqVnRYsbnhhhi8UwaGTNu+v1WdpGt3eoYQGRPFNJtWIpCdN82D5hygSlaTjUEW6OA==</X509Certificate><X509Certificate>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</X509Certificate></X509Data></KeyInfo><Object><as:Timestamp>MIIIDwYJKoZIhvcNAQcCoIIIADCCB/wCAQExCzAJBgUrDgMCGgUAMIIBEwYJKoZI
22
-hvcNAQcBoIIBBASCAQBKbiXcH3fr5SMeDPvc82iS4AuhqDfxmTYOCbcjBfpz2XXc
23
-2gpP2OFO4vq5GLGfuwYv21MuFqzhC9GUhFxqwQ/2wwVjgsB19vT2L5J2NBpD2hPq
24
-+Ct8v6w+j8/jk21MV0mjyiPjelkrMipsv8FJw1Yqm400BSM3eOrZPtx3wTu1PIWG
25
-fO0LNLbVr/3Ia0xmqyIjZnRJHkygTsFS5DIkcwoq4Lun8qZxwqqNy1EIdlu9lUOy
26
-4RxETR8t1y3UrQr+jQbZCzTUJQFJPw7uIknQZW57OWwaqQ/g4nmudXUdXPVe1mI6
27
-W6buRl4KlR/92GVVJnUjE68xTcEokndg21/HaaQ0oIIEnTCCBJkwggOBoAMCAQIC
21
+<publisherIdentity name="CN=Ylian Saint-Hilaire, OU=Open Source, O=Ylian Saint-Hilaire, POBox=97124, STREET=1370 NE Orenco Station Pkwy Unit 24, L=Hillsboro, S=Oregon, PostalCode=97124, C=US" issuerKeyHash="0ee13aa8533a31d58abec1bbad671a0385ad340e" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>sZQnmVC2OxtzRsta18ZFRfm3l+iLXvHmtTbuXUg2eDQ=</DigestValue></Reference></SignedInfo><SignatureValue>gw/314hsyn1oj4l+OHKitPKlHxxPykhG161n7em2N5IsPDnhgE/ADVvwbdBYc2FCyVbN/gXlwrM1j/OOigCf60zFxN+qi2Rs4v7Tm1FUKR54pXkfI3WTByfQEPUpvPbb6lQz+NqhRgbd4pvzzHJdbisxNV6QYGSPMm9SinC9xnbiiFllVJXtGWM7YNKQfnxZq9Q2rThjjEJNQ8wDgAWFdf8wyymqX0BSHUn4/BdojDCQLUuv3bUW6u1THzx6c3mLVnfPFALnrlIC2GXx2evSqtaM57PTxK4K6A4PrinuK+JhbUNlqWWMRgI/IMgN8wPNLc4vFLKGNv6SCaLU4eN0aw==</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>y4Gj+dSbVyfeUCgvmvxt+1aLfwGaoEm5N5HuXHc9snxJImo/EyJ64vrQH0lsKD0lWlIwdQpD69/5RjyMoHfspKNQj1MWu9xJzaq57l7TWb/L0GZn+TbEaiD732WVKi0ogJ8iSlzzN1vnUZUbTN/yQpbLb+hyYYntCDhzW3ONGul0OE/0l/DtCUEgRAW3vLVV4z4JkTkOUJ6fpH55/zYw2OtlAWRpN+kEArdpjbJzanv410vJt+djfS2rhHB5asiWkscMkub8rlrBUtKPQWjjSZ5yLE3Vx++1CvTiAIH3HyXQisbUR2ZbnLiZ133wPkrEHFrxC6hPjIWeDZz/hZWlmQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="347836485dee36b5e6f15e8be897b7f94545c6d75acb46731b3bb650992794b1" Description="" Url=""><as:assemblyIdentity name="MeshMiniRouter.application" version="2.0.0.26" publicKeyToken="df0e2d2c8cf81bc8" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=Ylian Saint-Hilaire, OU=Open Source, O=Ylian Saint-Hilaire, POBox=97124, STREET=1370 NE Orenco Station Pkwy Unit 24, L=Hillsboro, S=Oregon, PostalCode=97124, C=US</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>1zv4LsSI/0Ay9Bffe+e3saaMzXcEbnaOvZxz17VA/rA=</DigestValue></Reference></SignedInfo><SignatureValue>PMXlsr/62tnwzBrpDgdSkr/pS8OYjWTQ+aXE1uVHcxBWJEVkZSSdH4M0/trQ88wUhdoaD3dDktvtVtJVlfz6GZQW0NKK1/2uoMxeN8cEN1aaVILCM+XKcnKJwM2SvMCQ6SdHlPrRnF65hG8T6ixMz2Kt3GcaaTK3iXIOIIbJ3DQE5BEkUPPiWNy2te5sJDkgMpIFsmKR4tbqD1KugwNsnS34CmEm/njX4Fz62o6MjdUqRTKaautpYguuvXF+93rmr14JwVAFEQd5SXX1bdzdsgZpyU625e50iW4LM9E0N6TF0xUg7j1lt2YGzwkq8X5o668T7qgBTUxFDDmLBOT6kQ==</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>y4Gj+dSbVyfeUCgvmvxt+1aLfwGaoEm5N5HuXHc9snxJImo/EyJ64vrQH0lsKD0lWlIwdQpD69/5RjyMoHfspKNQj1MWu9xJzaq57l7TWb/L0GZn+TbEaiD732WVKi0ogJ8iSlzzN1vnUZUbTN/yQpbLb+hyYYntCDhzW3ONGul0OE/0l/DtCUEgRAW3vLVV4z4JkTkOUJ6fpH55/zYw2OtlAWRpN+kEArdpjbJzanv410vJt+djfS2rhHB5asiWkscMkub8rlrBUtKPQWjjSZ5yLE3Vx++1CvTiAIH3HyXQisbUR2ZbnLiZ133wPkrEHFrxC6hPjIWeDZz/hZWlmQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIFiDCCBHCgAwIBAgIRAMFAkI8vylir+13tTaPNiCMwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSQwIgYDVQQDExtTZWN0aWdvIFJTQSBDb2RlIFNpZ25pbmcgQ0EwHhcNMTkwMjA1MDAwMDAwWhcNMjIwMjA0MjM1OTU5WjCB0jELMAkGA1UEBhMCVVMxDjAMBgNVBBEMBTk3MTI0MQ8wDQYDVQQIDAZPcmVnb24xEjAQBgNVBAcMCUhpbGxzYm9ybzEsMCoGA1UECQwjMTM3MCBORSBPcmVuY28gU3RhdGlvbiBQa3d5IFVuaXQgMjQxDjAMBgNVBBIMBTk3MTI0MRwwGgYDVQQKDBNZbGlhbiBTYWludC1IaWxhaXJlMRQwEgYDVQQLDAtPcGVuIFNvdXJjZTEcMBoGA1UEAwwTWWxpYW4gU2FpbnQtSGlsYWlyZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMuBo/nUm1cn3lAoL5r8bftWi38BmqBJuTeR7lx3PbJ8SSJqPxMieuL60B9JbCg9JVpSMHUKQ+vf+UY8jKB37KSjUI9TFrvcSc2que5e01m/y9BmZ/k2xGog+99llSotKICfIkpc8zdb51GVG0zf8kKWy2/ocmGJ7Qg4c1tzjRrpdDhP9Jfw7QlBIEQFt7y1VeM+CZE5DlCen6R+ef82MNjrZQFkaTfpBAK3aY2yc2p7+NdLybfnY30tq4RweWrIlpLHDJLm/K5awVLSj0Fo40mecixN1cfvtQr04gCB9x8l0IrG1EdmW5y4mdd98D5KxBxa8QuoT4yFng2c/4WVpZkCAwEAAaOCAawwggGoMB8GA1UdIwQYMBaAFA7hOqhTOjHVir7Bu61nGgOFrTQOMB0GA1UdDgQWBBQAKclWaab3fMGe08CkV+m0jGQiNzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAzARBglghkgBhvhCAQEEBAMCBBAwQAYDVR0gBDkwNzA1BgwrBgEEAbIxAQIBAwIwJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ29kZVNpZ25pbmdDQS5jcmwwcwYIKwYBBQUHAQEEZzBlMD4GCCsGAQUFBzAChjJodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29SU0FDb2RlU2lnbmluZ0NBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wJAYDVR0RBB0wG4EZeXNhaW50aGlsYWlyZUBob3RtYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAGmd9J2Rp/PtNv9D2Pd38bn2Omkf8TI+Devz20d+00Pq1+0BJbh98V9jR3SgVbFdZqawnPwP53QNuFgofoRELZitu8OLqmxJRX6H4b6nsxmLR0XHBnNv1rh0mwgIOi6qGO8TvJEUrnr0Yj8zQpTAwnBRWMjmybqxgNNovui67Yq+0ppaXpGlOfMzVYmkv+cONVg3GeNLU7WEIMT2hrwpKRhmz3XVR3Mn3og8tUqrlqe0leBTLhg84t0ltP5xzP+Wyv+grOZGyGup2h9mWYa5AyrqVnRYsbnhhhi8UwaGTNu+v1WdpGt3eoYQGRPFNJtWIpCdN82D5hygSlaTjUEW6OA==</X509Certificate><X509Certificate>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</X509Certificate></X509Data></KeyInfo><Object><as:Timestamp>MIIIDwYJKoZIhvcNAQcCoIIIADCCB/wCAQExCzAJBgUrDgMCGgUAMIIBEwYJKoZI
22
+hvcNAQcBoIIBBASCAQA8xeWyv/ra2fDMGukOB1KSv+lLw5iNZND5pcTW5UdzEFYk
23
+RWRlJJ0fgzT+2tDzzBSF2hoPd0OS2+1W0lWV/PoZlBbQ0orX/a6gzF43xwQ3VppU
24
+gsIz5cpyconAzZK8wJDpJ0eU+tGcXrmEbxPqLEzPYq3cZxppMreJcg4ghsncNATk
25
+ESRQ8+JY3La17mwkOSAykgWyYpHi1uoPUq6DA2ydLfgKYSb+eNfgXPrajoyN1SpF
26
+Mppq62liC669cX73euavXgnBUAURB3lJdfVt3N2yBmnJTrbl7nSJbgsz0TQ3pMXT
27
+FSDuPWW3ZgbPCSrxfmjrrxPuqAFNTEUMOYsE5PqRoIIEnTCCBJkwggOBoAMCAQIC
28
DxaI8DklXmOOaRQ5B+YzCzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCVVMx
29
CzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMV
30
VGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0
@@ -54,12 +54,12 @@ CQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAcBgNVBAoTFVRo
54
ZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2VydHJ1
55
c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdAIPFojwOSVeY45p
56
FDkH5jMLMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwG
57
-CSqGSIb3DQEJBTEPFw0xOTAyMjgyMzQyMDVaMCMGCSqGSIb3DQEJBDEWBBTqcfSI
58
-ZIH2cGBZ5NbKLS8CFQuGkTANBgkqhkiG9w0BAQEFAASCAQAqA8H6wU7X8d+LDUk/
59
-//8sPvj/VT2AeBOCOWtKtwK4i7iH0BtSuhm5FTSTvad9sSYVEAC/eHvPCiZz58l0
60
-S7Ql4Z/msh9WTlmtR+XFWeSfgvg6zZTY3yJTpv15ee70DyLmOOxbMxGIJyZxrlzH
61
-Ayp4uuzYfUYy4KaEPX/KxnbCJmoNEPdYYgsBCbpvuHi5z25T4F1H204Ou9ylYvjA
62
-xBui3zrud2jm5wshgWfc3rG00RbtvEgQxFKpvXIykny8wL9w7ncMwEbRzcPydess
63
-nmwwCbhRkScEHrtynw04ufMC5PVaF0aNtS7a9SKdkfRbddsxcAXZNxtRAYBbuVE8
64
-TsPW
57
+CSqGSIb3DQEJBTEPFw0xOTAzMTkxNjQ1NDlaMCMGCSqGSIb3DQEJBDEWBBS/kdAN
58
+AixXmnTm+I8aGaAxZgirrDANBgkqhkiG9w0BAQEFAASCAQAyfQEaj4qHaD0A4nxu
59
+2IRwIinYT2PYNzOkA1E9ZDW0aQPOg+QvaILTLshKZxz1YTlng7J+X5gqtiy6x/Su
60
+ffpNUxyrd1j4x6RG2kzVagUMk2Z+hIFvJBM52VcWFQhq9x6gQ7AUOGG3cg7kCeOf
61
+DO21jJGHre2IY19krGsZz1P4+ebfm/BZZaUWqxe3DXsQQzWvRPigorTO/K6Xeciu
62
+qYjG3wyu4WNJOsoGiafecdcsLPF14QBPFXn4OuQG+6rfHuO7aEtVzJcTZ7WGzYh3
63
+IB1/rLld3dtPwH7JrcCIBnX2YjF2Gu9WIFQY0pOaMw4nlqyC3gBiU9dPadHQ1BUp
64
+SIT0
65
</as:Timestamp></Object></Signature></r:issuer></r:license></msrel:RelData></KeyInfo></Signature></asmv1:assembly>
\ No newline at end of file
public/clickonce/minirouter/publish.htm
+1
-1
@@ -59,7 +59,7 @@ FONT.key {font-weight: bold; color: darkgreen}
59
<TR><TD ALIGN="LEFT"><TABLE CELLPADDING="2" CELLSPACING="0" BORDER="0" WIDTH="540"><TR><TD WIDTH="496">
60
61
<!-- Begin AppInfo -->
62
-<TABLE><TR><TD COLSPAN="3"> </TD></TR><TR><TD><B>Name:</B></TD><TD WIDTH="5"><SPACER TYPE="block" WIDTH="10" /></TD><TD>MeshCentral Mini-Router</TD></TR><TR><TD COLSPAN="3"> </TD></TR><TR><TD><B>Version:</B></TD><TD WIDTH="5"><SPACER TYPE="block" WIDTH="10" /></TD><TD>2.0.0.25</TD></TR><TR><TD COLSPAN="3"> </TD></TR><TR><TD><B>Publisher:</B></TD><TD WIDTH="5"><SPACER TYPE="block" WIDTH="10" /></TD><TD>Meshcentral.com</TD></TR><tr><td colspan="3"> </td></tr></TABLE>
62
+<TABLE><TR><TD COLSPAN="3"> </TD></TR><TR><TD><B>Name:</B></TD><TD WIDTH="5"><SPACER TYPE="block" WIDTH="10" /></TD><TD>MeshCentral Mini-Router</TD></TR><TR><TD COLSPAN="3"> </TD></TR><TR><TD><B>Version:</B></TD><TD WIDTH="5"><SPACER TYPE="block" WIDTH="10" /></TD><TD>2.0.0.26</TD></TR><TR><TD COLSPAN="3"> </TD></TR><TR><TD><B>Publisher:</B></TD><TD WIDTH="5"><SPACER TYPE="block" WIDTH="10" /></TD><TD>Meshcentral.com</TD></TR><tr><td colspan="3"> </td></tr></TABLE>
63
<!-- End AppInfo -->
64
65