From e4156ba2650b5ddb1db33736d5a29e9cc94f8fdb Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 4 May 2026 14:20:59 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 04 14:20:59. --- .../20260504/20260504142001-Binary.backup | Bin 0 -> 262551 bytes .../20260504/20260504142001-Config.rsc | 4308 +++++++++++++++++ .../20260504/20260504142001-Diff-Config.rsc | 42 + 3 files changed, 4350 insertions(+) create mode 100644 MikroMaster/20260504/20260504142001-Binary.backup create mode 100644 MikroMaster/20260504/20260504142001-Config.rsc create mode 100644 MikroMaster/history/20260504/20260504142001-Diff-Config.rsc diff --git a/MikroMaster/20260504/20260504142001-Binary.backup b/MikroMaster/20260504/20260504142001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..12294537f97c947b3d7aa0198ade040e2ffd7a70 GIT binary patch literal 262551 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%0DhMTb-zJ%-FU%NL+uS5WV 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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/564/2a71d77a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:15:02 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 . \$fetchFile);\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 :global Grep;\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk\ + lmnopqrstuvwxyz-\";\r\ + \n \r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim;\r\ + \n :set FindDelim do={\r\ + \n :local Length [ :tostr \$1 ];\r\ + \n :for I from=0 to=([ :len \$Length ] - 1) do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick \$Length \$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 currentListName [ \$Grep \$FwListName \$ValidChars ];\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$currentListName);\r\ + \n\r\ + \n :local Delim [ \$FindDelim \$FwListName ];\r\ + \n :if (\$Delim = 0) do={ :set FwListName \"\"; };\r\ + \n :if ([ :len \$FwListName ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$FwListFile->0);\r\ + \n :error true; \r\ + \n }\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/20260504142001-Diff-Config.rsc b/MikroMaster/history/20260504/20260504142001-Diff-Config.rsc new file mode 100644 index 0000000..b4b875c --- /dev/null +++ b/MikroMaster/history/20260504/20260504142001-Diff-Config.rsc @@ -0,0 +1,42 @@ +937c937 +< \n:global CommitId \"main/564/2a71d77a\";\r\ +--- +> \n:global CommitId \"main/560/2e1d6954\";\r\ +940c940 +< r: root, in 14:15:02 04.05.2026.\";\r\ +--- +> r: root, in 13:35:03 04.05.2026.\";\r\ +2891,2894c2891 +< \n :global Grep;\r\ +< \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk\ +< lmnopqrstuvwxyz-\";\r\ +< \n \r\ +--- +> \n\r\ +2899,2904c2896,2901 +< \n :local FindDelim;\r\ +< \n :set FindDelim do={\r\ +< \n :local Length [ :tostr \$1 ];\r\ +< \n :for I from=0 to=([ :len \$Length ] - 1) do={\r\ +< \n :if ([ :typeof [ :find \$ValidChars [ :pick \$Length \$I ] ] ] != \ +< \"num\") do={\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\ +2952,2955d2948 +< \n :local currentListName [ \$Grep \$FwListName \$ValidChars ];\r\ +< \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ +< \_. \$currentListName);\r\ +< \n\r\ +2958,2962c2951 +< \n :if ([ :len \$FwListName ] = 0) do={\r\ +< \n :log error (\$ScriptName . \" Failed parsing address-list index en\ +< try: \" . \$FwListFile->0);\r\ +< \n :error true; \r\ +< \n }\r\ +--- +> \n :if ([ :len \$FwListName ] = 0) do={ :error true; }\r\ -- 2.52.0