From 96e33bc631b17f4ecde0b99172d9da8dfd7d3958 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 23:00:56 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 23:00:56. --- .../20260507/20260507230002-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507230002-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507230002-Diff-Config.rsc | 12 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260507/20260507230002-Binary.backup create mode 100644 MikroMaster/20260507/20260507230002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507230002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507230002-Binary.backup b/MikroMaster/20260507/20260507230002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0ea2e1b29716a3c216669e8be63c3d47a0334a98 GIT binary patch literal 297773 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
{r99B^Zzqj6KgztcUprxvBSQ}m+9jJ4AedAQ zJSIWT&@IwFMiT@Xa6vY-K0gXko~CJE(!gfo4OHCXgK2)F#z|lV<#-#-V!$9CK0M5^$p<_!2AH zBU#evPOi^AtL~!h1Y9zeL*2mNPQFMn$(&kkR~~ICW*vn~JTSg2%a1s6LE6&eUI@Ch zOp(9CiIHHKFUu=Q8a25QO>Z8VZjWKX<$+g2PU`Yt6hZM0yrO(Rb_B$XVxjIFTO~M6szp}gt7zZe#?wG4F?an%$Z=` z6oKC{tLYhehm~5txZ_*y!r!HEb_@VxW@a89bhc`7xfISz)X=hK4?dIH!^F_QQ*_x; zXUD!D5?*H-%9Thxp{*{uTU!)<`i9(?9~y|Dr(YIy}jtJLEp?Bs{7R^_zv`CPNtT? z)9Uo8FLBP)jB<_eE(~Vj}#M0hC>tVox)k&9T2ig*_4UZFK#>FzMYB=Z*=K^UL?-Go9E~AYftq z#@rJ;*k@KV&uFRU%XEE~35%QtAm>Y!4ii=kYFzMhW*IS{H-Y6iI{JHTr7e}11^)J_ zi|gPD8|EyYV3E}2tHFKv?zs>;q~pEQ=_~-v4f_LE6tnsW`n-V~D+`w)w-TCM!|AM) zyh|aWqo212EvOLj8%;33e;nd$EghU85)MFMAm|Rer_DisTq7#ELuexMg{mwPzXs8Y z(0-Kdzx$~=sBeo|fsDvs2IqMO3G^I$MGeR}kHIz{@fphSVapV9CH^tLDsQiFx&D=i zy57IEyiQFA0HwLo60N+_$#E@JMH4BpG#`VKe8w|eE{Nh!6-k%idhYCAht zG0IUTvO(i<3Kbn6a!hGQAU=Fu3tJqmERO8fjV!^IyPx;6?;{ZrYQ)Ce@!~AD#4P-kt~Dr8LCX=TCkF1cxF^!l(y+|* zEAQOy&9kWA(Qmx04x%ySityXY4y05OXbWKxN0{EjOf^ldSTH~O3l-aPzLpp(d@K+? zcaZg|$BThdhh^GrMyU8CsR`Vlc*M2>4!vOJeva#+4N@{KrtsKbWGg0@cmP;{Er1MH z{a7UiOvV-ntrpvROTdPJM9b)sGPjG4n9zrbZXg%D^^mnT3-=VP*nk(%2fqXn2> zLtd-IeVjJiV$I;E>>+NWz4NqU_!pg$gW$M^pjb^Q&ywX-A#YNs4P@!=Q%C@&`afS= zus)m`Snw=Y1sS$C2E&0J{4dw|=>%Z5D0Gg*^wzF0=Z8PH3<*HXvhub{nY9xR*;2+9 z$I|=rxll92nT+I#7{UJjosP=wH10G0LrR2*scR+^9Qt9jsgv3b9+L zJ0^kR&?&O~Qzt^^T>!=#sw*x!3hLfy&8X~UuDeA%XWkLE@xSFAlMhfF%0?~l2b9B2TxppvjA7FWBHlLT!;T)n666;X~k$RcT9d8DV4II&hY5Qd64vc@5a zcKumN8eu|@+dy9)-=m6EzrYe57wvn+e%MO6p9`rkqHQ*@LtOjxYNHxFoXjn@LHFl% zO~*CIr*ghtxn^ZL|AkJyQ3AFJdb&)V<2x-77e|P>p(2%83u@)2bYS!@RH^F7-$Vc` zJ?yFZb>o^LYbfNcfUr3}^*NY!f+fb00;{%(C36CkK5FzxLVDZ~pJL#DvYmI{T~b0!Gcp`uj_!+X&G`0J@moy7?{ELtyZ! zY-331IL5>Fv`HuI*#)6^Y_~XTezD6QsL%UFCgV(JhCzq#vGGQfA^nDE77BvpXH|%{ zqc%T`Jc@!cWSsSOO3dWu=T8Ov766fZ5{;s!a9$iA&Ztlnua#1fg9;Kj=wca2V%nTt%~IOd$k4Y+fK;@a zxtDW0KWv$4nhW-T)zu$K-=#WsP5I7(s1#Lwm*U}@ygdU# zH-F5^ccBP^3QkE!3$NT}Y#W-!cQ5SlEQeV#eh-(b9&)M!Y8_)!c$4WdtOqsK2<6Re z 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�=Kdrhp+UZ6|t#80acXD7^>B>OLh1s&wV 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�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 RFlcX*4)txdrLmnE8zu@^BbERF literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507230002-Config.rsc b/MikroMaster/20260507/20260507230002-Config.rsc new file mode 100644 index 0000000..b6140ad --- /dev/null +++ b/MikroMaster/20260507/20260507230002-Config.rsc @@ -0,0 +1,4644 @@ +# 2026-05-07 23:00:05 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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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/20260507/20260507230002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507230002-Diff-Config.rsc new file mode 100644 index 0000000..f917748 --- /dev/null +++ b/MikroMaster/history/20260507/20260507230002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4294d4293 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4296c4295 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4297a4297 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4300d4299 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4301a4301 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN -- 2.52.0