From 2fe7037c610155939d47caf9edf519d42fa82a66 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 4 May 2026 12:00:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 04 12:00:42. --- .../20260504/20260504120001-Binary.backup | Bin 0 -> 261868 bytes .../20260504/20260504120001-Config.rsc | 4286 +++++++++++++++++ .../20260504/20260504120001-Diff-Config.rsc | 70 + 3 files changed, 4356 insertions(+) create mode 100644 MikroMaster/20260504/20260504120001-Binary.backup create mode 100644 MikroMaster/20260504/20260504120001-Config.rsc create mode 100644 MikroMaster/history/20260504/20260504120001-Diff-Config.rsc diff --git a/MikroMaster/20260504/20260504120001-Binary.backup b/MikroMaster/20260504/20260504120001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..8879f5e4635fa4f0b2fe096d40e09983309536c5 GIT binary patch literal 261868 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 LW3AP(nGrO%v%1<5*UvHwk&@V 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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/550/ba41107a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 11:50:03 04.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global 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: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: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 GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \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 FetchLargeScript [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n \r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$FetchLargeScript ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=\$CheckCert url=\$fetchUrl dst-path=\$\ + FileName \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$FetchLargeScript ] })\ + \_as-value;\r\ + \n } on-error={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\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 \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={: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 FwAddrListsUrl (\$GlobalScriptsUrl . \"fw-addr-lists.d/\");\r\ + \n :local FwAddrListsIndexUrl (\$FwAddrListsUrl . \"index\");\r\ + \n :local FwAddrListTimeOut 1d;\r\ + \n :local CheckCerts true;\r\ + \n :local FetchMode \"https-only\";\r\ + \n :local FetchMethod \"get\";\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchLargeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=([ :len \$1 ] - 1) do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick \$1 \$I ] ] ] != \"num\ + \") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len [ /log/find where topics=({\"script\"; \"warning\"}) \\\r\ + \n message=(\"\\\$LogPrint: The message is already in log, scripting \ + subsystem may have crashed before!\") ] ] > 0) do={\r\ + \n :log warning (\$ScriptName . \" Scripting subsystem may have crashed\ + , possibly caused by us. Delaying!\");\r\ + \n :delay 5m;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local FwAddrListsIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$FwAddrListsIndex = false) do={\r\ + \n :set FwAddrListsIndex [ :tolf [ \$FetchLargeFiles \$ScriptName \$F\ + wAddrListsIndexUrl true \$FetchMode ] ];\r\ + \n :if (\$FwAddrListsIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$FwAddrListsIndexUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$FwAddrListsIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$FwAddrListsIndexUrl);\r\ + \n :set FwAddrListsIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach FwListFile in=[ :deserialize \$FwAddrListsIndex delimiter=\"\ + \\n\" from=dsv options=dsv.plain ] do={\r\ + \n :local FwListName (\$FwListFile->0);\r\ + \n :local Delim [ \$FindDelim \$FwListName ];\r\ + \n :if (\$Delim = 0) do={ :set FwListName \"\"; };\r\ + \n :if ([ :len \$FwListName ] = 0) do={ :error true; }\r\ + \n :set FwListName [ :pick \$FwListName 0 \$Delim ];\r\ + \n\r\ + \n :local FwListUrl (\$FwAddrListsUrl . \$FwListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$FwAddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchLargeFiles \$ScriptName \$FwListUrl t\ + rue \$FetchMode ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$FwListName . \"', \" . \$I . \". try from: \" . \$FwListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$FwListName . \"' from: \" . \$FwListUrl);\r\ + \n } else={\r\ + \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :len \$Data ] 1024 ] . \"B for list '\" . \$FwListName . \"' from: \" \ + . \$FwListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Delim [ \$FindDelim \$Line ];\r\ + \n :if (\$Delim = 0) do={ :set Line \"\"; };\r\ + \n :if ([ :len \$Line ] = 0) do={ :error true; }\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address [ :pick \$Line 0 [ \$FindDelim \$Line ] ];\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :if ([ :typeof (\$IPv4Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv4Addresses->\$Branch) ({}) };\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :if ([ :typeof (\$IPv6Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv6Addresses->\$Branch) ({}) };\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :if ([ :typeof (\$IPv4Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv4Addresses->\$Branch) ({}) };\r\ + \n :if ([ :typeof (\$IPv6Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv6Addresses->\$Branch) ({}) };\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={:log error (\$ScriptName . \" Failed parsing address: \ + \" . \$Line->0);}\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$FwListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log debug (\$ScriptName . \" Renewing IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' with \" . \$TimeOut . \"\ + .\");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log debug (\$ScriptName . \" Removing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$FwListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log debug (\$ScriptName . \" Renewing IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' with \" . \$TimeOut . \"\ + .\");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log debug (\$ScriptName . \" Removing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv4 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$FwListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv6 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$FwListName comment=\$Li\ + stComment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$FwListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man manager +set enabled=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,dns,www,api,reverse-proxy" crl-store=system +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name=client1 \ + use-peer-dns=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface="ether1 - Unet" protocol=tcp src-address-list=\ + !TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 dst-address-list=YouTube new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address=\ + !10.30.30.0/24 dst-address-list=facebook new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat dst-port=80 in-interface="ether1 - Unet" \ + protocol=tcp to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com log=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set graphs-plain=no rest-plain=no webfig-plain=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260504/20260504120001-Diff-Config.rsc b/MikroMaster/history/20260504/20260504120001-Diff-Config.rsc new file mode 100644 index 0000000..f13fd49 --- /dev/null +++ b/MikroMaster/history/20260504/20260504120001-Diff-Config.rsc @@ -0,0 +1,70 @@ +937c937 +< \n:global CommitId \"main/550/ba41107a\";\r\ +--- +> \n:global CommitId \"main/546/6df1efd6\";\r\ +940c940 +< r: root, in 11:50:03 04.05.2026.\";\r\ +--- +> r: root, in 11:10:03 04.05.2026.\";\r\ +2442d2441 +< \n \r\ +2445c2444 +< \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ +--- +> \n :log error (\$FetchLargeScript . \" Failed creating directory!\");\r\ +2448,2450c2447,2449 +< \n\r\ +< \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ +< \$GetRandom20CharAlNum ]);\r\ +--- +> \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$fetchUrl ] . \"-\ +> \" . [ \$GetRandom20CharAlNum ]);\r\ +> \n \r\ +2452,2458c2451,2470 +< \n /tool/fetch check-certificate=\$CheckCert url=\$fetchUrl dst-path=\$\ +< FileName \\\r\ +< \n http-header-field=({ [ \$FetchUserAgentStr \$FetchLargeScript ] })\ +< \_as-value;\r\ +< \n } on-error={\r\ +< \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ +< \n \$RmFile \$FileName;\r\ +--- +> \n :if (\$fetchMethod = \"false\") do={\r\ +> \n :if (\$fetchMode = \"false\") do={\r\ +> \n /tool/fetch url=(\$fetchUrl) dst-path=\$FileName check-certifica\ +> te=\$CheckCert http-header-field=({ [ \$FetchUserAgentStr \$FetchLargeScri\ +> pt ] }) as-value;\r\ +> \n } else={\r\ +> \n /tool/fetch url=(\$fetchUrl) dst-path=\$FileName check-certifica\ +> te=\$CheckCert http-header-field=({ [ \$FetchUserAgentStr \$FetchLargeScri\ +> pt ] }) mode=\$fetchMode as-value;\r\ +> \n }\r\ +> \n } else={\r\ +> \n :if (\$fetchMode = \"false\") do={\r\ +> \n /tool/fetch url=(\$fetchUrl) dst-path=\$FileName check-certifica\ +> te=\$CheckCert http-header-field=({ [ \$FetchUserAgentStr \$FetchLargeScri\ +> pt ] }) http-method=\$fetchMethod as-value;\r\ +> \n } else={\r\ +> \n /tool/fetch url=(\$fetchUrl) dst-path=\$FileName check-certifica\ +> te=\$CheckCert http-header-field=({ [ \$FetchUserAgentStr \$FetchLargeScri\ +> pt ] }) http-method=\$fetchMethod mode=\$fetchMode as-value;\r\ +> \n }\r\ +2460c2472,2473 +< \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$fetchUrl . \"\ +--- +> \n } on-error={\r\ +> \n \$LogPrint error \$0 (\"Failed downloading from \" . \$fetchUrl . \"\ +2464a2478 +> \n\r\ +2466c2480 +< \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ +--- +> \n \$LogPrint error \$0 (\"The file downloaded from \" . \$fetchUrl . \ +2467a2482 +> \n \$RmDir \$DirName;\r\ +2469a2485 +> \n\r\ +2837d2852 +< \n\r\ +2842a2858 +> \n\r\ -- 2.52.0