From 17437467a13b5feda596d85706e11ec97f94795c Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Tue, 25 May 2021 17:10:30 -0700 Subject: [PATCH] MeshCMD routing improvements. --- agents/MeshCmd-signed.exe | Bin 4432936 -> 4433088 bytes agents/MeshCmd64-signed.exe | Bin 4047400 -> 4047552 bytes agents/meshcmd.js | 5 ++++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/agents/MeshCmd-signed.exe b/agents/MeshCmd-signed.exe index 49faba99e623fef993d883f3ab0e00d6d53da7d7..74a3875d06b09b7e022f09ed9d0774e0549aabd3 100644 GIT binary patch delta 1488 zcmZwBdo@f>4Tqwxx3Fof*vZ@iyjrq&PA%&)B(}`G8lY|_P zbjYjI%sOo~C68i7D0a4!Wm&A_)mV=fdw0*C?VtVQbI!fz-0!`&t~(ziewmMHPCzhs ziPw^ly_m~avs;mzR^)FOAPeMxJWv3NKnY-hGQa^9fCpayRj>mPfEw5dh(H}^08O9; zw81W*19X8NAOU?q1_r779P9xW;7dRSUjY=*fTgGvvGRRhh|1+4 zFRXwyumQHf4%h<+;0T<6GjIWWfh%wmAurrDf2Xq8ktxxpGz+pJgUjKtqj<5LXflsW zHYD#Ma}#*6Tuw4IhMUZT){tr_a&Dq$B7(lxbY=X%^K2HCN;MRmXr>cI9nJJ)6+uFt zyOMxZ;I3r)dAWNEFNV$G#YUaru~}rO$;s@bRCW^8(98+1EJ(yM)I~mz=^ct@|C{;e zsm~!eXyzm!jMB9QuOHD>MQ8`Tu?zE(D;UdTTtKh&1YBuTNmReNmG5w2&?!E~pHgr? z&0M1*$E|9e_=`y{@e$YQoQE<3|kSLCl0nr|_OW)=v{0y3!} z>3~#>PH7?*eUj7m{q3!_v56h&2NWob$$_bjfEJ2JzPqeAc)Mp9Cz9e??&`eq@(^ie zw&B-%mA%it?UMgE(KwG=tJgb;N&b1x?gJ)Au0;QwWDIq=Tzk~EApPpQ`WusT-F-0; zp{Ff__>OlaX>}F^zb*5EemCZ^u#RV>>TPgY$Sr)$KkF}?7Ig>xUATCeyl&uW50>qr%xW^{O>HM*im&E z@1JT#Sie^nsx9v5!eo#}Kh!nUuq%6{Q%`CzsiA_AI}9n`7DZ8eD_RKZs(>}W#JseM zN3e1b!*|9jhEsDUlo`8vc8I?4kr^vBT4br-l{1T zOu;yc|8D_;$jiuOVPy0fqTw{;eg8nkua#pGyPRRll#%58UFZTMbc zvBp15Y2hO3iCuO=$Lu$=?(sa6ss(1#$0c;zw+D$v(WBdw_vCq66shq(QBf2nL1A}OiLgnnp$TthCVZZ2 zFt{1`Ne3%VwF$@M2KSFwOW2i*{DQCZ?gaD_8+}?7Cy=wYadl^Y`12V_CH7rdT-<$C zW^_zrko-g0>JrHWo|~Mv95K4pM=$npX`yUH(;HNWq~{l8g4Abf2dW#I%0l_h6?Ut_ z^4Tk@)1AdxQa&lau{(UFS5WHths?R2^04}|Y5KS3vq)!3IJ=%?gyj1~^OtH-+s?2E zuSRyWV<;>CXdI_*BFodI$i~XH&~hYrQc2@Y8>?B_<#obtB|X~7iA7eJmgF;M=1`6)IL|(lh3yD4(&&}bNvb<%6*aIh$Atn_tsL?uisW!)~ouh12;PU_Q?)i;bQo!r|lP6d)g}x zFMg0>bA^<)IN>`qxM`$@;7fMso|*Xb1*T9!)D~%AkiP)LkdWK} delta 1363 zcmX}kX;{(+9Kdn^2r@`PnMY|J5qKmLNNJd6LY}Si=|yDr*r8>I3VEa@j7VjwG{Fpd?)CqbNKhlxR<;TRF2#-G<6G^Aj$uv8@ zApSITMNl0l1yQ_~aYTlau2(*03i)GBH&)_h&c#U>EgS>M*Cq~8q3Y(;_MlXglB7&- zDq}IKPZ2Uw;j}!}90UO1P^E6h2z z`-hkAJ00_Q#}1)->J1ZG%wCQAE*a-P@jrcONVGjCc`&ait*D7Gu)9~dqBh=-oEk!g zH2Rj(@bvviKlC`PUFjAZe*Z|2xI z%p6c=Z|f|}x8EDxm`vQ0Oy4-l?B)p{7|b*j@ZBvG*y*9o1g$U;cg;^7dN;oKz`0`M z(RFo$%3H4r<8qm*`xs|@_pWyTS<|RGZ(X|+Z`ffhY~(z()5Z&z`d*&Ic;QiL%SD~| zMIyMxT^4P1Wo>bDWglXA8{jsj2c&;CLU3rNE1Hq^EOkfIvq5{c^=|)xvNI;cecZ)2 zcgh|GR1Lq3lk`=|b^jzT2U@Y@`45|%1`hi$jQ$@W2u2T`hSH-*%daPgiN0MFp?w76 zb2!V%1a4P9``+Cd?INvhbcvQYA@bvg>NgFk_kWqtH`LC_@RaA)9KsLp0|j-Zq0ymk z*pk$m8`DQMQxh#DXMFJd7j~6PVo$}=K<<&T2k$Dg?C@S|3&NV^x=-SM^Iu8#KV~QV z)Zpn7{PDV`|H;l4VaJ%X8UL`RNc>4;w>WDps+njAh@epwQb&w9t(D{9j|&9>dskn!k=%$+3JyI zV$yM*SHy+-xO*vAD!MM5Il23ykL6TtB+89EI@R1C_{6w2Ft$vSNww!Vv}w7*gtuCX zE}-4FRv;g(;GkQ-g!sOHu`o=<$GtmexDpV;kEl;pI~GU}yB>|Gj<9hsnV)0*O^Yn& zENen0^){T!MM55ij34@TmEe>Xf4z^cIYqlvNz_a}$T7S1nmN+w9dScxWOqC*oT@d5 iBqaKVVV_$(J+M$PTB|8tP*VBYeu|AwI>Wbhp8Xf>i*Gpq diff --git a/agents/MeshCmd64-signed.exe b/agents/MeshCmd64-signed.exe index bcd3e81c3abcea27e4ab535da312f332094156ec..b6a5bd375e94554b1b1970c62eb2b99b94aee64b 100644 GIT binary patch delta 1464 zcmZwBdoIktyFSJVS-93A@fA){hIrpA(zxUoNS<9$9*~_T9bQF5! zZm}4(3w>0c*^kQYNBs>A)&LAp1}Z=mV1XJ?2O0ne@IVu20d1fI)&gCi2lT-@U;qq( z5m*m400J-u8-WQR0#iT&n}8W019M;jECB^r0c${2^rLKSpB2(Exu|g)Km)db4(xzE zZ~zRj8EgTLzzH~mtqRmQ(_oes#fwOZv9zNSN$vs!;YAAhNDNUZAd-mIL_wmEFF=xM zv4UhFv?Lly!RltEqNF`@EOq?9^Sme;jYg7kdsupk_8wL;PMTQ7#7Z|-GqILmmb;}0 zV|j>>AITN+qKHrvlX*$|c}X-9g^5>}?z3R)E4+tU?W&aj&HVG!mk=DJFr_-nEF)>} zW0sbJ{+w0Qf$kJYpH;Cl=(yEyZzLZ$8!!;m(&Vh}7q0JY<%`XjEozx9-8O&A%vAf_ zSfg%+Dy~gd9;|HJ?x`r0vrp*IRpwSqmkDD(Ol|gB%kMdKAf(Etd&PsjsqbTf_+Am8 zAJP`<(EP!zt$F13!jG2kO{D>i>`YN7k(0VMr&Mnbvn_o7pt~)3%N*bKVQgfC?c3Ra^eu8#iu+YKUIeH-lUPxUf#ITWWAlH_Kf-THIXqvygMu5 zU}@Ubk(wD}y$sEwxXgCWHbZn+g7i@n`<-YDolbXhV1&?JRMf0;I62FBlp4m)9z(BD z;>4t{vz*b}iK#vo^g!NVe`J+%WQQ*y_Qk4TX=G(d>YslrSLaNdkE^&MWHOG9|8D^b zrL2Szqm^P;Q~LOd%J@0f%+aLJ1`40d3i3Nc$IQpF&TwWwabHPYOr;W4{)=-!DY8=!3X0xyM-O|KkIz{aTxmGDKDf1iO|#~uK3%3xbc-SsAuOXkEK4>*6jvZMI?j-f&io8ywI zdGl&^VuWE?;>vxRmqt4N`hG)`r{!BmIVP(Jc9^#2^OI%$TcX1$4cxKI!gt75*l3&R zh+peJebadHNd+O5JTWD|qbeZ;SAhEas`Un)#o> zcK-3)`($%M{cQNT^cb^X2{)JJ_o!;rus3b!W68_G-#Gp^2rU8|iSTm%= zvZ=?(G!L~X%`jV&Q`v=1mZ4^r*}URZSYC4PzU;&A({s+#DKbHgCrwam5d@z#UMPlk z!wpR(I!K~}{sRYA0SLehKmz8#Y5)aT0BFDxzyMZ&HLwP-0kFVYU>#r!-~cMCt+H9C=H}0Oo=jHH^rurS_r*CqL;PZH?DY+TEbU!~oHy;;%R&EC9 z>g_$W0!aPoDNSf8`(qW&R;|+09-7NS{X#CObk) zgo)AF%!5Pud2DTDYaGd)=~4UPnGw&JZ|k;u5M-M>F}*k%WIb7wt};rx%2rm#wTqc@OtH{SK$9=ooA<*Vj)7c!ZZjcEE*_LA3^ zn%57~N*5<%wPQ$QfZ%!X+oj%J&*-Xw8ddRg&EjyE|{`A@rfl0+_5-zit1E04u{xW@cUtpa& z3a?&n=Tdm=v`mI$@Fklrw&>f~74Zz$u)kK&Fr|rjA&-2sJ-rMq-Ikj^lYsrjNLac1 zC=b>)cC&@DZ1u6=NC zj*%Lmaq3*mXx=q@qUP2zv7%3WNc{WyHmfqc&o=gr_7(KSfQo^t_~c#lYn{t3_N<$J zI63)^-;LKc!spphd@L1}CV$k%o@v6^z4U^7x)>v9Iqh%Dku16QH-sOl;$}W)Lc=)2 z9h@)7aEMc_H(alL#3i;IfLCrcZk$NEE4{vHZ$%^Q-3igDt7j#a?)JCGlfU}dkiyx8 zZWgwTPU^J#X@^sO= zSVaE`$y1nu0MTpi%pO$nl80G^g 0) { options.path += '?' + xurlargs.join('&'); } } catch (e) { console.log("Unable to parse \"serverUrl\"."); process.exit(1); return; } - console.log("Connecting...", options); + debug(1, "Connecting to " + options.host + "."); options.checkServerIdentity = onVerifyServer; options.rejectUnauthorized = false; settings.websocket = http.request(options); @@ -2015,6 +2015,7 @@ function startRouter() { } function OnServerWebSocket(msg, s, head) { + debug(1, "Connected..."); settings.webchannel = s; s.on('data', function (msg) { var command = JSON.parse(msg); @@ -2064,6 +2065,7 @@ function OnServerWebSocket(msg, s, head) { // Hash the signed data and verify the server signature var signDataHash = hasher.syncHash(Buffer.concat([Buffer.from(settings.serverAuthClientNonce, 'base64'), Buffer.from(settings.meshServerTlsHash, 'hex'), Buffer.from(command.nonce, 'base64')])); if (require('RSA').verify(require('RSA').TYPES.SHA384, cert, signDataHash, Buffer.from(command.signature, 'base64')) == false) { console.log("Unable to authenticate the server, invalid signature."); process.exit(1); return; } + debug(1, "Authenticated the server."); // Switch to using HTTPS TLS certificate for authentication delete settings.serverid; @@ -2099,6 +2101,7 @@ function OnServerWebSocket(msg, s, head) { // Perform inner server authentication if (settings.serverid != null) { + debug(1, "Authenticating the server..."); settings.serverAuthClientNonce = require('EncryptionStream').GenerateRandom(48).toString('base64'); s.write("{\"action\":\"serverAuth\",\"cnonce\":\"" + settings.serverAuthClientNonce + "\",\"tlshash\":\"" + settings.meshServerTlsHash + "\"}"); // Ask for server authentication }