From dbb58938e2e2e02e4ba99dc9946e4f2da6e55d9c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 00:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 00:40:18. --- .../20260512/20260512004001-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512004001-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512004001-Diff-Config.rsc | 18 + 3 files changed, 4671 insertions(+) create mode 100644 MikroMaster/20260512/20260512004001-Binary.backup create mode 100644 MikroMaster/20260512/20260512004001-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512004001-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512004001-Binary.backup b/MikroMaster/20260512/20260512004001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..7ca6e692a585d2bec3ae463af49fffb17a863b32 GIT binary patch literal 302647 zcmV+aKLEh*sF8Cwo&*3~VYR#%&i9sns~zz^=yrkt000O80004Z`SAPzLud$jANS^E zW0()DKYCY%Zj-{REqUzaPOKL?iAgWakg=FI)it2>29ychMew~}1{%JXAo!eA>xAeH zVHpv+h5NgwGYIBLI;D?OuUAYf9D?EO3i*sN1St@6$&n_5Xz@j~>!WP26s1FcSqt$xt>|P1eI4qU6hwv$~G1)0uDv zC2lj8L)^3Nn5;3E69@VN4Zi3Ia`t-?f4)jVk2#BRo=!Z6KwE6s)FHfwWP>|agO2g0 z9RcjGlhcPjO2~yAgW1XnFz8>y>v_|C*#quC6;}>6P>HKI2u*$6w&R>bXWFyNO)!UgS ~6ijN+mrb%Zvx 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 uMKJOz3`S%#*O7w#fmc>mD08JX;r#XaYm6 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

!s{{uA)H=@03K$&!ooFIa-bV0;k`OavGr z(X~)2B&^X2>ew`i$#p%ouYSrJf?J%}J}0kVHwz-?Fii`Tfk|;As$i4u z`tdFJnRZ60{;BI0F6Cg%ZG(iLT=VT=%L2*F zCA#JLfrRSpuX7}F4ixD--TA!@6O@f!i~LMYSt@pScL!41!2}O3a^&9?;X?~4 zphDE$D5^h`s`>tP%TzJc-Pm|yh+1zd?rQe}B}uD)@?+PlhGgRBJVs{%%)y_&Ly32F%)Zm9#?Vi!`Yla>*sYF6hS=fx3_=NDYDQtZTC7be)nlBvFP4gj{eA7ePKW32j(tJ^1mBgb?8` zxXZCgMUY0@Pz|+cLAaV&@3Pme4K+Bhrw2+XembuCN#z~QxV=S**yw$c{*-U3PdLLC zO-4+%*LUa3JO!+A;`=P)Uf7Y-sNbR2Vv#-tMG7fwD{^4m_I8aL&gK_fEsQ0m9Az_43 zkDF10PdHhA)G@qV*4S<~da*kvD^GD7#R@kJpZ0tBwVQqZA#EZzMF>g z2HKi-xDkCgR{B~%lj@nE??%a+6#3w;GRwP=)dp(+*yJ)vD5Q~_xxMy46~_(*(fm35 zv{-F$2~%VEeOShh*@*N;V%dfKF6XY;&nR3$6(dQ(Gn(v3nC76=nm;=FoN>VhHtrn_ z#|LMR25_|<*tj;G9P-O1ELz~H$>%fqWcNHWenRQ7iaQddi7MmZZ{<@1>== zPxxV{78a_}^!;><%U9&DPY1XTy26a@IvSmg9+d|*#PkQn3&oEmTD`sudJ`}$Yl@zCIJ>{qp7Cd0MK6K; zCg!W9YYO{ntp$Ku;NB&? zM*#W+{raf+Df}u z;Y}*NNlZ9nG0-rt7kPa%7F}``zNL8|yNm%I)E}k_tE`eE43B92A5t$GLZqr74}B6Z zbY~*pFm#6b*?V5=QQ}FmQPj_O;h#{;C*>}tebVC7UtAO8764B>w_)plD_ISC5U4az zl*&lkKUEd$#ADE@2)~?KvhjT;dTYUw1=Ov4K(QHZYe4Sh-trhn4H7AJ)A=^ zh-|>X8%68Z$>W=mM8LdS$Z0R9!GxR)I=h&>gpS{6?b=lU!@HL|t+)eTn8VTH^g79K zGc6tzkKFY&zr1o~Til(o?*o6S4O#BMsWhxoQMH4v&DPw})nGbb3&%d@-*E8L_m5eE zXUw5Ucc~ovI=si^KEb+iX(=BBgB7VdZ`>!p%m(Qg8mN`Y z_pcz{Y;@b?9`Mj!j)1!cU%U4mCT=F+65({V>H*w4@)k7b8kJ;|L8_t-gZ|-$766Az zXRM*8xS5p{{U6gWK!+f{1rhHfIut@)neIy$KxPD5#?Sd(~NdJTPGhbbG4B^ z(#Ec>_y~$;Hf6O1UW~QFx4DrwUS&d8w~}k2I<4d+C2;SvQcjyV1iHUQT*r+OP0frc z{3!ia0TFNXE9dhE7%Mzt$a9g3Lo8Fd8u5t3qXttHPdmtvL)12uo#j=635O~q)e>xl zcdvF!xa9HH+gkR4(~1q<4-EWSIbn={A}d4ELFY=YZNXWy_`K;Q<(+JLyV-{r!f6ll z=YLCJEjYX5a6DZnrmZaYJ~2$Dhqs%I^GtNP?QHp9$UOZh z45clt!%{ImL@;O>T2Q9`XFOP8%I_Phf{YRhVtfzQ_#^%QKTXTOff+{`b2qN)3ZaLK ziCS*$>l+_?&F{>>!d?70L9nT_5J@rq504^eVi&<~FPa{!wygp2h2y!y3G$id>CXm|s1&?ax+3W$^IGc`h;GYUSw7T;?Ys z2g{_adBol~EKzM;>BQGGH=qqd446isN2xG3CvS|lrY=?PVE%MGBk||}SOG{6G)UyR zl)~qD0LO1E!~GBQ$MC4?%|^Y1$U?)m0e8E0Z0l#NpsU(D{3=#FedZzUh3waE|B%~D z?cHbfdD_Q-0G9yC@(!zstn*Dm@3M?lo^XlQfPFIZU_5=q_8$bhUxO>CG&Bo!)WvXA z%8)*8z7Q+qm=hL$rfU7b%uefS+Su)^Bh=%@nPVJDv%8s?_nd$yj)%M2jc8Lk2O`cV z^9Yl!srltVAH0A{ver8EkYVP7g1LS_uY`7sRxR2r;RY?CGbaUj!*%7!0!frI%&!`| z(832oFrnVKnIum{Xa$4-slbaB-HfJS_LyvaGHsI5s~-SX4P2+A(cN@rwjojN`~i`m zW89eG##-dX*lxYS6Ov28=`^wBfjm6mO^@p6P*2<@W)5CtAp2jOJ$NyEG;rj zlS?*U%w4PNP7rd$_G#1}*(B^2i4NXPxSP9)W2nIq`+Gg;1qXS~Tm!73 zvhn5b6X|9DK%HOxyRhn1f~D{F9r}TC;=58$6udB&+kk1#-E?Y+GOq!Q@_+OK$yBqF z3AKF}b1u+;`xWw7r7Em&V)|)&E6eDJ2sX58Ga0N&?+-X+hB^g(J(cs6GB7J2wDicl z-8lPPENf}~RnH%luVg~-3D!V9|4c3&!16-ZzwHBy5(d(^UTQ&0vP&Hl-r)pY#>l1Y5B)!Pu-I* z49b+n3#2vQuzcWFrl(*sImEF|HZ?kVg&5s`)VN7vNIQsQOsh6BPYXMoXRFVkic{&) zV-6xhkg-==7z;dS;P5B1H9_kAwE`zv^jtQVsl0sj${dt$7s`@6aNM!@0o^a9z3o6V zh=2XK`v5uDo6&z*$P3-oD|tRdqe^v`Se9phYw2DPn2R_OvkIzt*X|5;>eL2^=D?Zr zq>T}k0ai%Hg-xOIw)IKvzmZmvT11^=8lmKlWG?I-Fl8q|i{vUkd?|zyLe8IO)Q`Da zH6FIM=!~Zv8yN>S z)@_LZeU6(a8)dHs1kI}mL0qEy=@F~ilVOo_Yg<}wpyyJ^cz$s*g$;wnlEN=hl|Arj zKSBMV1@`ls72YK`MJ0Z<4(s$yuq7!hOzrV*Q#(2b33g?+x%a{dU8r2V0>#Cg%?H8b zEw09@Zk>Uy=8KrbdE6X}?VTGy>b(DckPMlM+*2?DCGK?$;mYjlgKL&erUN!%-|z4! zyU#%q5t!B3;kL76Txdx;>p6Et}URRx>4*B4UE95fE$f*!rd*itV>6`PQlSYKCpg>BX!~z3F<|;r@47)+LB>z zir<{n1;79wxBXE0GhEFb{Hw35;lwi)*V9J0XqlIJZ0e0GS+D&9OTESmVyZm!+a%2f z7J`@gZcC|%UwO1JyCKtqi=19usiE3-e^)~~Q&4U#Ul4-^PRcX^q&+O^S2PBcH+-Mg zqyzw9W^B27#+3e3hvx3hq;wu^eEiYROCpckqSl1XqhITbwL-GiW4`w9U=0lOvK- zA$4ryv{|&57By0C1RHY4*(SGGDQ`tSmb|!stVp<$;u9qJC471qKQh6=uXSr|q&LbC z5K(*eg`#S3r$-%_q)EXQb@=QpwOn2I=ah$$_>$Vu$3qmNEJye|!Q8R2t;OnV)d_^q zUpMZo++{4UTaAYBQ>t~cxV2{wln7(6h%)&_F{!BJs8=zI5Nt_S$bG$Sbt-P5`y>3( zDalMIda)Mc8#x9t%);9qDD9pqVc?Bapa`BH;^&-oC0ykI93`%>vSYJS&JC!lV&m{~ z8na2BCb~Ltd`WfaDl^&(U0Y_KXehfMpIcq6*f!&sD;u~<07z%c*hu zt}Z9Y4ogUd9?B|s2W3?QT+m-t`%bTnf}4QdOdU&$`mFxT)d)3!YqD}{&@WU9VcFo> zl>~(pIf15rw;7Pv+#iRCun919%BL+_&C@->M?qcZ0uv3a8MEYWHK?J~hJ3;kzfyZ2 zc;!D+y3nj}Q%8TDj?R(BQ`p}1w)qh}mRlp<9oARr7y5wqOgI{?*DnbrHnYOxjnOY8nuu7ic5{okL;p6ddw8- zEvGNxI1^}+_=@PMKYn;S;rs4K2LiUHK#zhDe>9My_8mz{5+lYdy`YnJi*2csh@i?t zV%8yONvqlm2WG;GBpWR0{@tEjz=P}$!hq8;IAORi9iGrrxmf>F3MIJMRJ7cbV3uQxr+O(8o-GWRIa1(%wbR{jVFxXC$ zxCiB%mwXbrHj$5i$#D4LUK6eUM^k>-1TIH-+R4D}JD{JhtYM+(99r#@wO&-bVx{T> zOZegQSh6MMYB)*|3~7nESQuU+L*;Zev9~#9kLWOpoi$)?4lN@duG7}_xyb2H4u^YO zaHIT^4cK>BP^Am<{9*I#q01OBfn7F?Kyao)dpzz{s<4yRFfHJ(;h0fEyD(vL1_1iPTCB=bi?Q!S8 zJb79X>}NB3VyiXCy&NN|iFu(gCak z7BC`|#CA`<&cZWb-1@CjcMFYd+)gui1FFYoe;?Zjeyf%=f=U_aRbEFJ@LD3S zCGG3(&ts)RIpb7Z`d!fKO;0>WTZG8DFOV-U;(DU4?yT!l1c=(UE`!?>z!N6O%EUT> ze;8A=uWU*(NU!L4Q4qQdm&~+@K?El)qpN{Yp?aYZF;s0`5>{U;*iQz^G;M&~zk0JbLBl0$l&+s|6F9 zj(C-y3<}s~i5*(PAeyQ$)K;e-{ri%OH=AH~(cAU{?gwoYQE5v&+ zh!sA$(Us|%`H5oZZ|897GTq0ov9xIgz_uTSu`NdEm^fPXcZSy8-j5Ezx{pjrUB=~$2~(l_ii`FZk1{ED{f<%p#964scK5RaLRa# z7)PiN!ialv2l7w_DR-o|+A=>GK9?Fsn!Bpi0iILGF4POvbAxbzcVJ~u=^VH;kIyXe z0I<4(t(O|#n;74~d!1SkZD;`3w((`A(NsoeltS8!-bnTTGvmrhWHv1gc0q99Jq>RB z(S0UNjo}oD8TS_VlDLI|E5kqBPuY31zHD8(X8|VW_0R$M$=AE?upwF93VXI=(o`gc8G)|eKm|xPJj#sI zQq;Qp?|F|(mkkn{=#tG$3?wg4RdSz`%J!5C-Oc(~|AaZ_ssHFL?(#TgjnUdsaz$6a zIjnR8Yj3JwCCWH-=wKvQQ8yB-34T*tu%76TQMzQ%!k9!H3l0LL83eA~R6m<6X`Sc*s+D9?&@590Mmd zb+5}-K!w$3w$_CqBz&7 zCzL4U0DTpqIm5wfX8{{UD7B6BR2k;J zz?f_UpeUuag6m_s0Nl=PsoJ2b(|x2j!(z}(*s4t-Yqb$nED)kHaFTVBHT$wTuGvJ( z3WUn#h&BXMA?V9W)mN3AZG&ABK&HX$mNINsB9Y$rVqLU#>-XfK{%tM_>}%5-hg(-t zM>?Z$j_tEfz?yJ^CNpO7Dy2L$&6a5Z%_C)T{lx;!FIIjMP)tY)l!3yeo z4r=8Jh#1@8du4Wytgox)u!j*i+Lp(|R<`~z-Rt$dE?e&2`;`BlP-!JOOw-$^b109e zsH^oRsVN+?hAn`CE2szVJZ(jia8~oUM(21dTFa#UHdB)Jk&C=PT{b~f zW{X)VU(NT~y>bh0rTrac*zK&v0W@2B0Dw?1dlJU6R=tW9)ZirPR{4M?9g=1lQWDBX z-WgfIlGDz%hlI?V(cSW_EJf@n{l4rA&N3@3%d9)@4qE$<$fnRrjD{<`>3U;;96FH_ z(vB0v?1c4Nf0Y{EL+Lj|MDbnI-C19llPT|Z-&k{U@NL|B<=^nVuPB{NZwC$SBpTqP zxASHN&(m%xC$nc#I)%AZf%@k6Y7K`^?Uu1uCQ2evPbXFOmJHP^++%it!gf~GydMGy zDGBT>=f~+kbMEz>+kg9(nE%`K3qDQ|7+zT}OUY{Q${MAkg6<3ceCvsYw-@@ zmqQ`>KswAR{x^}<9kZ`zzbdts(nnwE6tmh2eQfa{sLd+phE`t}mx!lirfq^dTMIv$ D&tN4& literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512004001-Config.rsc b/MikroMaster/20260512/20260512004001-Config.rsc new file mode 100644 index 0000000..6d90620 --- /dev/null +++ b/MikroMaster/20260512/20260512004001-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 00:40:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \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\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \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\";\ + \n#:local Script AM-GlobalConfig;\ + \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\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-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/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\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#/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\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 comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\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# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\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 /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\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 :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\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\"; \"mod/AM-\ + Certs-By-Ident\" } 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 /system/script run \$Script;\r\ + \n :delay 2s;\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 :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\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/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\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 MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\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 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 GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\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 ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\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 updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$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 :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\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 :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$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\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\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\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:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\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:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$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={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$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={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\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\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\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 :log 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 :log 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 :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log 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 :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\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 ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$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=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$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 :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' 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 :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 :log 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 FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\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 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 [ :le\ + n \$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 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 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\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 :if (\$ExitOK = \"false\") do={\r\ + \n :log 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 ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\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 :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\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={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :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 :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\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 :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\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\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 :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log 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 :log 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 :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log 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 :log 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 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 VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log 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 :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 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\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\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\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 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 :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\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 :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', 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\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\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\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\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 :log 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\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\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\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\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\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:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\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\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\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\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 \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\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 (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\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={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\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 \"Every Day Set Global Environment Variables\";\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: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:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\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 GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\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 :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/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="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set 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 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 configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s 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-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/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 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/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.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 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.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 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=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +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 +/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.4.4,8.8.8.8 +/ip dns static +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.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc 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=reg.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=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.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" 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=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/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=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 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=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=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/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-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +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-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +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-list=WAN 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-list=WAN protocol=udp \ + src-address-list=!TRUSTED +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-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +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=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +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 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=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 +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 +/ip firewall mangle +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 \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram 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-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-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-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=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/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" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +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 +/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=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +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 +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 user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +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=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy 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 disabled=yes +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 +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/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 note +set show-at-login=no +/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 package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + 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="Every Day Set Global Environment Variables" 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="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/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/20260512/20260512004001-Diff-Config.rsc b/MikroMaster/history/20260512/20260512004001-Diff-Config.rsc new file mode 100644 index 0000000..fc43c4c --- /dev/null +++ b/MikroMaster/history/20260512/20260512004001-Diff-Config.rsc @@ -0,0 +1,18 @@ +4301d4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4302a4302 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4306,4307c4306,4307 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +--- +> add address=104.20.28.254 comment=dou.ua list=FuckRKN +> add address=172.66.164.200 comment=dou.ua list=FuckRKN +4309d4308 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4311c4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0