From 1210d21515434f59439f51e3ff6d12d652d21f4f Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 4 May 2026 13:41:03 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 04 13:41:03. --- .../20260504/20260504134002-Binary.backup | Bin 0 -> 262193 bytes .../20260504/20260504134002-Config.rsc | 4297 +++++++++++++++++ .../20260504/20260504134002-Diff-Config.rsc | 50 + 3 files changed, 4347 insertions(+) create mode 100644 MikroMaster/20260504/20260504134002-Binary.backup create mode 100644 MikroMaster/20260504/20260504134002-Config.rsc create mode 100644 MikroMaster/history/20260504/20260504134002-Diff-Config.rsc diff --git a/MikroMaster/20260504/20260504134002-Binary.backup b/MikroMaster/20260504/20260504134002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..907e7a693e011e30fd31d01b256d3602512cb9b1 GIT binary patch literal 262193 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 z�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\"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 SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\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 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 :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 } else={\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 (\$GlobalScriptsUrl . \"certs/ipall/\" . \$CertFileN\ + ame) dst-path=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :delay 1s;\r\ + \n };\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\" } 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 \"\";\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 {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\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\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/559/a7de843a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 04.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 GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\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 ExitError;\r\ + \n:global ExitOnError;\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\r\ + \n:global FetchUserAgentStr;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n:global FetchLargeFiles;\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 LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$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 \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$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\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\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\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\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\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# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n\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 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 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 /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 :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\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 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 [ :len\ + \_\$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 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: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 ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n :log debug (\$0 . \"Validation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\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# read parts of a large file\r\ + \n# Description of parameters:\r\ + \n# \$1 - script name for logging and user agent\r\ + \n# \$2 - url to fetch from\r\ + \n# \$3 - check-certificate value for /tool/fetch (true/false)\r\ + \n# \$4 - mode value for /tool/fetch (optional, e.g. \"keep-broken\", \"ht\ + tps-only\", \"http-only\"\r\ + \n# \"no-redirects\", \"background\", \"background-and-keep-broken\",\ + \_\"background-and-https-only\",\r\ + \n# \"background-and-http-only\", \"background-and-no-redirects\", \"\ + background-and-keep-broken-and-https-only\", \"background-and-keep-broken-\ + and-http-only\",\r\ + \n# \"background-and-keep-broken-and-no-redirects\")\r\ + \n# \$5 - fetch method for /tool/fetch (optional, e.g. \"get\", \"head\", \ + \"post\", \"put\", \"patch\", \"delete\")\r\ + \n:set FetchLargeFiles do={\r\ + \n :local RunName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local fetchFile [:tostr \$3];\r\ + \n :local CheckCert [:tostr \$4];\r\ + \n :local fetchMode [:tostr \$5];\r\ + \n :local fetchMethod [:tostr \$6];\r\ + \n :local tmpName;\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 :set tmpName (\$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum 6 ]);\r\ + \n :local DirName (\"tmpfs/\" . \$tmpName);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n :log error (\$RunName . \" Failed creating directory: \" . \$DirName\ + \_. \"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$fetchFile ] . \"-\ + \" . [ \$GetRandom20CharAlNum 5 ]);\r\ + \n :local Url (\$fetchUrl . \$FileName);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$RunName ] }) as-value\ + ;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n :log error (\$RunName . \" 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 :log error (\$RunName . \" 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# \$RmFile \$FileName;\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\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 :log warning (\$0 . \"Downloading certificate failed, trying without\ + .\");\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 :log 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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\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: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" +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 FwAddrListsDirName (\"fw-addr-lists.d/\" . [ /system identity g\ + et name ] . \"/\");\r\ + \n :local FwAddrListsUrl (\$GlobalScriptsUrl . \$FwAddrListsDirName);\r\ + \n :local Index \"index.lst\";\r\ + \n :local FwAddrListTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n :local FetchMode \"https-only\";\r\ + \n :local FetchMethod \"get\";\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchLargeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n\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 ] - 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 :if ([ :len [ /log/find where topics=({\"script\"; \"warning\"}) \\\r\ + \n message=(\"\\\$LogPrint: The message is already in log, scripting \ + subsystem may have crashed before!\") ] ] > 0) do={\r\ + \n :log warning (\$ScriptName . \" Scripting subsystem may have crashed\ + , possibly caused by us. Delaying!\");\r\ + \n :delay 5m;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\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 [ \$FetchLargeFiles \$ScriptName \$FwAddrLis\ + tsUrl \$Index \$CheckCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$FwAddrListsUrl . \$Index);\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: \" . \$FwAddrListsUrl . \$Index);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach FwListFile in=[ :deserialize \$tmpIndex delimiter=\"\\n\" fro\ + m=dsv options=dsv.plain ] do={\r\ + \n :local FwListName (\$FwListFile->0);\r\ + \n :local Delim [ \$FindDelim \$FwListName ];\r\ + \n :if (\$Delim = 0) do={ :set FwListName \"\"; };\r\ + \n :if ([ :len \$FwListName ] = 0) do={ :error true; }\r\ + \n :set FwListName [ :pick \$FwListName 0 \$Delim ];\r\ + \n\r\ + \n :local FwListUrl (\$FwAddrListsUrl . \$FwListName);\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 \$FwAddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchLargeFiles \$ScriptName \$FwListUrl t\ + rue \$FetchMode ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$FwListName . \"', \" . \$I . \". try from: \" . \$FwListUrl);\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 '\" . \ + \$FwListName . \"' from: \" . \$FwListUrl);\r\ + \n } else={\r\ + \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :len \$Data ] 1024 ] . \"B for list '\" . \$FwListName . \"' from: \" \ + . \$FwListUrl);\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 Delim [ \$FindDelim \$Line ];\r\ + \n :if (\$Delim = 0) do={ :set Line \"\"; };\r\ + \n :if ([ :len \$Line ] = 0) do={ :error true; }\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 ] ];\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 :if ([ :typeof (\$IPv4Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv4Addresses->\$Branch) ({}) };\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 :if ([ :typeof (\$IPv6Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv6Addresses->\$Branch) ({}) };\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 :if ([ :typeof (\$IPv4Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv4Addresses->\$Branch) ({}) };\r\ + \n :if ([ :typeof (\$IPv6Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv6Addresses->\$Branch) ({}) };\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={:log error (\$ScriptName . \" Failed parsing address: \ + \" . \$Line->0);}\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$FwListName 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 debug (\$ScriptName . \" Renewing IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' 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 debug (\$ScriptName . \" Removing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName . \".\");\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=\$FwListName 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 debug (\$ScriptName . \" Renewing IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' 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 debug (\$ScriptName . \" Removing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName . \".\");\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 debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv4 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$FwListName 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 IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv6 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$FwListName comment=\$Li\ + stComment \\\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 '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$FwListName . \\\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" +/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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +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 +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man manager +set enabled=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,dns,www,api,reverse-proxy" crl-store=system +/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=10.8.0.2/32,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 enabled=yes 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 interface="ether1 - Unet" name=client1 \ + use-peer-dns=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.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +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 comment=AMSTER name=amster.vados.ru 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=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.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" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" 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=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 +/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 list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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 +/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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=tcp +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="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +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=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +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-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 +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=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 dst-address-list=YouTube new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address=\ + !10.30.30.0/24 dst-address-list=facebook new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/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=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat dst-port=80 in-interface="ether1 - Unet" \ + protocol=tcp to-addresses=10.30.30.33 to-ports=80 +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=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 log=yes +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=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set graphs-plain=no rest-plain=no webfig-plain=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 +/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 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 +/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/20260504/20260504134002-Diff-Config.rsc b/MikroMaster/history/20260504/20260504134002-Diff-Config.rsc new file mode 100644 index 0000000..3365bba --- /dev/null +++ b/MikroMaster/history/20260504/20260504134002-Diff-Config.rsc @@ -0,0 +1,50 @@ +937c937 +< \n:global CommitId \"main/559/a7de843a\";\r\ +--- +> \n:global CommitId \"main/556/4817e0dc\";\r\ +940c940 +< r: root, in 13:30:03 04.05.2026.\";\r\ +--- +> r: root, in 12:50:02 04.05.2026.\";\r\ +1018,1019d1017 +< \n:global GetRandom20CharHex;\r\ +< \n:global GetRandomNumber;\r\ +1339d1336 +< \n\r\ +1346,1350d1342 +< \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\ +1777a1770,1775 +> \n:set GetRandomNumber do={\r\ +> \n :global EitherOr;\r\ +> \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ +> \r\ +> \n}\r\ +> \n\r\ +2447c2445 +< \n :set tmpName (\$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum 6 ]);\r\ +--- +> \n :set tmpName [ \$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum ] ];\r\ +2456c2454 +< \" . [ \$GetRandom20CharAlNum 5 ]);\r\ +--- +> \" . [ \$GetRandom20CharAlNum ]);\r\ +2927a2926 +> \n :local IndexUrl (\$FwAddrListsUrl . \$Index);\r\ +2931,2932c2930,2931 +< \n :set tmpIndex [ :tolf [ \$FetchLargeFiles \$ScriptName \$FwAddrLis\ +< tsUrl \$Index \$CheckCerts ] ];\r\ +--- +> \n :set tmpIndex [ :tolf [ \$FetchLargeFiles \$ScriptName \$IndexUrl \ +> \$CheckCerts ] ];\r\ +2935c2934 +< index, \" . \$I . \". try from: \" . \$FwAddrListsUrl . \$Index);\r\ +--- +> index, \" . \$I . \". try from: \" . \$IndexUrl);\r\ +2942c2941 +< x from: \" . \$FwAddrListsUrl . \$Index);\r\ +--- +> x from: \" . \$IndexUrl);\r\ -- 2.52.0