From 6f41c4dbe5fa17cf0bdc08abb7ee5261d3cb2cc2 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 01:00:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 01:00:41. --- .../20260508/20260508010002-Binary.backup | Bin 0 -> 297773 bytes .../20260508/20260508010002-Config.rsc | 4644 +++++++++++++++++ .../20260508/20260508010002-Diff-Config.rsc | 18 + 3 files changed, 4662 insertions(+) create mode 100644 MikroMaster/20260508/20260508010002-Binary.backup create mode 100644 MikroMaster/20260508/20260508010002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508010002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508010002-Binary.backup b/MikroMaster/20260508/20260508010002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1385264edd616156644e4aad756867c61fe48232 GIT binary patch literal 297773 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%0DG7oKJtT=pincR>r`?ksag^ zsdigO`I3VC-bH0jdrtQBEtjtCeC4jGG;%Ex#&d=%fg(Bz>TH`M3||=iw6h+vfL<>| zyh*4>LC;5{S_1Y4&?ace=taO>)krWPe=U?pD;Op1KjZS?dmon^kb!CTv{{iwvnBR~ zL3Gv(F>#5J*pF}5(vX|g(}w@iHW?g}|6vzZR5|_hBY{r;u;T*>-PdRz@1>)38f<8H zW2e6Y0B5-)_R4z)h+CLhRX@7IY4!&fb8P_=w=E{4MM^*U0oQ3)5#(Aduj7lL&aCAe z1gTc*CRD}6_ij8(R}vymt#J<6Uh9tt*ZPD0yxD=*iB{wg26aKa7cB}K$}oR9v9`hc z6F_Jdn`4+H3nHA!ECI=*Mg3-%j}{WR7;8>rV*nFF9)J?UllJjEd$aO~%gnOCjM*vu zF4nh3wQif!CL=#tlogLM`Li*M7!yS1+#;t;+rp}4G5xn^Lf-oX%CkoyqNL&;gzIn6 zD&_-{0s1~33Hk;lyPFkBt!RTMJ2y&W3)UV0=F>ulN&N-#WAlO~Bg|iaPjwu+D9itb zUu{$g4OzeT!4CDY%LFDuz^jv!0p9t2{uK;OL#Sa@SuWEm-++?_kmv~~VU}Hh4GMI< zzF#)xO(?jEe!#J8%~CK00ucRegg1&F!S}uIChTgq_CjX3u;LdBxU7&KlIXaOv)n0I zKj*0Sd-T6g%nY_|PB<)*D#CNrVAX&w8?OOi@jM&^MPNUcVA2-FsQmy$U^&6cx6oe(iACPM2S^u%CaiOb&H3``Wl7A$HfNLiv_KMatndDME|a{ zv=U#lJ{$LYF&!n^ZIiGK=)Yaavmocinik6ryE#GpJ0p`sOAX^+_1LQJa?o#~Qg;aP70J zie3b8PN!<(Ad0!x7d&~L2SpTY9ujpT*$*r*_m`}-n*|F$2IWyYN*|nDm^3iB38w z_(-rXf+OWw7U#@K?`fKS%!%ZA8IC_8($njrJ>^*4Ee@GW9-g}Mo&2&bX=O;ty){Rc zfqu%#KrS9NoVgJz$;)k8dE2OQsQe(~TnfAyx}^tqg{0$JEU0 z@%aj(69s=U9;&e>zv0OP;X-L-=R+sPRS1ee3XyAz&-E{`+ghFjt&&)u>jUlld& zmzr(6mGL^t9s?KS4>WFef``TP_I~Z0%>{&szX7O>+QJjbmiO@)l^GU-l!C3bushTs z89El3xyDjjUR!c~8=gSbPcR;>^rP+N`t23eeydO1_cGzxLkYtu3dh7pNFv0 zE2BunyYrsMU`*}gm$#apoTYsO(x1fsdr5g>xgp!Fj4Wby$Sb-bRXT(v_tEXe^AEx$1t>#dC1=PY_3gjfS)xb5F2hH73(8g&NrW(ugHNhg^+a zcYvt4xV4+k4lxt}$9PXHa2y{QNoffa3bzw0io`TI0vqbrX>_RP>#c@HTpNT9E&1Dn z9{VezwfoVTNQOawDU{cPUvQYyn{%JWqXwKgxxOAjJ%BN!JaL zT5pL4@6D^p3Yu~O;4#{0=<9Ee!z|-s~+TqijTfxh)#%;xugiRq!US&!m$|B#YqYGKu)qFZ^ z*9bEYchCpBy4FJV?W9FPtO~l~BKHq!HDq7&_h%@q9KsPP%|9{bHdiL)E>~cCdv@`i z97miNTeQu?c;>+*5KKS6bhH@Ev!Uc-`CGO@+6n0?S}wxlC`hH)Nmen~S576Fg$CWH zn2LRZe<+V)TYN>;+iQ80F(J~^dE=C{b7P0?q&~m1(hp*hcYB|WfMAFho3RrG!aSch z{o{avXllmiFscieRMs)gpL{JZF-H-%H)5na1O>`4L9ot_4R+k);r^qazvX zoene2Gt9Vtb3g+EYGgX-i3AAV`S3_UihrcW#Adce6j=x|^N@f)VJ=*)>Oov)SGddO zTC_4&?xe}{>u?CFoF8J&St{-YuFL629J0)J)$AkOw`0JXV@Z1Onh7wIuRvj6i=vJ? zeqsS}!A%&WY&c(J4Ukos1=^_$WX*r94fApDpi*wVSHd<8I!y3zI&!@qT@ zxUTFn@|nh9xpo=U=CeKjL(N$CdU!q%_U^@=_oOJ)W=-y}03$hfjtY)#)z;tJioWAj zlJj1kE;PK2)HO9>HJ#+`1WGr$-oS#zAhQjzWofVlWf6$o?7KUat!*Y)|yOiA2c@E zu8z$WtbNI-SucPdSg(MRO2OF*1$*Wn_O3{SQ*3LBPctC>G03TZmiOJ3CmzK(T?j&e z98M$CA>MHz_h0+h5g5`WhAR@PHaoFmWfUtJ@w4_!5`1V{lz9GXj!zlpIIBSeU|bhwZc#xifDD7W^~6$zNji6&jQRRs94tLlQri# z!MCc+_Zy*siGpwi`+YQsj_~TtDMu1q%<`?XL0}Nf;3!cG-zoSLNiF4I(52@uW?64=LVd2lWJ?-KM87(h&QW*@pVTy{c z?)%pwW0*1|+JV;nw*rk$_G4)~W2gzOOMmI{7XXs5yXRlB;}iA;g~AQm<%|o05`qg> z&zoEAZA5qt3vIa-x7%kG5i<5jRRN2TJe5#-HB?CPv4ji&sW5HE`U* z;U_IVicH)I6o1=RmU|{wZ|j+Ax}^#u|D+V9s`ZE%>E47Gy*k&Tf|?v(c66JVI0OHP z-XmP|CIU32*Yr#6IY8-#tWFMVr<~mb&&W212n1hjcLen3MCG435#J;&kJGhcAd-sF zSPdmf^T}S)nlM9?=s=HsAQrA1a_@nvlpKGD$cmo+g}=>t`NdDRye^XW9FYHFu!G83Sh=|D9PHDsC{&nCdL_!|~X5TrsU78PJj zvXb@CV}ni0+j2g#cs2BA$WoCLk@EC&nTT4Cr7VA8r@BdjziJShZD+D_3@34&oLbhl%$N7ne(lTdRqgJYM`-kA76?eQ(avm$k3%sq2jrs$ zR}Fe9$tnoO?1A&#@+?)w8}+*Pxp6Z+J|7S<6!LoUbYObbf*6zFB}f|&@@DJxr{x27 zPJ8B~x+!2>F$CFuA2-)f-c45|CKXtE9)%%Ah9&rEN!a=O=kJ$4@*|N<$HSlx*|bgo ztyB@bjGVy#tCKh*K+&3t+cMK9Q-AooeuL?{v95z5ML08EEA6Xhs0LojE?E_11ej_M z4(6EJ#F7t?bw?#4)P;{u4mQ~_=61m6x%9<8v-N;j4*5)83ZZ+uxR!wSRY;e&3={+^{@sn~z{!_&8zur?iu!TS z7j1)6K4uJpp?)j@$ah~pIrKKnGl8IFoM-Zsh(A9DCcUmCb!af}S^a4%NT>!T*kjdr zjIISeg=rYCs>vu9WUc8< zwj}u`Ikpen)f){MfhxTixJxgT8?7K56<41Ftt6Z>{GZz$5yHG(oN1`$ZvKoR zG^J|}zzn=(bg)F=#)j8oHwo?0g~0gUdW|x$y;{4)Jq&+HzKZ>Y6mO8{aA+svwv640 z0a=$h{b!h*o+t(+N7`nM@2Jq@BElotFcJk=TorW-hSjAQ!;kCUl>N0t+BG}Jt_h9g zamoVpYCp~#cCwhN_iu8}rwgMreFS@CTzXk21MNBjj~NO_yvEHzKfk@;*)r^HZ%U_- zMGTsOUYHf{i}fqy0AZ!+f<({bqnvA>nWR$Omp2`tC8f|dkqIDOu|^Bm z@DU$E>}b1wc?*>i%P-*S@h&XXI~BeocYBfUNpt2p;UD++)zyyx$Ew!y9zc(&@<1`1 zYt29sU83=&5Sz*cMh#e)9$_L*eb#|a`>%I`&G~_hzTnl`xf0hrl`c&}Y?IQyJ^=p! zYV(u#X)?own4)iG*+s!8LYb}5>mgi}QNf)SYg!6y4t)WPEWfALbHq1`*;vfCUheSm zB=-B60Mv!f+g=ur>!X4TouTdKwr1R2m7%_d*vT{=VT=o%|uu9qzSIyC}Lx{IMGd%C!en#!T|_&9cKgtZs=e^ zp(E!Sum#nyc8GwRrTdYWQ*pVlbX|%lHzCSx1@Fso;dM-?GAvb%HLt6qo{ZqAGNo)p zYGYf+TyOUn-K0&P{~$>k!haWV^5q*^SK$S;dAJufHX=KQDO8p`7qKFP@_W}nqWuzF z+bsMiLya|gZ-_HJYJb196CElyI2D5uwH(L4M2 zRzI&>Qwz0H>`n(<@iZ{oPwRrxO@aKjbt)5m;aT>Ns1b%TD

re^Hv~*7@9MqQ4j( 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 ROvJlP3TAb+w@18egbOZ7@1Fnw literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508010002-Config.rsc b/MikroMaster/20260508/20260508010002-Config.rsc new file mode 100644 index 0000000..cbd18e3 --- /dev/null +++ b/MikroMaster/20260508/20260508010002-Config.rsc @@ -0,0 +1,4644 @@ +# 2026-05-08 01:00:03 by RouterOS 7.22.1 +# 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 +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=vados 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 \"dns.google\"\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 +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 +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,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/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 +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no 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 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-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 +/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" 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!!!! disabled=yes 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=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=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.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 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=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" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram 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=Twitter dst-address-list=\ + Twitter 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=YouTube dst-address-list=\ + YouTube 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=facebook dst-address-list=\ + facebook 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="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=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 +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" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +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" 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 +add blackhole disabled=yes 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 +/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 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/20260508/20260508010002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508010002-Diff-Config.rsc new file mode 100644 index 0000000..ef1f1df --- /dev/null +++ b/MikroMaster/history/20260508/20260508010002-Diff-Config.rsc @@ -0,0 +1,18 @@ +4294d4293 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4295a4295 +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4298d4297 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4299a4299 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4303,4304c4303,4304 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +--- +> add address=104.20.28.254 comment=dou.ua list=FuckRKN +> add address=172.66.164.200 comment=dou.ua list=FuckRKN +4306d4305 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4307a4307 +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN -- 2.52.0