From 25e6ff41777cffbfff65809deee8cacc30d39b78 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 21 Apr 2026 20:00:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 21 20:00:08. --- .../20260421/20260421200002-Binary.backup | Bin 0 -> 315902 bytes .../20260421/20260421200002-Config.rsc | 4535 +++++++++++++++++ .../20260421/20260421200002-Diff-Config.rsc | 7 + 3 files changed, 4542 insertions(+) create mode 100644 MikroMaster/20260421/20260421200002-Binary.backup create mode 100644 MikroMaster/20260421/20260421200002-Config.rsc create mode 100644 MikroMaster/history/20260421/20260421200002-Diff-Config.rsc diff --git a/MikroMaster/20260421/20260421200002-Binary.backup b/MikroMaster/20260421/20260421200002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0e3333b053866a2201f904149bd2fdab735affa9 GIT binary patch literal 315902 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%0DwN{H&vIr* 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

  • v7iW|KJ9JxHJ!gTlj{lE$Au z=}ORJ_3Cs{1-_hg?=&9|rUTYL5wJ zkwi<)6FxrCTNEJ}Ij~5HudTwcif=b?Nk9o?k-GJhaHzqBPHk{YTp&)bZHD;4G&E$Q<%MxsK21*5Gs|;Jr9-aa+^Rnv~5HWqtXQkJoe6pwLa{?>q^>;tKeXW zG+f%OQ3D5W&A>ajAei_}*f22*lo(e3Bp00_mhg>YH-Cbq_eERYn+DFcnX$ zeqS8M@b52Pu5{1!DnnIRzhn@Ul;&hM2uXP(JzMLN$Dcd* z@DcsR-vImr&4y{Cf`@RnL3N3F5~vLuw*uJ+gwF~@Nh(l*mrBHse#f-HLV)qwNaxZq z`7u%=NaZEcbzEZ+p)1sz+Rakx17nu2zo}M#jM_$R3&cMapdvCxaD{9Mv`Qq@w)7sd_;m$aYZ9=%VQ=9Ow!$Ddy5 zv%7ysqNMHUnkN2=^-kD5^l}|u=WRqwQ7B8aPX36*w&lcRHeamd=<<5GpKDeR=&XfR zh>JY-j!k#r;UjrXHtILEE>EcuekY#&BFi{ay50P|>&i+;Z^1tA<^EKg<_ZxRn0uaR zaEAAYdXr>9!KH%wf8P>DxV#u!%4|cee}dL%ZOW?CFoa#(JN&GhlriS5_vEt`5&6VX z@_`6pA1D^~*Gtct(@<~40|7Q2S9(Hip{KUptzGv;xnsNLy5nNB5BSLDUn(+?q%c5# z_l-C76Ln;kpsPK+|BRj#M!4yAbVIx*S0kFTRqiiquBzNN04?7QC}K7ZguTg^Ad#}! zG>MJQp&|7NYuhl%s1&X%cM}kiP58ulGhRmEkNy~}I7Cz23Fh1#iW#a#K+>+xUqG1K z@Rnm%g(+B<<)Et)aM#?UDdXW=(nL<}n z`Q_`e`_X~R0g;b=Cj5S~)Njs-D-j)`_v#yGxAQWh1ki7m>CoEAn&iiKq+p1EuEksX z0YUPY0<hH3pBmA;@{jdG3)10p-JlN9>5a9b^+NIzs)3)f2p>i2>Pg z#vCxFJ=#HXs#ji~WQIjd>&oN~e|@RQzndyGARy|B<$4)lwY~74-l*H9b-KY*2igGZ zKe?)#eVp;ugsZW~j|?7CyojWU`mn^@kq<}7+A0O7esT5(I)~-YJA1q5m@Bi!T6?`K znZ-6rEe2_DSW8^Rn zPmERIF}Tcgz)ozrTmD~&Va)~nfYzn=__{h z@uFEZivp*_+&%BT>%?rg53H7#)M}NO0!3RJLQJ~?))Cfa4t)=h7P!SNsQ~{!0KkUq zcQW=)1hc+Rmqd`*Yi{Tdx|&{=0?g+t zpy8@=!$;30tmp%Q&gXLI<1ocR%^nnfx3|RSlaNr?$yM~ooHE-5$TI}Ff0+zqoTb&5 zfh`vCZ&PVlwk$^aZjsqf-O5Ipz6`Zk7XcGA+pJw=ks{x(zWkCq+D%d>A(?({I^TUb zq0?n#;emZB^Gs^Q1?oJf#U)_|JhnWDv;=Ieb~yahEE8c0PRyk3A3CGW8FogiZu%u{ z<@iGB4CN2hk`Qa!J^+~d4R)pWWz=ishzm&_2+5f;$t)6OF$XT%t-T4j@&rLyu4b0!vNi#1axASB-_7uC?kZu_m_o z!0xA2PJ2N%KS6zNw011DbA$0Zjzq3=o!G-pK%XEblDCBssq@j#s3qf$K7$nl(YYoQ z@U5Fz$c%gw{4f6_N#+i?uv_c1Pm)whLm5tPzdtlq4|#{r79ECP8vv<$C6lO%PCyzj zCD^gs>>%dsJ(F!j#lf+!bki|v6hFgujGPcaT$w$I3%@6|Ps>U)%{s|Ld@L zY2P*6OznbFUDJRKGw|d{Fj7hLCUK4;nq`g!c5U1Y*LEAJ(vRU{Md9&`VxIarR*5I)IN1-j5d{)Txj|wUlyVWgmL)Dr%4xRVN_>pvE#UcAa|WtSKr0s>r(4pukIw>w8tc@@)tC z^|SpiPd?36DBP{N}Tvic&TRvx8tF7n~#QCZCvV@r8_!h?9$l0TT-u+XE)%+e&iL z26Ds6ytw~GbcL%8)9K1{xFA*EMokRu|N6}%``Ki z^u0A&?9ArjAjB5%0gyCrdYKLvI)LLxUJ!0d*+DV#KhliBs)gk^x z*T9?_-|s5tCNk2Sp9$e11+#Mrka`g@B~<{>ZL%h)R|`+oI=|`-I4N9Pb*<79T`@WU zbxLmXVM57i$1Za_lifnmpu7@UQ}<+~Ja>Pwq{Kx7sE19TGHuyY2*UP&C@vntXaZWmRM0$R|UEAcjtS zXQ9{4xpR>ciaT2r<^A%3bAcJ|MUnY{&8!W>E=4Az*&p1dhjM?bB?28P$QmpA>&VIF z6w{DgVz%2i77%L!#AhK2qSQWRi?U>Pmp!_}fF60&ORXj3yZ6@Q zwTjmDs@E)2sPD}MGe2ocdRgzie>Nf(5!nK~WTM3Xs!t1gvQ*f=uS&0-SyY#+{lamO zHYe+4h`Ly)_%N=S=W6PRnrHR=DFLtoJa$49QvGTZW5kDyEXXZ&*g zlTT7%B2VoOe2wUWgsNC_PIy-mpP8!_SV65yI+ks)ibqC#oEhJ0_{m zX(-ER8A5uIO@}u!J7c2mVy6*rGz>ftcBZW;uEIbJ)b6#Cxd(b?LZlF#g2cmd7e0Ja zVfLdiU-k69MdOhT=&TGh12Ty*c+cr)BNg=QcQyRj3Bt?hf-Uv|P-Y#CsdbPi=|dLnJFI$4EAKBvA_`hvtA#JT^~ZL1c!ompS24n{yM=-bdRRtIeKYEl>TT zuqP@f*)L?199L`9pC`S^^QcmRMR-EAI#vW1#Pi+Xm_S_J4<>7W% z9ogDT(++N^xM_R1uWbPYL{7TGE$W$6lL*J!5orh%!OZ?`Ob0(g9Aq}|?~b>&>%qlc zr8mSY@6~mqArn$>G=~WQqB22UT{RmNk7qBr-D<3$$cOX^pB4BuU9+Jp(dpwi%LF{1 z>=a*b-w{L8cEWyw7xdz&9*H_ddkC-W4`RynRHi*DQZCdto)qahT5tIDKMUGNCp|CO z23IgOP)}!-g_;?~vmetCHs4Sl_fT==(weon@5w;i21SiXFJ5h`1ij5Ojq!^i$JDKZ*=BA*6<-2P+jNVu90U?^jI5lcIT%$|VfD_2P2F>mPIGpfmGZS zAX8>pP^8p&iuG##s9nJg7J1~G-e*xR=%xPM9Nm%xf}x-*3O0uZP{u<&CsPN-%9>R> zuSDE&&u4kEvdR34>>?)?th&4HGigE9r()HS&D8Z)u1Vu3Tox%#v=*t=(@;aF;c*q~ zKoc4J`pHVK;9py#yMFX52xVl=*|sN3x5Wtv zstCOd_jmKr)yy%_VdYhAFB>$253?o3JVuGCG--79$t0VjGC0~{GF5=>8_cGR_VxD$ z00H0sa>DqT^a=C?4Gd7P=LrAS{eq+#zBn;{XwUFj5mp`mIB7 z{+LDO`wI^;J2uybKIwu|)KPwHcNv&ngk&8|*`%Linn{%eq?HTNkG=YSCrO`}UFj)a zi*Y3{3@IwUfnB4`Lkr*@jp5)jCoQ|t7L8?a5`t-)xT{5^O@f9f`^h}4cP|MShm}k0 z<;rPJqV#fnPWi;AZhXUnH%su9d)wfi7z#|`elnYtf_O&j3lZd=%4Y9kQc(lHK2dnT zs(r2Psl9+TNV(syDW9FucxP~=L_Vod8!wAw)@%|Af$W3PZi1v29uSK0GwQl6o1XfM zf`TdOOFdB-a$hSei(}KeqTBG+r4j=PbFSh_Av4jwfLEJ#m*CjR!8bBdp!noR}v-8l4<2kx#Cr zI;Nc<^(N*cyI3Lb_6n*gI*B-S!g|(R{p23`Xh*T;$UrTDvBi_Rh+hrKRX4?+fIL$X z?FngW_85%ClV=CI8VLBP_}OwV-gpK4RjAGvJ_crW!f3d#cXxvHBbabG z$BNy<@&ke7BT*?AROLS2{naxG$-p{c;R+Bdn8o}ujU+0591PlD%o0P!3SabVK~`x8 zO-49_7J`sC?+-hPo~T=GUu!=IT)8xJh-5;A5H-pq$cxA#0^_`I#9pEjpgne$LQsGF zylod9h8p%l$>4jDwX0gcUc*6U#(;j_yNldRg42(1m?x}{XDI`;X9f6@;k!Vl{+KuI zT)--)mlP}l0jk$X)}QeKJ^>bRh+AyH+&~W)HFTMdh)WaZH9r#LX01DFp3R5yQYIDBK12DS^ zG1plnyfW_0X*~e*C3v*#| z^X?=^nc6|y@)%zM&Nvu1LDM3jm3vDRHs1)X3m+A#I29 zmDVxTs0_q9q3I|?gnEJFj@Dk4~O zt0vYD8Nk^TR21x_%7$V|k3{_4z%4cpB)dR#S~!YytWDJyh`48UlQ#W$#TpsQw^Vsp zH$p4<%!!b8a|;C_G#4)|QR~%M2?0c=X={Pq^z2>h^M0JyRGz#>5%PN8V$wOiiwPG& z?VGE@Z`Vv@*5)F*cVoUx$Px_4?iFPVZ2X7cpe?#{@Pvktnp8g?m8SOyZNcxHBB=rD z?Ztu!@BIvI?yg!cQZ3X0le#Gjxxyq@gN;k-l2Vrhw-qlc5Ij!*40jcc4x_gdm^Ug6SF@~n{wz}R4s=9e58_5V#u#vW zs=d(T6LL1A8Av`PwX$xr`MUix`!~?Sj}nBhuR~x8BF06k5Z6oXD(y%06vbWc144I; z6*InsHo9WeLwHxo7f%c<_wPr)B~t*)w(KX+Dwq@E$)_3bGB&TaYXs!P$;6<(3L0*x zX#Dy2WkV!eKcbF@x7*8tAS=2zbP$KWvwr0kO^6=nuq%K@)`?F=pvlHlrMVj6htLu&z zN{z$DW;BCt!mrFWIf40!Nm`!Dy~YKoM^@8N(Wd_-<%w;~D^U_ zikSB+J$+ofbCof(g9I0ya6y)DD`{15=8Ih{4Td(|wL6C4{u}{zm0r^wC>Ce_WpYg4 zY-%11)NXpR9&=1uDJx0M#rIZunkO%xtocJ}d;z(j@;>*tQ`oH|wv&i8#If|ERS%367;@)GX=$$Siv9N8Z{>}C@nDkEN~jER z&bn9KHO{O>X&#kA5pWU{`Dyt7RQqt8jtE>Y`!*^#QkOq5HIrWV9+bqXX$viFrzOfOdNidXl- zV`CT{%DEO+OtcTz{rPt3M63x$8Yv@rL_j7C!RWj>Q@uWO*t!3u8)bf? zP(G!QvZ)ed78YXWLI@8xS5Q2zVv?@G$V``)q>rO8ar@ubEuQ3bm;|80 z;puZT0v9X&6*mTPQNMmEW7?nczR333rOF@6RBZL^f$J97i3$#?2ABU(gg+Cs0X80G zVq%uieZ+NziWbF;XS;YoEU5||1((&8$qBf44&V>aMYsGlcf99H9M-}!pi_5oaJj|H z&XOee61>$3dI*flcz25M8;8biR8frEELIX}Ec#TKQt6UVe>idHm|~^reh|qGZQ$Sa zVIxBnhQt3D01Ib^;NT%qrKiwUIiNR6N7KQ+h*A3&i1!cO$a~!SmCTmzm^48V{&q#J zm(3w;{Td1{h|#{n_LJ8X#8yc4!y2JsP*2(bUwZ@%K>y1I5Pl}aoALTf;1^i(;ris) zg5n=;r}-bZ-qjc*ph1ax8o-x<2z|2C%;BUmqwU%KsWr>S7eGneX>#*Od+N7oy=KkE zwL0e*$W$+J=hr#!)C5)%C_fOx85Q!%a^5lbGaJ-^=0!P_RinBgg zkIGFPK`}bZJzglp+N9L2dXvZ-jP81m1xFY%T+h#s)$PPwh=Wn5z#yjECAqX(GBO}# zYjKJwh*@Q%4^8HXTgQTA))VKxWQv}GyuO&{mFMBbndG{YcavO$vlB4?Uc$jLgUa0I zmEv~|^cyv>^pEM)Jt1|ysM|qFdTPZDT4J5@$6UAq^2~!VuLIR-W4DrTPf4k^@mlYr zb_UeW%@(VZ)3hLM5*R3>8_~MLCZ%0=bYs$j-I~N*!U&h#K8Za}Ch{+j978QKTK%1o z1bNki*nmKr4TyslETjDih z#vh4yez^@$HzGKkoJJ{1j zR1$}9OA=JiAEb9h%yagWZ=fP!$Xvt;RRD=`IZugHZIiXed}ui|qkQpPISzZW<#c)c zH11#l$6rm>kjTzasHTNEU&{VKgw<}2bq^Zh_ewKQr+SV34z~~EQ879YM6;<;rt7_r zpiV4SK>4D~c-4)tt?1PJ z$E)^|$|XTbt^NH7BdD!_@M_33YrVimgy4$}KVx=WWyh8l8fTTz-)wxh?_$h~qD*~Q zA3kh7SuT<9aLoG63H!dm(=f#fhf^v9d+7Fs2 z+M1(1kLhX;!lVC@dY<$F&+16=d=z&yH2|RPAzF#UJYDj~@aGtd6Anc3Y%8uM6(o-M zV?`nBMkEWYPXM>B@a0g>?$*_RS>mUoNdcP;ct00IuE_cDTJR}?GNaK^_*IjglNA6w zn(0Dtexp-2a@sBkNJq(o<1evN{2rDM0@Eb_pf-S@_geOJPP5c}@cin4@;q9G)qXb~ zcsd0Sm_^Ykb0ZToM=KWFFGtNs9oTkq`;xG3?^{_j2KJMhaoyowsy5PNIJPs_76MoRt01MI>cd7}!3hUz{)H21Qy7F^vx;V#afjjzaAE$X% z)F578mKYfIZ&~*YOv#G|8`;^V2$5QQ$TGi?UqdJ|udnTh;G&S{0c}$;oT_;QrvFrO zHk4C3(u&*(`ZK#t?s5)n)&#J6buh0GwFu9;Zn3axRpCY~uWB6XVd5${*5! zda5Cn3l89ok4B7hp4w!&!PlQWq?Lyj+`k6O(n@eNQ5AXCP?_C*QpxXyv25k!)D3-V zPY(Sp4aqGNgX*SLY8$AI(0T&`$Z}AEB>S&Ya`5ZP28xp{O|4N-C zSFIE4&k_SCE>C)sZ9e3sKebGf7cB}6JUUu;o*uWsD|zt0*0%AdUkK_c^c9&1g2{>M znHUytCP+CzM;Bz8G=)8NVo$}Pex&y8_SS-}WYF99swCe)4^!5s%i+ue{+m+7c#;F` zSo`Hc66ZdR$U?F&GcEI=68idc8@lZgU>O$}jft)EAUChQ$th@PPQrFqSh|>UCUV&a z!XUD+x3}mL5lMbHW?*gLABiFauIza!@j*5#CuHbG1RdQP^Qs_1cq^DS3b|VQx8%%A|fbD@xDKD zrhKy`hUQjgIU$1yrFW36QdbTA2!DGm@J{V>(xenWQ`gow-k{gb>0)Nr0vUMaZ;fSc zK8`fZWS}4^s1ljsH;&Rh171-;eJOQ3S&Ean>n@6qiH9iS)VHnFCu_#CuA!hIM-n%P zb*+jsOp&?dP_^_U0QL1$0`r4n`SED^sMw!pd#<)lU_=|BCHjdse>uokt*PnLj95oP zQq1Nhb)^w!=_1wwX$k9Q?ok`7T;# zd(2x};V zL*DPv=-|a=av&T?lb}fhu-kx? z+;I=EAaO<>KQd@5M9=hWl20GQNnH?hCK)BdFUS3CSmf|;vf4aR`*sZLttt}|?&OW5 zGAzjwa0WtXh>PN_x<|v+xaUN@aKManV89nV6^Wqn>{hKFekJ6iR!=1oIVfB1k^C3` zAB6TY74@>E&-AD}{eF9)>PqIxmeMlWK?@!`oQ#=$2ksldctDT(iqna|w3H*X6l5`T zwsve%Tg%yT8rY?!j>SX z668mDPDp_bXm}&Tw!-dJfpt--&!3=%>~2ChtClW-Rg3H`q%#`|uJFf!>t?g5SKYxE zTs_-Z25kr9Z)CbjCd+7pU?kl)CgLtqa%lJ)gg@-j5XYC-v_a>HA7Pb3o}&+8=a?j5$*o@D$P4IWshM&8%Pg?bVZWTd0d%r zc=xF15GOf)_wrE~FBIQJ#W8?j^FxV!`b@uHB|gk-l2MDuq<~JW;LRrhl%yX-SPt7N zE}V0Lnq(m>l%j8G@VCi>v@^kt78NGUU}%F5YIftWiTp~-FCtWtDoTclm>Mp%>Gav) zb8L$Vss_>gN{K#q+@$S|cN>r0thD$+9Rwg}v)+ynX)FWwzUKpV-3n&e$v=+l%D>dd zU{PuYur{|o))UF9=AQFy>s{vb)R%5>vH7K&yX64fE627*F&pn~e2bMYH`ahB*Z+nmcAWfgf7xUQ8#5ym5 z+&w~a)MvV8$}C`yjRjd8k_{DHiTd(7rhM;~`79R_KUFhK>9Mf7ezf-X3tSVBg6D{+ z(Y3^n^Ccv%q<$(3xtV9q58#AIQUQ9wnfo6P@jz~Fpng2bu=Ah+>HAs{RpC+n9xzoB z$M*)OfJ!JGyNm}|5*654tj;+rL!f2a_;T+YlE|X2V}3oBXFQ&KjSjI3g;NJKPgW#J zo=ShDSxlGV?kqC3v*Li?!jIP~ZC$ew33~81$RGz99HFbK#6Q8B?}={K!55Hu3FU~&#IQ;t_n|5Q~3;u~`v-;(~3=qv1k@MO`t0o+xl z`!Z0x)oq*ivLx8YC)Y1}CqY6dc-VIL zGi=8Yk>W55t0*T;RbTPHwL}tg7rn5Kj{920B2!f58cnz$#iNK^(D)_NKBw~Gc6(-i z3>~%QQ}Cs*`gOyn*jS=OX_(GtHM|1BPoFKpqODT01=+xdYBRl!VibjnFsxR*kDL{Y zt39Q(pA+ekEel}n@ltkym4G`X%eO+_kM$&yXKnPS1Ej2=1=4U2C`hp?x68UIGs!jb zuh$gD02$qT^RjMnZ!S*8bA5uU2q`W1=1HDW<|r(sK^n*SGL7(sn@3P3K=Q=rvvr16 zcV&ERt#}J3TPhl-KEsGt+wXczoIA&rqzA7W%#B18L%cffi`RJkE3TP&RsFh z`huBaQ_Jb4kl$`S>pWJl4i|EFzb$G2wh0*fY0^}O_gNs#Qh1)%@BP8Mx>!nH)Otp^ z%Zj4+K@GwVD{=XXx5>!$)CSuiptwH|?CZ(0Hu>qyd}Eae-*kn({9`-nG%e1JUbeOc zSsRn6`a>2<(}vSCapO<^ES7cH#YZ}PBh97lIbATBcxs!D%!j>!;ku8d!R2w@w;vva zeojvdi;mzI(VkR1Vgc|!OQ*Q^3E9hh(y82VB+P1E*VSxtIYXiB3f0|z@mQVV`X)I| zmF{il(epEj7~cHiWp@vjt*Fu`q+qWHjY>H=O67Pju8GGqO;4OJbtBb#ar30~g!X>2A$d&mMx&zfw@2TGvZVIIMvM~K4nA>QN);hWQ@u^Tr{ zrw1@U0WUfc7O-)2q}k~ILK1d*bs%gDn**B0=5OIjnBd`&Pw53HxVPs^`bO+e3{D3i zQ|@ix6ehuvVjvr~T{6L&8)u}*D|m8y06D}I>#NqM4RLUEqA)9kcaq)xNyM~s>NU9U z^rup&fyCgpfJGL+HPwt-&nzH^0)n+`if(O%I7Zn2n>QXM8;$BS2*Ba<1m>5N{L?(D zY1!;%Rj6JHZ*GMhr;^xdai594=<}Ow2M()QZXp)W_xV`crze7j^aJ(d_rD|(Bj%i7 zkOhzdp;Q&CA^yU;9pU`<1@q=e?VAQJoiLn#j@cd96lDe8)PWJ>tf!QP#U=Jd9aO8R zE#&Mis6g8GR*1EBM9kOw6F4JSvBphbmtM(H#56mKF)NyfOW(T)Bsw@y$e9BHN*_YA*O|V-v*cHq5eh^iO96j#1G?PfCWE@+W9Y?4hs8>o$@$&G{z#3c=?GcNRp1(JgjKD3d!5+CN&Uy_13GcC@WVY^ZgHsU5pvPP?>prAsVNKtdO%+w9DmrXc*Tb4?Scl`ePx~Y1kzBsEw7n6NM zOA-8~>pxI0FiE;QpZqL43kW4g6LQgfg69`MXE3GiQN(aQ^hAatvJfV2AK3yk-mdFj zYfXgG;jcgp`dK&$o`=P!=#f$@jZIF4EVTP#?!rVb%C6tsvouDLJOj@+w9#Y(QWmpY zcC~HPA-C8!O%x(2*@!Vkg@Jh|idnj#10bYyeND-lT;gIf&Ykp6x}G98>d7EGqN9a) zP0kQ_j`y!8ee6Du70X?v^hA5(gL^19EdRH_xxkN5iG+0_ddzOo*>I5uD-yZd@?>V zofcu)6P!CbO>$|Net+y8SpvAd7&$`J4Dm?dWd3cV!fpJ(_NO`gSCSCOgkhU=yVJ*Q|v z>)TIRQr8*U&8RiUg5l|>Hs&8gJOV!aZf$F!dy?%x)hCZPH#ps<9ZjxzbN7O&$Pkr*K zBKABa5Kz*LGl*mJ`lvkZ%d@4Wl(|O>7G4el#JTAEG z>`sB0a!NHw5`#?gNA{|SK~m=>m5o}`>%eU`w{}G$2&i&Yg4+tzRKR6a0?&W81M@(2 z0ZcpV5M3JUZ=x+e9N$L&gJq85x&a28Kf6|vj9!uNB<;7C8&Rbq4X9?r{!qbyVj^tc zqVG&57t6ed`%7a~B6yjY6(*An0kFQu&Oy~bpPsLkHdBMWb6f4yhk>%4AHt*fi`@o# zTOVAgo264H5Xb^iL5AncVoa1GPIlmV#rY=8V4M34x=M{>0~?SRP>x*PBlE|Bc)NlV%|vm$8ivc%;Oyg4te+4;}kIoT@_T zeb`Rq&(qgsZYV&1pQVcYcK5GxrMQ-3UL7yN1H4r;3@PgA8KASaVRN%!@s~@RPD!WB zw?v5P`&ng?9>->XwTM6Z#0tezYn~w^bTuCuWG7eL?h+9VDQuSLGY6Bq+-$&7yuu6` z&dP%R^A1_xrpvo^kTyQhefGPooy<@mNBYkeK=2b{0Z0yHqYUMSV=B7=BY;&PPZ%R$ zfdH#Jixi`<@8>aPo|-hS^5BM_7uR;QkPnLL=Depx6tOO6^E{MYvolwJm-S(Mk6MW9 z5>+Yf=LK4zQGO>54X>iL1{Qdj0p;DpP~U|N#vtTG*>(Ad|Nn8()dO-gvk)}G>e)BW zf`qd_uMyUri;khJ%Xu09xM0rHRAb~E2D{G@3JN3FIrePNqd6-da95cfvf8KF z*S&2V5$?A<2V{fWxoOtnc5;K?;whthbVXQL^tDP&C(1SB92@g+O_lMIi!t%t389#H zEoCT_=O5RL;o7~)W~v^j9<#J$NL#f1)v78Ai)lIt7$1QCXL=`?7wFv0EL*ZXQ_;r% z-Py{EoxmnjD=#nU1!>(}-8`gTcno81@`Jf zh#jA*`=C@2jrNl$#`Gwa2o0xhccwQe8^L!9%EtACPHznSG zZrDcs)UgcW=>UsnL9~24Ly5T4{@(Fo9im);W9pGq#`J;JM$u)?7bsffU0#B^ zpZ|?RMcbJ9i@qiDLK;o^GwSM$aihW*Ky;(B{!WmC07omd!`q9Cb+K;YdS5-tI?l~? zux(8uR0!dmWbaHvJSI6wAJT=Hir4&;eXH*|Lwl!jS-AcnCgPLP1@g`BPPKy%^zfdE zhhb!^`CgB7<{G3Hv&4730z^KK%g=jfIS5D>!#9PUd(_K~yEmaZ1G9%G65t1LgTZ5# zDz0Ky+kVi8!H14ZphVsdP^YUOlv1mzFOg_sMee9frmM49W$ht1*?pi&pDAo+*gLxKmms>ksHsz*VzRP)Xuf6RJRvNXD} zrkp46aR<7P38sYki4^OZHEXhxJF(8DKc?bVHdpllm<|&W0?L=ASR21eXauTYon{%}FI;H;K!_BX0 z&OO6PWpK4x7n6VEhVxlz_A`uh8Jgk>j^>S=S!r^*n^o5rkhg#$5A| z-34Mv8oRfyRZEMa>P1xJb6 zsNbbN)&A0No;$m)#l$qC{j8Z^Bv#9h#M&YM!5K7?c_kZ+8`emDbim}QTj^`r{u)_p z6(0d`;|i1mel$~%ROhkXw@8*yts}*zt?$dy?+FyBsl7DgkVwF=bIy9f%5t3cqq=vW z(AllevWF9xVD4dhVF(1zOQQE0!h;-%uh89pG@Q{}L@EMlah=~n>Ovr$D=)Zmj;jq7 zb?IfHUca)3L;a_J;JE1teufEy)B00e>*NsPGK>^I$zMH4zftr+R@B^klNXj6e>6|z zzb$jf=(ixn)x&&#g2O_#BVJSJ&06JXaVyzBEH^mI+oBF4T&jK{Gv}X~QdEU>lx-$P zr;=D4sk>PM*-YdTl9_Sv+(H0J+-jN{2cJ{jE-a%W6H9(m?1w1R}O51z$1G zUOAYN-k$_5>GxjI(HMjX0gIo+I%=r}#u%rm=dalM_k3#T(13EF@u6RLybspyc?5>C zLs7u)pVSs<^nl{J-z9mlWc12J02g~uTY!v1EbbWFiPP4|WMiqV>Kj>Sy~Jq8>?1a=ze1@c zrkKM?1BS*lGz*_BTj@WfQ{%lNXt38T7CXjqwK*g7Sa+UPe<6>o1{}M6ePDTg>(>8s zEcZ@NYdmOS9HcUM#{7{5cF=xRp@j-DNV-*fz;X9fx>_bJ5jzo~Hodt=B_(&|EiUa^ z3UDBBklKUd<=e~3>+%t1btMw!9tm0sekaDO;(w3Uqlo=*$Q-La_WIPbxt+h7omxSK zZ*=9P8ZfA*HhqA_Ym=i4D+j+|}&|hsU zG?X+f9iUD!#ewx3_{N9tV{>RxC^z*|KZhrVK{zj>q9&Hm_>1J)Jt*VkpaYWL_MSm} zjOE`BVs`Whj9VKk(rG$a`oaBA#id zrtq4iiZemy+WCM;XVbyq+C>|qgn3&iN zYE=Stk)hgFZP4vLmujlsW?|Fu?Y704Efn<$3yh<);ifY0+ZyUJzUS}y9^tOsx6v^r z_Bml7dkq53BKUL+*Z?q4wDkFzKlKVOPRaCd>lu7o&h?2+6m9+!*C}`)+@RzDYd1C> zI(87}Iafdo<&>99Mt%wfP!=yrDZme$?3ZmHc|)4Npawbf1sw`r1A$l1x(rImKfD@e z!^)fRNI}GXhi6El|)&K(@H20pRWaYf-`t z4_U)PC-(J*IFjHfquPBtxwUeU6@BM_Phy5jS6;jaX+n{WxjBueSk^p=GwD%nHPCG& zHqf>fc`6DX9zHEQoU{Uhnn(Q%v!=H%@|sg=38EA~5d#oR8BE>?Se~6W<~{V<#DeGC z(Mzob5%z+x|51u&L`0#6qfuKU=L{4fQ+^siu@n{Z1~JtNjlZ8v~l~}R?chTY6bxH zQ{!0tNVHobkJ~$SyVzKQ1IH1fbKk~k?k zQ-QtuQKB)e1KVhQ7j`S0Jk^Jzt{VUCNLiFo6QnRO&5wDvrL<~4+eUYZ$olq$moHON z6?tv(UB+LQWJJQ*6=i&cQifE@?GT(Ni@o!izyE=*+lQ&UN^dgL{ivWV5;OIOsg>L zj4vLdZ-^M4&19XrXM3tyqE~T63wckkGX#nlEK#UOSj@z2iF4?0KXfx%^+`3G_4dlz z<=(h`J-6>S$FJfhj&ldy4Xus}jbkN!Ol8IX8YLJvnvT$*aPk%C1x28EiIx@~UbBxa z+(tW#BbQlIms6)qiFMa-x`8_9n{7cQ#(6U8Bze-7U^?G@aZqt=+*(=-6oh%kp;P*v zN9=-`d`>oV2+`^>lo<$R5=}bRouYq;mo~fg8!F@YuSWrahdgdNIVih-xqn$TnUBg& zQNzj4-;AqimV?iHmC&A~;pm5x6<2R)b-1Hgs->E@XW;U;tN!lP(RZf;HdCv@cpj3d zEx{ic_^#n04?Pn()`M9avEpI%h%%FfnErOvc)Y4czECr37$YgC3F625Eyi2RW2&oZ zd^53{HqXo?Nx1VYyv(93*+&ykF{6S)@IK>Ck1E(M*SLX^A*Jr9(1gxsesDA(tv3WK zwBFCrb)whh0&>rOK?n`qSj`Xr=b$2E{RgYc{0dA0u_?C^R*%m&QJ`}BIvb#@xUbty zU;z#i@$J7qNxh`?;WO-H$3+QV?2(tVOj7iEu#zBsionBN-^1(L&d!gUiWN!nRfjH~ho)47OJFc@|YEl3CPcn1WpnJ~NGrc$h zV9dRBU$pKlTT?r|?zLCWg8C=%^p^rqE4InWGxSOx)s!`+I()iG2s*qm6}9xp-8<5C z7Z=@0v|~Eh3>w>;ZVRL2jy%a-CSUr>HxSGAq|?1r;S9=VIUt_OsKE96B}h%Ono93y zs-$8{M?KX&IqNju!PdLeFW2{I6kLB0#*##3Jf`#o=9qSt)i(MCV#$(ab|08Zhc*LO zQGU*rEmwV^u8#)X3=UomAn^pcHpf4B%(3ifL^h<5EroYz9|Nk#O|?(-MnMM`r{lye zWbj&;YFsW~8mST%f6Y{UECAw5t?3cah;8EN8`ztlwBd*F9x}ihhj-r>uOXP|pIG5U zP1>wDALX>f#`eRag(+O;Bx699($LBQKaix zmBiyO=|8O#sFgAxSAa`g9U(8PMYpE1f&r$9x43WDTalrk%Jo5gCJWTT;93GoZ?YbU z#gmPnHJ~uo%1dQCR$kR$?g~5pI+z5kmkD;BG7%%EXOO_w?}%2T9V}%4lys@&7g%;A zbEY){AKkxWQba15n7`azZzFHDEf2?R0Jv!}?tp~@R039#AN%RNX_~O*Ge9B3iN22V zactluKZ+bn=1G5;b?9O#w4nXm5I1S{JN7$l2(H<7B-pC9eq+R?m(!x&?>TPl_A-O5 z`npzhT|JfzY!{XiK$TBT#0lWSGhWk`x(Lzd3!C@Y2J;1Q^mw4D*A-WZLhpB4=)+r{ z>*8iIh;KKoov@Ik1&iySG2$ZwB~u(9#jR$Aprgjd>3BMRidycckutaAB^0_Ew14^< z==BYZ+J-34bl58(<9J!wo38#fWS4;J-=I$km8*ZDP~{&wyvzrtyrBp>4A0r=P6`B{ z899wirz}Y0{+dsxt{Y9$QM~d|026SZLx$AWL07W0fe;uq92r9#mwgaxlbVW-W+Dko z$Fuo$V#V|4p4_>nY{RBq#ogw|^qo739zOa|_Anes*s}bxOXDdMfFbi%43`5{C^;In zmDnSK+{vQXz8@KhFNP&9_h^uH$K!>^Z8_49yzWfhmvawEkls)^4aJNN;X!7ERYIHPrRjYf9KSIBX~Xjrn!1mR+j>{vdMzKp!mpbs@~D1v@CCLnH`6$3gT zc2&l|TCKYiu0DLI#iJGKMq;~zbG*@v+Qi6FhTrOyeeCc-r}3_XMQqW$zVo%_%@0(j z^3h$?kG@;m#)=c6vDj$|1CD+4pT;h6Dn&)yoP;cFZ}3^@zNQ1E-BKl=>@21Qv6R={ zO))$HLHBe&{r3ARrx+(L(b+5#O6T3_SA%P6;12F{V`mz>86zB?aft50*fBJ*8t}1q zWrGscdaYoS-v*pk_>}8$L~#rcBfey1L=~`%v>e!}Ps&a8;F#X)nLuzWlCoe(r`r<5 z;nBx{AV6lps6`r4;TvzwICWGr%phd#3vRhY37-knuER39p=O94KE8v1@TfD2%xv*h zp6tMh1zS5oSCDfQpZK|Tr?iPjV*e=97f>{w!={pYyD(^w3gvuSaBxe##mxsqZc=lJ zQ=NxlrK+Q~bbc7DyRZ!esGm-Cw@Uc#@||8Mjrjz{rQlp7=wSJs>T~!_zN@6V=6#6G zm{0i!{!7CGCZ-PJsn1%PU@~n*(5ms@8sLF2Oz*){S>bYD)IEGn9d5B;B$}6#30N|}{Oy%6)mLJaO339`L06@@^C{C(dS}OW^p9N()H{Ww zXa$4y)>04~C^+u9jUfqcmy{ckf}>Owv@DC`+o^Zgt5DH;KjZq`gp?Rc$=+B5Yyh15 zi$yvtG}6{h=;>q<@;J@sQK#_yuRUbM2}V&5ShH!Vqo3L@m)I<%vg0YW^Jn$ByNLkz z2AK8txfcyzTJ47^D6>?Evqbv^;Ox?g8uDm-pCN8R@5g|P2y4R~?3hnrLF3vTsc54hyV)>@$ZS8$$sYHe02FER5FrP{k?o;^)Jhxu-Ih6@6 zbUG98rY_B{0@faFyKjJdFMH;3L|*TsClJD}vw|>DtEj{n_LlxStWT zMdvkOj%;AWQe4I_%^o(ML?NT}B+S8!sAHnFq6H+Fcnbp&QNY)U&c9*U!4=}y9a4ZT z_G_I3f@a|!z-p;xr5o!V;aP z>jp1mci5V&SIZ47Uj;vZODm_g$3i9HmTElj5R z8GWh+2S;&Q<26U>K{yi=w%x07+Q{O7GN;+5fm&=L|5<`3IhI2FR_yc^MG;ifBq;Wn zdWmoPeQD!`Iga3rr#R1K8GOQ7vy<;_u1!eNHB;|h^ZD-N(D{rm7d%^ON+_|$&i9Qc z4uABLu)Qp}BXJ^+bH=^N`9i120-(-IeyFe@@dlE!KfjgUw8`gW&pXwt>oYm%w z-fc=og?fUkr02}F_K6>T<_hlIm2AvI)K-2=vPE}wA*5VxYM@WFwzExra7yRTpPH5z zl&(wBO7=^+84FK__opIk{q6+cAd<2}fo+T?AT`B?yOul-nriJ!Gb3ycWYiqQyK?6^ z8m{(#pTLrHiHSL8!o!yyVyPz=P5-T_-Kb?Eg-f6T;2eH?OfZ+xj{8)HDXI`q{baFa7A2?H?{)dGRw+4Z?h}$96aK!~=WCN4^Kz-kebhzp#a5Uj$E^z1UPt{VZ zQS^!!=ME@5YiSHJJ-Bh~kFZ%xy;;H6YS@cDHMNXv6tcXCeRH?nL!)kpw{U9L#c+FU z>%}cI*+HwiXOBv3wcXd+W7jVYIGTaG-*)UYf5Z{AnVku-2?hqZN4Lg3ftAK@R-b_J zf-D>Y&w+(GfSv5;#-e{)(xW(#qs#G`!~m=o0ymOY+xPZ%hT&3U!>Q9qv9ENk_M=hF zx8A7y5=)+qE^ydKrEl#eq&R1@arD{4y9N7rOamZ90}=&i+$d5qB~NTDAZSG-G2OI|NQO z_V}RVA(d_l2JOb->iFZ>VKx65uwGPr@<9%QKewnYc@UazXE({R-{fyAcd`WnHq(11 z)zLQe#!BqEbvK+YOm{;O*kI6+Hh6w#bTJgtSJ_5!kC{Ms^r_~Dc>@Hn(ryL4eGdWB zvV-u%zeQ?%EX@`e@^`9P#mHLs(H&aV=9(HJ7y8WTJ;Tel4UQqHQ4e9Vb~pBO&}$bO zGzQ#>8{&Wu8f5BWXp7S%#H1Pi*_^1iwi;6f?${jn>H)1Hf1)lO+^7%6C^vlcWa*9y z1jQveyx2L7r|v>h^bVLugR)30TzD#UK!}u&K$4q9M9V?6O7$C)*cmhW2HR7I%;}EyTj{Q>+tbFn z8Q>|3CGUVsVPSOvCzg>`>|8wr6tn0yA+@onlGq_g0@%Wq4k&4@r&3DJ6&F^cCk3Oe z$B^pkE>Xdpk3o9eHemY|+z8uWAS0Ia`r+48k$a{&e8N|)hpisL1^9;W&DNw=6murj zfhTrlNF=$Pg0^kA-PPC6Rq9O7CKNIJ;JoBwuK7CyJDwI&=h2#LolieG^3KVUq&Uj$ zAU6s0ZfKVx$eL!i;DU_Og8koqR0zIe^>(ABJMTQboKE3w4k9B-p+;DZtk~S4G;BRn z%v)%(ON1#GuaF$)y&-S5lYqaA8wzE7A;n|v( z-U1;RQRIT?SP~maVXyLnJ5)>2fA22PX0D}n8+usAw*xiDXy~_{#jdkr3rQOOT{^-O z9i5Bu7Sh<}>2+uE)=ssym$MWY``XSk9FILZkWXDb0;0(gFp%g)jd#FENd|cT$RGNJ zwM@BOu*{e3#bs@(c+(d(Ih~X5oZ%~@6R2Idy2MOs2A1DeUR#RdHRF-u%~5u#0T7Mt^!;uJ_-hJiz8#ve(5>E(h&OhWIR zhSwP=jz2iSP22tMA8?=AqU%Q3RHbuXnvFr$qavLt^C}(dJ8|9(j@6#>*hB|`#) zUwN5IC6uSEZ5f$L$E&e~rmYZCUK53r)p<5!eSr9p?wOU@6}V`G9B|dM!YOHr<_0m# z6qTIM#T$sb7MBT%z4DSFGs29LtHxK(L<}a{uax35p)XNFRS>YEdLMK^;}cF6XarCz zolQ~lo*#o_LAtE2xdK!&K1NqOE)z72{BM%5V#Z0pO{?slP<6vHX1F+x06teZ)$=|d zx1>)y7)iTsV$`-=ilZ={6BHy;ilAHSjN1B2ld2lF!zX1HAZSGc-I`qHeI3SE4`AkE z$HQV3`vdD;NwamO;_5S{lG(%G0W2aIq}32cLUAF7m= 50) do={\r\ + \n # after 50 * 0.1s delays, it's been 5 seconds, which should \ + be long enough\r\ + \n :set errorMsg \"New folder could not be created at \$newFold\ + er\";\r\ + \n :log error \"mkdir: \$errorMsg\"\r\ + \n :error \$errorMsg\r\ + \n }\r\ + \n :delay 0.1s;\r\ + \n :set count (\$count + 1);\r\ + \n }\r\ + \n\r\ + \n :return \$newFolder;\r\ + \n}\r\ + \n\r\ + \n:log info \"Created function \\\$mkdir\"\r\ + \n" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=CustomUpdate-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n/tool/fetch mode=https url=https://developers.cloudflare.com/ssl/static/\ + origin_ca_ecc_root.pem;\r\ + \n/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalRo\ + otCA.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\"\ + \";\r\ + \n/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalG\ + 2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGlobal\ + G3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n\r\ + \n#:global AmScriptsUrl;\r\ + \n#google\r\ + \n#:local CertName \"GTS-Root-R1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-R4.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#:set CertName \"ISRG-Root-X1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add dont-require-permissions=no name=AM-setup owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_RouterOS Setup Script: AM-setup\r\ + \n# \r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n\r\ + \n## Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:if ([ :len [ /system/script/find where name=\$ScriptName ]] = 0 ) do={\ + \r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# :global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n# /system/script/add name=\$ScriptName owner=\$ScriptName source=([ /too\ + l/fetch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptNa\ + me . \".rsc\") output=user as-value ]->\"data\");\r\ + \n#}\r\ + \n# For run from terminal:\r\ + \n# /system/script/add name=AM-setup owner=AM-Setup source=([ /tool/fetch \ + check-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" ou\ + tput=user as-value ]->\"data\");\r\ + \n#\r\ + \n# /system/script/set source=[ :tocrlf [ get \$ScriptName source ] ] \$Sc\ + riptName;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local RemoveThisScript false;\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n{\r\ + \n :local ScriptName;\r\ + \n :local RemoveThisScript;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local AllDone;\r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n:log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :put \"Add Schedulers...\";\r\ + \n :delay 1;\r\ + \n :put \"Add Global scheduler...\";\r\ + \n :local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFu\ + nc; }\";\r\ + \n :local Comment \"Setup Global Environment for scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] \ + ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-\ + event=\$OnEvent start-time=startup;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Commen\ + t) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEve\ + nt) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Add Update Script scheduler\";\r\ + \n :set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\"\ + ;\r\ + \n :set Comment \"Every Day Check For Update Scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpda\ + te\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Commen\ + t start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n }\r\ + \n\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n /system/script { run AM-GlobalConfig; run AM-GlobalFunc; };\r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :set AllDone true;\r\ + \n } on-error={\r\ + \n :set AllDone false;\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$ScriptName . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n\r\ + \n :delay 5s;\r\ + \n :if (\$AllDone = true && \$RemoveThisScript = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :set OnEvent \":delay 30s; /system/script/remove [ find where name=\$S\ + criptName ]; :delay5s; /system/scheduler/remove [ find where name=\\\"_Rem\ + oveSetup\\\" ];\";\r\ + \n :set Comment \"_RemoveSetup tmp scheduler for remove setup script.\";\ + \r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-ti\ + me=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$ScriptName . \"\\nI've done everything, and now I'm ti\ + red... I'm leaving. ))\\nThere will be an error below, this is normal.\");\ + \r\ + \n }\r\ + \n};\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n:local FetchFile AM-DOHCert.rsc\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \"[usb1]/scripts/\" . \$FetchFile);\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/247/016960a4\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 03:45:02 16.04.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n#:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global ExitError;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n \$LogPrint debug \$0 (\"\\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if (\$CurrentChannel != \$updateChannel) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel (\$Update->\"channel\");\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$0 (\"Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"\\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([:len \$arrDeviceInfo] = 0) do={\r\ + \n :global arrDeviceInfo ({});\r\ + \n :local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};}\ + );\r\ + \n }\r\ + \n # else={:local arrDeviceInfo ({})}\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [[ :parse \"/\ + system/package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"\ + Error\")};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannel\"; \$Cu\ + rrentChannel;};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentVersion\"; (\$U\ + pdate->\"installed-version\");};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannelVersion\ + \"; [/system/resource/get version];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateChannel\"; [\$up\ + dateChannel];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateVersion\"; (\$Up\ + date->\"latest-version\");};\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n\r\ + \n :global arrDeviceInfo [:toarray {\"section\"={\"key\"=\"\"; \"value\"\ + =\"\";} }];\r\ + \n #:do {:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system/package\ + /update/get\" ]]} on-error={}\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devRbCurrentFw;\r\ + \n :global devRbUpgradeFw;\r\ + \n\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global ROsVerCurrent;\r\ + \n :global ROsChannelCurrent;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :global ParseCustom;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global devBuildTime;\r\ + \n :global GetPubIp;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :set devBuildTime (\$Resource->\"build-time\");\r\ + \n :set runningChannelVersion (\$Resource->\"version\");\r\ + \n :set runningChannel [\$ParseCustom \$runningChannelVersion \"(\" \")\ + \" 1];\r\ + \n :set runningVersion [\$ParseCustom \$runningChannelVersion \" \"];\r\ + \n\r\ + \n :do {\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :local RouterBoard;\r\ + \n :do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on\ + -error={}\r\ + \n :set devModel (\$RouterBoard->\"model\");\r\ + \n :set devRbRevision (\$RouterBoard->\"revision\");\r\ + \n :set devRbSerialNumber (\$RouterBoard->\"serial-number\");\r\ + \n #:set devRbCurrentFw (\$RouterBoard->\"current-firmware\");\r\ + \n #:set devRbUpgradeFw (\$RouterBoard->\"upgrade-firmware\");\r\ + \n :if (\$devCurArch = \"mipsbe\" || \$devCurArch = \"arm\") do={\r\ + \n :global devRunning [ /system/device-mode/get mode ];\r\ + \n } else={\r\ + \n :global devRunning [/system/device-mode/get running];}\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n\r\ + \n :set devRbRevision false;\r\ + \n :set devRbSerialNumber false;\r\ + \n# :set devRbCurrentFw false;\r\ + \n# :set devRbUpgradeFw false;\r\ + \n #:set devCurrentFw \$runningVersion;#:set devUpgradeFw \$ROsVerAvail\ + ;\r\ + \n :set devRunning [/system/device-mode/get running];\r\ + \n }\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Error in Function getDevice!\");\r\ + \n :return false;\r\ + \n }\r\ + \n:return true;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global WaitArrDeviceInfo;\r\ + \n # \$WaitDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devCurArch;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global PiblicIpAddress;\r\ + \n\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :local Return;\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n\r\ + \n :set Return ([ \$FormatLine \"Hostname:\" \$Identity ] . \"\\n\" . \\\ + \r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location:\" (\$Snmp->\"location\") ] . \"\\n\") \ + ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact:\" (\$Snmp->\"contact\") ] . \"\\n\") ] \ + . \\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board:\" . \$devBoardName ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Arch:\" . \$devCurArch ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Model:\" \$devModel ] . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbRevision ] > 0) \\\r\ + \n (\" \" . \$devRbRevision) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbSerialNumber ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial:\" . \$devRbSerialNumber ] . \"\\n\"\ + ) ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"nleve\ + l\")) ] . \"\\n\") ] . \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Running Channel\" \$runningChannel ] . \"\\n\" . \\\ + \r\ + \n [ \$FormatLine \" Installed:\" (\$Update->\"installed-version\") \ + ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :typeof (\$Update->\"latest-version\") ] != \"noth\ + ing\" && \\\r\ + \n \$Update->\"installed-version\" != \$Update->\"latest-version\")\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Update->\"latest-version\") ]\ + \_. \"\\n\") ] . \\\r\ + \n [ \$IfThenElse (\$RouterBoard->\"routerboard\" = true && \\\r\ + \n \$RouterBoard->\"current-firmware\" != \$RouterBoard->\"upgrade-\ + firmware\") \\\r\ + \n ([ \$FormatLine \" Firmware\" (\$RouterBoard->\"current-firmwar\ + e\") ] . \"\\n\") ] . \\ \r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n :global LogPrint;\r\ + \n \r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n\r\ + \n# :retry command={abc} delay=1 max=2 on-error={:put \"got error\"} \r\ + \n :do {\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using default s\ + ervice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={\$LogPrint error [ :jobname ] (\"Fail\ + ed to detect public IP using default service: \" . \$Url . \".\")}\r\ + \n #:error \"Failed to detect public IP using default service: \$Url\ + .\"};\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Failed to detect public IP using default s\ + ervice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using fallback \ + service: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={\$LogPrint error [ :jobname ] (\"Fai\ + led to detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :if (\$PubIpAddr = false) do={\r\ + \n :set PubIpAddr \"not-detected\";\r\ + \n } else={\r\ + \n :set PubIpAddr [ :pick \$PubIpAddr 0 15];\r\ + \n }\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n :global CertificateDownload;\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :set UseFor [ \$EitherOr \$UseFor \"undefined\" ];\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n \$LogPrint warning \$0 (\"This system has low free flash space but \ + \" . \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n \$LogPrint info \$0 (\"Certificate with CommonName '\" . \$CommonNam\ + e . \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n \$LogPrint info \$0 (\"There are \" . \$CertCount . \" Certificates \ + with CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n \$LogPrint info \$0 (\"Certificate chain for '\" . \$CommonName . \ + \"' is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n \r\ + \n \$LogPrint info \$0 (\"Downloading and importing certificate with Comm\ + onName '\" . \$CommonName . \"'.\");\r\ + \n \r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({ [\ + \_\$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$GlobalScriptsUrl . \"certs/\" . \$FileName . \$GlobalScriptsUrl\ + Suffix) dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Common\ + Name '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"Required certificate is not available.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Comm\ + onName '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n \$LogPrint warning \$0 (\"Certificate with CommonName '\" . \$Common\ + Name . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :global LogPrint;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n \$LogPrint error \$Name ([ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\ + \$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {:set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :global LogPrint;\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint info \$0 (\"Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Creating disk of type tmpfs failed: \" .\ + \_\$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint debug \$0 (\"... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Making directory '\" . \$Path . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={:set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]};\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={:set Path [ :pick \$Path 1 [ :len\ + \_\$Path ] ]};\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={:set Path [ :\ + pick \$Path 0 ([ :len \$Path ] - 1) ]};\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint error \$0 (\"No valid RouterOS version: \" . \$Required);\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No symbol available for name '\" . \$Name \ + . \"'!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\r\ + \n \r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\r\ + \n \r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Setup Global Environment for scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add comment="Import ssh keys for public key authentication" \ + dont-require-permissions=no name=AM-SshKeysImport owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-SshKeysImport\r\ + \n# Script comment: Import ssh keys for public key authentication\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global configs or functions not ready.\"); }; } del\ + ay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global SSHKeysImport;\r\ + \n:global SSHKeysImportFile;\r\ + \n\r\ + \n# import single key passed as string\r\ + \n:set SSHKeysImport do={ :onerror Err {\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :if ([ :len \$Key ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass key and u\ + ser!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ :len [ /user/find where name=\$User ] ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"User '\" . \$User . \"' does not exist.\")\ + ;\r\ + \n :return false;\r\ + \n }\r\ + \n :local KeyVal ([ :deserialize \$Key delimiter=\" \" from=dsv options=d\ + sv.plain ]->0);\r\ + \n :if (!(\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\")) do\ + ={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' is\ + \_not supported.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FingerPrintMD5 [ :convert from=base64 transform=md5 to=hex (\$K\ + eyVal->1) ];\r\ + \n :local RegEx (\"\\\\bmd5=\" . \$FingerPrintMD5 . \"\\\\b\");\r\ + \n :if ([ :len [ /user/ssh-keys/find where user=\$User \\\r\ + \n (key-owner~\$RegEx or info~\$RegEx) ] ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The ssh public key (MD5:\" . \$FingerPrint\ + MD5 . \\\r\ + \n \") is already available for user '\" . \$User . \"'.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$MkDir \"tmpfs/ssh-keys-import\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Creating directory 'tmpfs/ssh-keys-import'\ + \_failed!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\"tmpfs/ssh-keys-import/key-\" . [ \$GetRandom20CharA\ + lNum 6 ] . \".pub\");\r\ + \n /file/add name=\$FileName contents=(\$Key . \", md5=\" . \$FingerPrint\ + MD5);\r\ + \n \$WaitForFile \$FileName;\r\ + \n :onerror Err {\r\ + \n /user/ssh-keys/import public-key-file=\$FileName user=\$User;\r\ + \n \$LogPrint info \$0 (\"Imported ssh public key (\" . \$KeyVal->2 . \ + \", \" . \$KeyVal->0 . \", \" . \\\r\ + \n \"MD5:\" . \$FingerPrintMD5 . \") for user '\" . \$User . \"'.\");\ + \r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key: \" . \$Err);\r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n :return false;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# import keys from a file\r\ + \n:set SSHKeysImportFile do={ :onerror Err {\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global FileExists;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global SSHKeysImport;\r\ + \n :if ([ :len \$FileName ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass file name\ + \_and user!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$FileExists \$FileName ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"File '\" . \$FileName . \"' does not exist\ + .\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Keys [ :tolf [ /file/get \$FileName contents ] ];\r\ + \n :foreach KeyVal in=[ :deserialize \$Keys delimiter=\" \" from=dsv opti\ + ons=dsv.plain ] do={\r\ + \n :local Continue false;\r\ + \n :if (\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\") do=\ + {\r\ + \n :if ([ \$SSHKeysImport (\$KeyVal->0 . \" \" . \$KeyVal->1 . \" \" \ + . \$KeyVal->2) \$User ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key for user '\" . \$\ + User . \"'.\");\r\ + \n }\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && \$KeyVal->0 = \"#\") do={\r\ + \n :set User [ \$EitherOr ([ \$ParseKeyValueStore (\$KeyVal->1) ]->\"\ + user\") \$User ];\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && [ :len (\$KeyVal->0) ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' \ + is not supported.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Check for certificates validity" dont-require-permissions=no \ + name=AM-CheckCerts owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CheckCerts\r\ + \n# Script comment: Check for certificates validity\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global CertRenewTime;\r\ + \n :global CertRenewUrl;\r\ + \n :global CertWarnTime;\r\ + \n :global Identity;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EscapeForRegEx;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global ScriptLock;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n# :global WaitFullyConnected;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Renew Certificates\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :local CheckCertificatesDownloadImport do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local CertName [ :tostr \$2 ];\r\ + \n :local FetchName [ :tostr \$3 ];\r\ + \n\r\ + \n :global CertRenewUrl;\r\ + \n :global CertRenewPass;\r\ + \n\r\ + \n :global CertificateNameByCN;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global UrlEncode;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :foreach Type in={ \"p12\"; \"pem\" } do={\r\ + \n :local CertFileName ([ \$UrlEncode \$FetchName ] . \".\" . \$Type)\ + ;\r\ + \n \$LogPrint debug \$ScriptName (\"Trying type '\" . \$Type . \"' fo\ + r '\" . \$CertName . \\\r\ + \n \"' (file '\" . \$CertFileName . \"')...\");\r\ + \n\r\ + \n :do {\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] \ + }) \\\r\ + \n (\$CertRenewUrl . \$CertFileName) dst-path=\$CertFileName \ + as-value;\r\ + \n } do={\r\ + \n :if (!(\$Err ~ \"[Ss]tatus 404\")) do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching certificate: \" . \ + \$Err);\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n \$WaitForFile \$CertFileName; \r\ + \n\r\ + \n :local DecryptionFailed true;\r\ + \n :foreach I,PassPhrase in=\$CertRenewPass do={\r\ + \n :do {\r\ + \n \$LogPrint debug \$ScriptName (\"Trying \" . \$I . \". passp\ + hrase... \");\r\ + \n :local Result [ /certificate/import file-name=\$CertFileName\ + \_passphrase=\$PassPhrase as-value ];\r\ + \n :if (\$Result->\"decryption-failures\" = 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Success!\");\r\ + \n :set DecryptionFailed false;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \$RmFile \$CertFileName;\r\ + \n\r\ + \n :if (\$DecryptionFailed = true) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Decryption failed for certi\ + ficate file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n\r\ + \n :foreach CertInChain in=[ /certificate/find where common-name!=\ + \$CertName !private-key \\\r\ + \n name~(\"^\" . [ \$EscapeForRegEx \$CertFileName ] . \"_[0-9]\ + +\\\$\") \\\r\ + \n !(subject-alt-name~(\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRe\ + gEx \$CertName ] . \"(\\\\W|\\\$)\")) \\\r\ + \n !(common-name=[]) ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$CertInChain common-\ + name ];\r\ + \n }\r\ + \n\r\ + \n :return true;\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not download certificate \ + file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FormatInfo do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global FormatLine;\r\ + \n :global FormatMultiLines;\r\ + \n :global IfThenElse;\r\ + \n\r\ + \n :local FormatExpire do={\r\ + \n :global CharacterReplace;\r\ + \n :return [ \$CharacterReplace [ \$CharacterReplace [ :tostr \$1 ] \ + \"w\" \"w \" ] \"d\" \"d \" ];\r\ + \n }\r\ + \n\r\ + \n :local FormatCertChain do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :typeof (\$CertVal->\"issuer\") ] = \"nothing\") do={\r\ + \n :return \"self-signed\";\r\ + \n }\r\ + \n\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=5 do={\r\ + \n :set Return (\$Return . [ \$ParseKeyValueStore (\$CertVal->\"iss\ + uer\") ]->\"CN\");\r\ + \n :if ([ :len [ /certificate/builtin/find where skid=(\$CertVal->\ + \"akid\") ] ] > 0) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :do {\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\ + \"akid\") ] ];\r\ + \n } on-error={\r\ + \n :return (\$Return . \" (possibly incomplete!)\");\r\ + \n }\r\ + \n :if ((\$CertVal->\"akid\") = \"\" || (\$CertVal->\"akid\") = (\$\ + CertVal->\"skid\")) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :set Return (\$Return . \" -> \");\r\ + \n }\r\ + \n :return (\$Return . \"...\");\r\ + \n }\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Name\" (\$CertVal->\"name\") ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"common-name\") ] > 0) ([ \$Fo\ + rmatLine \"CommonName\" (\$CertVal->\"common-name\") ] . \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"subject-alt-name\") ] > 0) ([\ + \_\$FormatMultiLines \"SubjectAltNames\" (\$CertVal->\"subject-alt-name\")\ + \_] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Private key\" [ \$IfThenElse ((\$CertVal->\"priva\ + te-key\") = true) \"available\" \"missing\" ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \"Fingerprint\" (\$CertVal->\"fingerprint\") ] . \"\ + \\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"ca\") ] > 0) [ \$FormatLine \ + \"Issuer\" (\$CertVal->\"ca\") ] [ \$FormatLine \"Issuer chain\" [ \$Forma\ + tCertChain \$Cert ] ] ] . \"\\n\" . \\\r\ + \n \"Validity:\\n\" . \\\r\ + \n [ \$FormatLine \" days\" (\$CertVal->\"days-valid\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" from\" (\$CertVal->\"invalid-before\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" to\" (\$CertVal->\"invalid-after\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" time left\" [ \$IfThenElse ((\$CertVal->\"exp\ + ired\") = true) \"expired\" [ \$FormatExpire (\$CertVal->\"expires-after\"\ + ) ] ] ]);\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n# \$WaitFullyConnected;\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !ca !scep-url expi\ + res-after<\$CertRenewTime ] do={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n :local LastName;\r\ + \n :local FetchName;\r\ + \n\r\ + \n :do {\r\ + \n :if ([ :len \$CertRenewUrl ] = 0) do={\r\ + \n \$LogPrint info \$ScriptName (\"No CertRenewUrl given.\");\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Attempting to renew certificate '\ + \" . (\$CertVal->\"name\") . \"'.\");\r\ + \n\r\ + \n :local ImportSuccess false;\r\ + \n :if ([ :len (\$CertVal->\"common-name\") ] > 0) do={\r\ + \n :set LastName (\$CertVal->\"common-name\");\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$ScriptN\ + ame \$LastName \$FetchName ];\r\ + \n }\r\ + \n :foreach SAN in=(\$CertVal->\"subject-alt-name\") do={\r\ + \n :if (\$ImportSuccess = false) do={\r\ + \n :set LastName [ :pick \$SAN ([ :find \$SAN \":\" ] + 1) [ :len\ + \_\$SAN ] ];\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scrip\ + tName \$LastName \$FetchName ];\r\ + \n :if (\$ImportSuccess = false && [ :pick \$LastName 0 2 ] = \"*\ + .\") do={\r\ + \n :set FetchName (\"star.\" . [ :pick \$LastName 2 [ :len \$La\ + stName ] ]);\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scr\ + iptName \$LastName \$FetchName ];\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$ImportSuccess = false) do={ :error false; }\r\ + \n\r\ + \n :if ([ :len (\$CertVal->\"fingerprint\") ] > 0 && \$CertVal->\"fin\ + gerprint\" != [ /certificate/get \$Cert fingerprint ]) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was updated in place.\");\r\ + \n :set CertVal [ /certificate/get \$Cert ];\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was not updated, but replaced.\");\r\ + \n\r\ + \n :local CertNew [ /certificate/find where name~(\"^\" . [ \$Escap\ + eForRegEx [ \$UrlEncode \$FetchName ] ] . \"\\\\.(p12|pem)_[0-9]+\\\$\") \ + \\\r\ + \n (common-name=(\$CertVal->\"common-name\") or subject-alt-name~\ + (\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRegEx \$LastName ] . \"(\\\\W|\\\$)\ + \")) \\\r\ + \n fingerprint!=[ :tostr (\$CertVal->\"fingerprint\") ] ];\r\ + \n :local CertNewVal [ /certificate/get \$CertNew ];\r\ + \n\r\ + \n :if ((\$CertVal->\"expires-after\") > (\$CertNewVal->\"expires-a\ + fter\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate is newer th\ + an the new one. Aborting renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ((\$CertVal->\"private-key\") = true && (\$CertVal->\"privat\ + e-key\") != (\$CertNewVal->\"private-key\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate '\" . (\$Ce\ + rtVal->\"name\") . \"' has a private key, new certificate does not. Aborti\ + ng renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable ([ \$ParseKeyValueStore (\$CertNew\ + Val->\"issuer\") ]->\"CN\") \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"The certificate chain is no\ + t available!\");\r\ + \n }\r\ + \n\r\ + \n /ip/service/set certificate=(\$CertNewVal->\"name\") [ find wher\ + e certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/ipsec/identity/set certificate=(\$CertNewVal->\"name\") [ fi\ + nd where certificate=(\$CertVal->\"name\") ];\r\ + \n /ip/ipsec/identity/set remote-certificate=(\$CertNewVal->\"name\ + \") [ find where remote-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/hotspot/profile/set ssl-certificate=(\$CertNewVal->\"name\")\ + \_[ find where ssl-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /certificate/remove \$Cert;\r\ + \n /certificate/set \$CertNew name=(\$CertVal->\"name\");\r\ + \n :set Cert \$CertNew;\r\ + \n :set CertVal [ /certificate/get \$CertNew ];\r\ + \n }\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; silent=true; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen\" ] . \"C\ + ertificate renewed: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" has been renewe\ + d.\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' has been renewed.\");\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not renew certificate '\" .\ + \_(\$CertVal->\"name\") . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !scep-url !(expire\ + s-after=[]) \\\r\ + \n expires-after<\$CertWarnTime !(fingerprint=[]) ] do\ + ={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/scep-server/find where ca-cert=(\$CertVal\ + ->\"ca\") ] ] > 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . (\$CertVal->\"n\ + ame\") . \"' is handled by SCEP, skipping.\");\r\ + \n } else={\r\ + \n :local State [ \$IfThenElse ((\$CertVal->\"expired\") = true) \"ex\ + pired\" \"is about to expire\" ];\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen,warning-s\ + ign\" ] . \"Certificate warning: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" \" . \$State . \ + \".\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' \" . \$State . \\\r\ + \n \", it is invalid after \" . (\$CertVal->\"invalid-after\") . \ + \".\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\ + \n# RouterOS script: AM-GlobalConfig\ + \n# Script comment: Global Config Script\ + \n# Copyright (c) 2007-2026 Vados \ + \n#\ + \n#\ + \n# Warning: Dont touch this line!\ + \n:global GlobalConfReady false;\ + \n#\ + \n#\ + \n# Global Url For Amster scripts to fetch\ + \n# most be defined in AM-Init-Script or AM-setup scripts\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global ScriptsUrlSuffix \"\";\ + \n:global CheckSumsVerify true;\ + \n\ + \n:global ScriptUpdatesCRLF true;\ + \n:global CommentsInScripts true;\ + \n\ + \n# Debug output:\ + \n:global PrintDebug true; #false;\ + \n\ + \n# Debug output for specific script:\ + \n:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\ + \n\ + \n# Debug logs\ + \n# Other actions (disk, email, remote or support) can be used as well.\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\ + \n#/system/logging/add topics=script,debug action=memory;\ + \n\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\ + \n:global Domain \"WORKGROUP\";\ + \n\ + \n:global EmailGeneralTo \"vados@vados.ru\";\ + \n#:global EmailGeneralCc \"\";\ + \n\ + \n# \$ScriptInstallUpdate mod/notification-telegram\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\ + \n# Use this to send notifications to a specific topic in group.\ + \n#:global TelegramThreadId \"30\";\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\ + \n# or user names. Groups allow to chat with devices simultaneously.\ + \n:global TelegramChatIdsTrusted {\ + \n \"454403445\"\ + \n \"-1003631309063\"\ + \n \"-5124482807\"\ + \n \"1087968824\";\ + \n};\ + \n# \"-5294757340\";\ + \n\ + \n:global TelegramChatGroups \"(all)\";\ + \n#:global TelegramChatGroups \"(all|home|office)\";\ + \n\ + \n:global NotificationFunctions {\ + \n \"email\"\ + \n \"telegram\";\ + \n};\ + \n# Toggle this to disable symbols in notifications.\ + \n:global NotificationsWithSymbols true;\ + \n:global TerminalColorOutput true;\ + \n\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\ + \n\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\ + \n:global updateChannel \"stable\";\ + \n\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\");\ + \n:global CertRenewTime 2w;\ + \n:global CertRenewPass {\ + \n \"\";\ + \n# \"v3ry-s3cr3t\";\ + \n# \"4n0th3r-s3cr3t\";\ + \n};\ + \n:global CertWarnTime 1w;\ + \n:global CertIssuedExportPass {\ + \n \"\";\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\ + \n};\ + \n\ + \n# Script BackupAndUpdate mode, possible values: backup,\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\ + \n# osnotify - Set `forceBackup` to always create backups on every run\ + \n:global DevInfoIncludeIP true;\ + \n:global BackupAndUpdateMode \"osnotify\"\ + \n\ + \n:global forceBackup true;\ + \n:global BackupPassword \"Peskar55\";\ + \n\ + \n# SFTP Backup Variables\ + \n:global BackupRandomDelay 0;\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\ + \n:global BackupUploadUser \$Identity;\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\ + \n\ + \n:global BackupSendBinary true;\ + \n:global BackupSendExport true;\ + \n:global BackupSendGlobalConfig true;\ + \n:global BackupSendScripts true;\ + \n\ + \n# Remove local file after uploading if no errors\ + \n:global BackupRmLocal true;\ + \n\ + \n# Local Backups Root Directory \ + \n:global BackupLocalRoot \"tmpfs\";\ + \n\ + \n# Encrypt Backup\ + \n:global BackupEncrypt true;\ + \n\ + \n# Sensitive information in Backups\ + \n:global BackupSens true;\ + \n\ + \n# User Export\ + \n:global BackupUser true;\ + \n\ + \n# License Export (not for CHR, will silently skip)\ + \n:global BackupLicense false;\ + \n\ + \n# SSH Keys\ + \n:global BackupSshKeys true;\ + \n\ + \n# Certificate Export\ + \n:global BackupCerts true;\ + \n\ + \n# Certificate Password\ + \n:global BackupCertsPasswd \"\";\ + \n\ + \n# User-Manager Export\ + \n:global BackupUserMan false;\ + \n\ + \n# The Dude Export\ + \n:global BackupDude false;\ + \n\ + \n# User Files to export, comma-separated string or array of strings\ + \n# User Files are not removed on backup\ + \n# Any directory paths will be removed (/ -> _) on remote file\ + \n# Nonpresent files are silently skipped\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\ + \n\ + \n# load functions and any custom scripts\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\ + \n#\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \n# :onerror Err {\ + \n# /system/script/run \$Script;\ + \n# } do={\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\ + \n# }\ + \n#}\ + \n#:log info \"\\ndevMode = \$devMode\";\ + \n#:log info \"\\ndevRunning = \$devRunning\";\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\ + \n :onerror Err {\ + \n /system/script/run \$Script;\ + \n } do={\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\ + \n }\ + \n}\ + \n\ + \n# signal we are ready\ + \n:set GlobalConfReady true;\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\ + \n" +add comment="Renew locally issued certificates" dont-require-permissions=no \ + name=AM-CertsRenew owner=AM-CertsRenew policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CertsRenew\r\ + \n# Script comment: Renew locally issued certificates\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global CertIssuedExportPass;\r\ + \n\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global ScriptLock;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Update Local Issued Certificates.\"\ + ;\r\ + \n#/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=st\ + artup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where issued expires-after<3w ] d\ + o={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n /certificate/issued-revoke \$Cert;\r\ + \n /certificate/set name=(\$CertVal->\"name\" . \"-revoked-\" . [ /syst\ + em/clock/get date ]) \$Cert;\r\ + \n /certificate/add name=(\$CertVal->\"name\") common-name=(\$CertVal->\ + \"common-name\") \\\r\ + \n key-usage=(\$CertVal->\"key-usage\") subject-alt-name=(\$CertVal\ + ->\"subject-alt-name\");\r\ + \n /certificate/sign (\$CertVal->\"name\") ca=(\$CertVal->\"ca\");\r\ + \n :if ([ :typeof (\$CertIssuedExportPass->(\$CertVal->\"common-name\")\ + ) ] = \"str\") do={\r\ + \n :if ([ \$MkDir \"cert-issued\" ] = true) do={\r\ + \n /certificate/export-certificate (\$CertVal->\"name\") type=pkcs1\ + 2 \\\r\ + \n file-name=(\"cert-issued/\" . \$CertVal->\"common-name\") \\\ + \r\ + \n export-passphrase=(\$CertIssuedExportPass->(\$CertVal->\"com\ + mon-name\"));\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\"\ + \_. \$CertVal->\"common-name\" . \\\r\ + \n \"', exported to 'cert-issued/\" . \$CertVal->\"common-name\" \ + . \".p12'.\");\r\ + \n } else={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed creating directory, no\ + t exporting certificate.\");\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\" .\ + \_\$CertVal->\"common-name\" . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store=fetch +/disk settings +set auto-media-interface=lo default-mount-point-template=usb1 +/ip smb +set comment=MikroVados domain=WORKGROUP enabled=yes interfaces=Bridge-LAN +/interface bridge port +add bridge=Bridge-LAN ingress-filtering=no interface=ether2 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=LEN ingress-filtering=no interface=ether3 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=NUC ingress-filtering=no interface=ether4 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN ingress-filtering=no interface=ether5 \ + internal-path-cost=10 path-cost=10 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set disable-ipv6=yes max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add comment=WAN interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi cap +set caps-man-addresses=10.30.30.10 certificate=request discovery-interfaces=\ + wlan1,wlan2 lock-to-caps-man=no slaves-static=no +/interface wifi capsman +set package-path="" require-peer-certificate=no upgrade-policy=none +/interface wifi provisioning +add action=create-dynamic-enabled disabled=no master-configuration=2G-N \ + name-format=2G-%I slave-configurations=2G-G supported-bands=\ + 2ghz-n,2ghz-g,2ghz-g +add action=create-dynamic-enabled disabled=no master-configuration=5G-AC \ + name-format=5G-%I supported-bands=5ghz-ac,5ghz-ac +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/interface wireless sniffer +set file-name=24g +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name="ether1 - Unet" \ + use-peer-dns=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=1:20:72:a9:d3:34:36 dhcp-option=HostName \ + dhcp-option-set=MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP \ + use-src-mac=yes +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +add address=10.30.30.86 dhcp-option=HostName dhcp-option-set=MikroYellow \ + mac-address=48:8F:5A:8E:1A:C2 server=masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=git.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=ros.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=2606:4700:4700::1111 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +add address=2606:4700:4700::1001 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=amster-nuc disabled=yes list=NoWG +add address=10.30.30.11 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.95 comment=NUC list=NoWG +add address=glb.tas02.cws-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.cws.update.microsoft.com list=windowsupdateslist +add address=glb.cwsapp.prod.dcat.dsp.trafficmanager.net. comment=\ + glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas01.cwsapp.update.microsoft.com list=windowsupdateslist +add address=disc601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface="ether1 - Unet" protocol=tcp src-address-list=\ + !TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid disabled=yes +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +add action=fasttrack-connection chain=forward comment=\ + "FastTrack main traffic" connection-state=established,related disabled=\ + yes +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 dst-address-list=YouTube new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address=\ + !10.30.30.0/24 dst-address-list=facebook new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=dst-nat chain=dstnat comment=npm disabled=yes dst-port=81 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=80 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=udp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=tcp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=udp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com log=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot walled-garden +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=yes distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +add action=add-src-to-address-list address-list=bad_ipv6 \ + address-list-timeout=none-dynamic chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked in-interface=WG in-interface-list=WAN \ + src-address-list="" +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +add action=accept chain=forward comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/ppp secret +add local-address=192.168.60.1 name=vados remote-address=192.168.60.2 \ + service=l2tp +/routing bfd configuration +add disabled=no +/snmp +set contact=@AmsterNL enabled=yes engine-id-suffix=MikroMaster location=NL \ + src-address=10.30.30.81 trap-interfaces=Bridge-LAN,WG trap-target=\ + 10.30.30.10 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Windows Update script" interval=2d5m name=WU-script-run-schedule \ + on-event=WU-add-to-list policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2014-02-11 start-time=00:00:00 +add comment="Backup Every Week" disabled=yes interval=1w name=BackupEveryWeek \ + on-event=BackupAndUpdate policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-07-07 start-time=03:41:27 +add comment="DoH Cache Flush" interval=1d name="DNS Cache Flush" on-event=\ + DNS_Flush_Cache policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2019-12-06 start-time=05:30:00 +add comment="Create mkdir function on startup" name=\ + create_mkdir_function_on_startup on-event=\ + "/system script run create_mkdir_function;" policy=read,write,policy,test \ + start-time=startup +add comment="Scheduler for Update Certificates CloudFlare Quad9" interval=1w \ + name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Scheduler for Amster-Backup-UpdateEmail" disabled=yes interval=\ + 1w name=Amster-Backup-UpdateEmail on-event=\ + "/system/script { run Amster-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-02-13 start-time=03:41:27 +add comment="Setup Global Environment for scripts" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Renew Certificates" interval=1d name=\ + AM-CheckCerts on-event="/system/script/run AM-CheckCerts;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Auto-update Cloudflare Root CA for DoH" interval=2w name=\ + AM-DOHCert on-event="/import AM-DOHCert.rsc" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-04-15 start-time=03:00:00 +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260421/20260421200002-Diff-Config.rsc b/MikroMaster/history/20260421/20260421200002-Diff-Config.rsc new file mode 100644 index 0000000..5ba4120 --- /dev/null +++ b/MikroMaster/history/20260421/20260421200002-Diff-Config.rsc @@ -0,0 +1,7 @@ +4195,4196c4195,4197 +< dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ +< new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +--- +> disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina \ +> log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +> src-address-list=!NoWG -- 2.52.0