From 9e80e2522226c1b6cdb2a073cb095fca21b97348 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 16:40:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 16:40:19. --- .../20260511/20260511164002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511164002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511164002-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260511/20260511164002-Binary.backup create mode 100644 MikroMaster/20260511/20260511164002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511164002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511164002-Binary.backup b/MikroMaster/20260511/20260511164002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..f24bd04ad2664e331e23d12a871ab9652bab69c8 GIT binary patch literal 302647 zcmV+aKLEh*sF8Cwo&*3d+h@5LIeV@Ue}zgM^REm5000O80004Z`SAPzLud#sM5qG< zcE9g}fbkQ6O#SL&RaU2K(y8@K+)FHHHi&dc+9~&~^p=k%42rPJ@FjC_&5Ge^cR@ zD_JjG7>jg}F?6x^TCPviDHo~RY{Uw-GnQ#uYX**wt!v`tw<2rXKLSrA@| zLpTMb#EO$y@C#&Sr0?e_gFZEAS|G8gq87>x03a82HeC?vp#R}yka8GG*di0kR>NQN z%jx6^DQjE=hu~Ehwv~r5We5eKoPN14b=3WD1w089_FF`}!Z@UAVt;e$bpYf)!zYZ4 zA;INx7Y?h6Om6XDv^%g1Ou#Oyk13FwAnAGIxoAn6~EOFc%e#c_zuajT?*pSvJOF z9j-lXl!XQI0UWzJd(4Zw<#ed(cRa7wj3CPnW{Y8}zGS`TRPp5JB6LIS2Le!7z zILNdaV?MuN3gpW@rvbwFKC=9UfX80^rgo3$$|k1lyWd>d`4(cY7~l5f-utM+WhM|= z$lB(sY$TZ+l2}U0B4o5`w=>K4Ks@h-uGa1AoE!MBk5}DxS5S^QQwPS{n25@c1B}QK zP7;KV2J_jO$MuXy^!P0!l*}MqkgrsPEZKu5*|&x?D2g%5m475EGRH=VL|wXfBzI~R96GX_jc@d(s9xuPtA~%Grj#|g*B6-!nl88V{W7q>O^cX zmJEa7X2y5pQav>3f?p5jA#>Va9Z+gU6{d?ECl+DmE5;3MAVM*^&TtJEJxFt$?3#6} z47=c~gu!Jq?ca8*81g%(k6*OIzt)bYx5yk60h4S_&5;6j$+pwRe)|mbj@C#@jiwJ# zaFsqm+ctffjf%$r>^AN42Hh*H_5-1YIICJ63hRXQ4!|C0!!|WDW5d-6QD0>L{JSbmHi$y*tSR5YY|CD^)5aW-~w(Sv-XkPL>-9* zg6rlXOyK$j?=>mKLi0Z~0?aiqnd2Q68OIg$7P0_R>{nh#r&_rP^P?vjMxU-5GAB_T zi2AMI1e;o=pO^BeVf!sB!#mU+$oJ&{loeKP>6>kwvD*2e*cYia7^g;M0c!%GN_GlE zb3trh{^n@XU65#NELqyR?nIp;!+H&kURcdRc1Sgb1WS%Mem`ba*~t0 zf&deS8>;wBFXR6Hq-a$Gg1W6(edcmA&XbkyJc)g}bZ{uc~6#Z9|p7^_~9(sJMy&&pC2*&(VRJ9+{ZEmAC59-io)F)-;@dqi68vTyd|Dj z-pE*HzU<7~MuiDdGVVGFDeEpR63B?Mm0G*Um3ky$UI$J3&L~>(%|0=j8^{jN2X$d_ zdj)AT!MAauPKnjxBo)54e41K^aH|E#^^pnQ7xF{7pE9X@o9!FsZs}u6w&xGYL2Nr$ z$9(`r(h2L%vMfsj@j3)&ci{G@W@&oe)fjV`4&t++!#)4JQoh_bqAB=p z?)7;EPa)XyTgGXZct+`|eheFXAO+vF0ws!O94D7BS3KFtA0=G5rWPjbS5TvO4(x9E z@$4G{ZK9#T7Z7gCa+!0)MwPyWsg$uGEZOy5DO z-}CLLiwrMIqg6tgXi^sDC;Lfgh(Z}3=_SVqk?b&zD7;5EE^|r_oF8Y2#X3CNZ(GaWzXLf5^RX1A1nCX=(LnqWs4?xF6C zbyec#=x!ve)(5HJrzy#SU5C0q$AI_XmYgQ{0nsj2Rth@|K0#oCEu@mQ82K^(EMYWj zY>`Iv#w-&vjyN_x(cPOcC37d^Zszy@{akwnZ;p(P{msu*DlaD&8cYu?GX;5V(%oNm z*{two$Hj;tESwC?*fdxy;<`NNZXo+~zvpu+$%gko;ieX&{|#*b!qBvG$lAK_4PSGE z9poB6flP5taP)83dxpntJOg6W2NIVBIwdd+bbXs!r?sYx#E4bi=nMZHT@y(mI%n6; z(-twF_^4qA$GF*y7S+FJhJm|^flmP28FgGKaGp4v({L_8s?}(hOx36?vGOrLxkl3a zpd>)@?&v~x%@W`pNAhun3f5Bdpvy~LAEoM?0{b`z>bhpS4w1yGG3siYMI#fNxT%eT zMp?)E6axO{&`>w-^Po4jaG83v8ju?Xi^Y5@MBX9u3OLqbO&6-ip-9Gg(Nv8Ml{4pc zj<2gTac)Pvdy;PO{%XA(S541;xI>w}s#)+jtgW42zCdQq@irh9Kszo`!Yr-TQ$`S{?vFkzX{b4W2iTJhmV%j{Rh*YkRU zr!&1R9S9a=R%--ntzv=laoXUAEhhtFaLF#%j!E+jM>qD*`rJ{Jc|m4C)ySMxIooer za{QOoT(+-Dze`8=w<`E3z2)PQ+*3aYl%;joins^BPhg30l-`UG@2Y<$O9X#P>+vLV z?196THZlONMzB9Ixfz^mkv4x-+uap?3GvYcbmyd>hFH6V|3-|${#+8kvg{jaz}sG? z8|LG1(Vuqs`4K#-B_d6@PLo!Ia1Belsd{~=hlQ@;fCZEL3VOUmFr3Z4{wECsICtrv=^ z+?A+9{BDNK^d&*#7af_26I=KFYo{48?|8WX&5;_nR||5PZxcknM_`Tli2i~*OA#oi ziW6W9sA|$sYU0T2M?r%ARBD2dj1OBi=w8tBUNi&zd*7COj0PIA;(2#!;|EAbYlEcq;?fi`6Ns;HG(^$W*=U~`$VYevGgQPDqLhby7aM*Q6NWE4~7!JkQ0Nxl-VU@^b6Wn(0vAxpt9!bllx_&l@g1rgyahv&n zCRyu~ZMN4iYe$|JOGyw}e^LZCg1^Wua1f4pcUJwp+oFUo`t zahg2WuaF9D&;_pTRFkG6m%|$I6MnU)ox<$<6+xh6WlY-R{4eFg7HP+(cuJ#-p2iV^ zJnsluw`&TN`=Wu8ggc%vkl08AoU%aFZbc~Kh{5MquJ9c%<*yHlpZ8;kFEz0@M>Las= zsL1^P_Tu%1ZYnecsXz zpzy?1Ma$Kmp&Mc!=>;Q#ATJWlXLd)dzXr;1J#n0X=ZLk1;1cm{qbuK9T@R!L+oOec+HWaoyNa)X=Z>#%J z>xg%`FTiC;O`cZv>$g%S$cj7wn7kv*Ix1t9oMHDg!~vvv5~No!=|yu_U<$x{aj5^r z3UxdCqLj^(U#Yi>scR-kwK5=@5(KL-`kpH2{Rq23E*&`XOPghADR)D;7O+23cwTov zZktBotK;^<9NItB7(?~ed_$%|UxAvCy^O2~*NK-1Efu%*dhtI}h!#vXr3{{wJE8V1 zypk83_7%x4JbF8ilc?rxGPyKil6Jeq&fmJWowa|J2Q1aqluKh96jBXD%eAVr*mY_I z0jIHOWZzHyzbSDM2#EWCDYrVM zxPK4dCydOFwXMST{Bb?Sr}84`!Z<%Mqp4ph+QWEc%4ry4uVbZWLOsOtn#7wqMq0a@ z7>+?Bw$IUETsr1u6C~s};RO+|wdB4n2>ZJ$?yOb+J&og%8poP6V%ztxyLx|P6>jmq z>-r@UZlil?tUvQlm^neej)2%S!M9uHACw6${%7shd86E5*g7&qj1<{ut5-jzoV-u2 z7{%b@1x^1kbmjTdzq^>5Ba6kWe$ZXYBHEWWs3+zq;-2K~fO6pS=bAGv+LdC3MKhHM zxjU5?)M!sQ>fnXBagQ@_b26X{xy1}|AW$_dAw6jB^~Xp5yY8KaTaR8HL|OSpHpaU} z{Cba6KdPuQ0&)?AVuhvy(s{8M!#_);WfhEtk;H;v2nih=Ik63}$EQS*8ol!&7Cva= zkk0bdw33=fQ}F2e(mqe?MPRh9ZMvIW1(bPlGS*T~b3JIf`q)-=uQ&_v38sPQFsW<& zu4gZ^nhtTZd5GupvbP~=L&n9>{3i4Ld4^-R9@1*+wB0`B)LboNWHEv z9cFu1vc+4jSQU*lr$x>M#zfMPkl>iQjB@9jzkaUBbdY4K9!9*F_u9(?_{wB3jXaE) zI;Nt8y^zQIj%JcJ`0i5G=Y*S79uRBh00JX>JpiSst>8|qZgM?&(2F9UH-!)zTXhiC zJ#9qh__8A|qc#mhS$#&b>r}Q}wZoCtLq}$A7x=rEL|zTHc-$V4_TXz8%3zDN-}OZv za~j^ev}b}@U^lpx?^;kI6=roTRBaYOSo4XnYxfo^&`XZ>57>Q3I8KlYm7s1V0=Ky5 z-|kKqdYB>hhuJXMI=Q0aao7s~qf@*&R-XDwr7$jfKDC(u*jxr-;2W$h{k*W&xu!L2 z${jlHm8aTgMarN+z{u4F{6EcM!`vz~;0;~vFC-=ay%apLy7p2+bsgnih~#>IQagZV znYsW(T@1@k4K-iXXLxJ>OYb-L;x-}e7Dnlv?CH#%s{V>OzmSSXD{@{)k z&B&syBpkN_>L5(#k8U8Hmq?s8L?ueJNH}n>LZ*bF7-AJMOYLe;5tpbcjsFX>+EJxp z#91Aw{Nu|gBi*c)Z9pu06j@?$gG%%;+jsfNBTfm?a~-$l+tsZ06uyqh2Y|h{iiUD8 zu0N-n$|ef>9Kdv-rj4=mZQBCgQAS1iL=UEMCOKvB5K?F(WJk=~i5`4St($$Hol1^pW(F#L8Ys=o3?+yqfbP^6ca z=e8n#*XkbHhX5)63Lb4G)>NE9{TVO1^C*osi#=k3;>UQ;XVcu$G0_@kSLdzA(QhE^ zEyPn;y3RIgEQPPkE@_*qQbk3&p14@cowD%8dBLh>mpl@BNJLx9O?M%G8ij-}_(h7b zhu^mN`re-2VB+TidSLq%CqM#;v$w8SK%FsU_;=nd5ZA-t4%MAbC%x0cX-R>9D)sF$ z(uzujFT{EBe^2_znfHNQ@GoK*sLKudTZgL`oaW{c))a_fq!bTZ*sH17`DrJQ4e%qu zruM@pGG#u^p)GqUn=ADlgch3er-*i0o2^t8{MM8twYt7>UhK~A{9 z(Uf@&$AJ@>)qtDourZFnVou}DWn!3m|&rN8|Q?P~?FeG+6MAuKxDTvclDxkKDpzvo&()LG6t zV$XbV#o~A;4zp|(IcEFOX?M!1Iog*7dsDtm%JMeh0^KvONC!zfLnfGVIU$h;#~?VG zY6#}+!2OS)>YV;J)o!|Dyh=^!x&%foXcl!u8P?XZG^PI4l@kC8k~y26o>Q^lSKT>Q z&2RYOK^2;4hyJvw5cl=b6jh5kM36otoe{9%uMH!w+g@F_On$|K!U&ZSX|e831uG&m zPvSKkA|Kb;RuiPlc~n$ejm#RW6G>p|1VZ|BP@dH3=i0aap$Y^@WD3}tEh@&j3Z8By zx)JGBXiyxj15V2M-Z<4#3eLp+?XZE1N>E&c_)~WC#imCxebg?9(T)@Maoa)u7}^y7 zC?4#lnz?faiJJ)Vf%IfhSdvh@C%0c~O`{pj;fy9O5hRy=_{NR?@JwUHjt6n}X!+@~ zsheK5rMUuY_4y-!?_M`$G%yPknk$ru0#p;@kcO%`q@5rKYG zm)3JYV%U>AP*!r3|Lx#_@`QC%0Wqmq9RiMaz~MjGC3etA_C7z6q|J2AuX z;pX2L@y8)KV8f1RoH8 zu^A??lf$l@e5?{GZ)xJ_IPSNz`S$YH8fWq)SiHVbQ$BGTr7J++Nm2`F_{(lb`o9?e zm`<;g${Aj@Z-1V8m6K-YOB*X$tR>ptq^xF`9K65o-tP-V15JM4O8YJ7B>0?{+O&*} z8MgvGz_|}Z@WKEpti%Lc-8hL`QuCSHRfjsT5nF%D66&}4I#KOidXCeltGPKY1=-0U zN>rV8>S?ZzL~HmDNr z!y}jbimAw)_RCIs8wlbQ1so33bGo?f549J~;r~3hydK|9Y@8xyKKuZy(g#B;W?bXcz;E()4fsIVWRQ-dY*d|YhWoLCKSFt5odTq zw0?RyQG_6ukJ?_l-AfnfQ?(G!>K zK!iDx<0O9)(|%KXa$1nuPe=w?OAsrsO8J1=eE|)1_bE8 zKf4sXIyDJu>V)z2NCr2m^&OJnf(22dl8F58641^M0v`YoQE7z^Pify)PO6MPQKPw; z>0*011JmjcVW|k!!_H^l_J!jomIi*1%37aeu*H|&6(_MMiKSky5#`N?QUzlx$Z<8@ z?#)w})cCGO{QbF(NyiFB8;5*}9oALB_hqa;5%68GYt-qo#6oQX6qq2Ip(i!(*b}Au z8UTs0)u%id0NbxL;0=`;B=B9|&>yH(GPB33-?nnsQ0w7CCPb*OKUlZ;L_xfzsE$lY zry0~qD6@Z1VK>#-cg0STDiUQBV{LS${ga=Td&%u{H`-m z%8-{4Ys)B!op=Za7mfe@p?*J6o*k_Q=iX|M0Q#EU>znEoi|49n`hjHZ&&~Dg>{W`J z68!l&0w*kfKyu@VZ=6dY(Z`)mpL)d7g&pE@X%PKzag=?aVi2k!Q+j{SfDdUF*aJGQ zulNecq2NWp3>5g|@6KHJt?AYsSe{GtSdr z^vuu1#8i?vzd82(rVyQg+Regl7AfEmPtLX}hwV~5NI0A<(uAd#rdKA6iwX7=dn+$+ zTNXsF`5#YtZLEY2Ft{iTrsuD^{eB=A3TZ8L@Q}V(^^o>jZ+5%u$~}FbxaHV4Ha{Qn zHzeE)-#++-Ei0<}3U58Gaf}s~K!HHm7F2W>;b(`Qv%4)y;OL zQvR+hR#zr)jz_4*IDCdv(mtjq=s@-KciwLw4zPB=od83IpQ@Uaq`D#|;I!P z$1LqabD4VM_Wso}l?vRPH$O3lA0ZiZG>o5lMfseZw0DWVlo=UmLT|O}{h7)~Rb*fT z)GZzEE*l|%Xo$?6mQW*!%NTen=kHWWhh+Πlz8`# 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%0A+v$9XV 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 D(DCss literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511164002-Config.rsc b/MikroMaster/20260511/20260511164002-Config.rsc new file mode 100644 index 0000000..f816521 --- /dev/null +++ b/MikroMaster/20260511/20260511164002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 16:40:03 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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 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=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 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.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 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/20260511/20260511164002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511164002-Diff-Config.rsc new file mode 100644 index 0000000..55d195a --- /dev/null +++ b/MikroMaster/history/20260511/20260511164002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4299d4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4301c4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4302a4302 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN -- 2.52.0