From 17bd298c868cadafe33221eb6f0808a2324cddc8 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 00:40:51 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 00:40:51. --- .../20260508/20260508004002-Binary.backup | Bin 0 -> 297773 bytes .../20260508/20260508004002-Config.rsc | 4644 +++++++++++++++++ .../20260508/20260508004002-Diff-Config.rsc | 14 + 3 files changed, 4658 insertions(+) create mode 100644 MikroMaster/20260508/20260508004002-Binary.backup create mode 100644 MikroMaster/20260508/20260508004002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508004002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508004002-Binary.backup b/MikroMaster/20260508/20260508004002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0f0727f49b9818484152a075074bbcc97958271e GIT binary patch literal 297773 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

FT^Ik8O6Q>opu1eUyC5IQu26fG88a7?Hhn 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

gpiB-@;c==hrrs^+vFTwu! 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 Rg}nsvF!>l2u>&S$+|9Y&T4(?O literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508004002-Config.rsc b/MikroMaster/20260508/20260508004002-Config.rsc new file mode 100644 index 0000000..10882e3 --- /dev/null +++ b/MikroMaster/20260508/20260508004002-Config.rsc @@ -0,0 +1,4644 @@ +# 2026-05-08 00:40:06 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.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=104.20.28.254 comment=dou.ua list=FuckRKN +add address=172.66.164.200 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=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG \ + routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508004002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508004002-Diff-Config.rsc new file mode 100644 index 0000000..254522c --- /dev/null +++ b/MikroMaster/history/20260508/20260508004002-Diff-Config.rsc @@ -0,0 +1,14 @@ +4298d4297 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4300c4299 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4301a4301 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4303,4304c4303,4304 +< add address=104.20.28.254 comment=dou.ua list=FuckRKN +< add address=172.66.164.200 comment=dou.ua list=FuckRKN +--- +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0