From dfcee6d3a45dcb4368fe563dc5a9b64a188da1cc Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 4 May 2026 15:41:03 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 04 15:41:03. --- .../20260504/20260504154002-Binary.backup | Bin 0 -> 262742 bytes .../20260504/20260504154002-Config.rsc | 4310 +++++++++++++++++ .../20260504/20260504154002-Diff-Config.rsc | 23 + 3 files changed, 4333 insertions(+) create mode 100644 MikroMaster/20260504/20260504154002-Binary.backup create mode 100644 MikroMaster/20260504/20260504154002-Config.rsc create mode 100644 MikroMaster/history/20260504/20260504154002-Diff-Config.rsc diff --git a/MikroMaster/20260504/20260504154002-Binary.backup b/MikroMaster/20260504/20260504154002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..3dbb0fe3583fd26517550580377cecb973781b9e GIT binary patch literal 262742 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

pX3_~W0Uo@ypXZ#RB6T*)lQxDF?*)uYaQR^E|+ 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ⅅ_ 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%0DWFqmHNH|~m+l=xDf-Vxe@gKhLH!&wAXbu-hWLq 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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/568/5c207d26\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:55:02 04.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n\r\ + \n:global FetchUserAgentStr;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n:global FetchLargeFiles;\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n \$LogPrint debug \$0 (\"\\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$0 (\"Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"\\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={:set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]};\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={:set Path [ :pick \$Path 1 [ :len\ + \_\$Path ] ]};\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={:set Path [ :\ + pick \$Path 0 ([ :len \$Path ] - 1) ]};\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n :log debug (\$0 . \"Validation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n# read parts of a large file\r\ + \n# Description of parameters:\r\ + \n# \$1 - script name for logging and user agent\r\ + \n# \$2 - url to fetch from\r\ + \n# \$3 - check-certificate value for /tool/fetch (true/false)\r\ + \n# \$4 - mode value for /tool/fetch (optional, e.g. \"keep-broken\", \"ht\ + tps-only\", \"http-only\"\r\ + \n# \"no-redirects\", \"background\", \"background-and-keep-broken\",\ + \_\"background-and-https-only\",\r\ + \n# \"background-and-http-only\", \"background-and-no-redirects\", \"\ + background-and-keep-broken-and-https-only\", \"background-and-keep-broken-\ + and-http-only\",\r\ + \n# \"background-and-keep-broken-and-no-redirects\")\r\ + \n# \$5 - fetch method for /tool/fetch (optional, e.g. \"get\", \"head\", \ + \"post\", \"put\", \"patch\", \"delete\")\r\ + \n:set FetchLargeFiles do={\r\ + \n :local RunName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local fetchFile [:tostr \$3];\r\ + \n :local CheckCert [:tostr \$4];\r\ + \n :local fetchMode [:tostr \$5];\r\ + \n :local fetchMethod [:tostr \$6];\r\ + \n :local tmpName;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :set tmpName (\$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum 6 ]);\r\ + \n :local DirName (\"tmpfs/\" . \$tmpName);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n :log error (\$RunName . \" Failed creating directory: \" . \$DirName\ + \_. \"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$fetchFile ] . \"-\ + \" . [ \$GetRandom20CharAlNum 5 ]);\r\ + \n :local Url (\$fetchUrl . \$fetchFile);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$RunName ] }) as-value\ + ;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n :log error (\$RunName . \" Failed downloading from '\" . \$Url . \"'\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n :log error (\$RunName . \" The file downloaded from '\" . \$Url . \"\ + ' did not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n \r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n# \$RmFile \$FileName;\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n :log warning (\$0 . \"Downloading certificate failed, trying without\ + .\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n :log info (\$0 . \" Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local FwAddrListsDirName (\"fw-addr-lists.d/\" . [ /system identity g\ + et name ] . \"/\");\r\ + \n :local FwAddrListsUrl (\$GlobalScriptsUrl . \$FwAddrListsDirName);\r\ + \n :local Index \"index.lst\";\r\ + \n :local FwAddrListTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n :local FetchMode \"https-only\";\r\ + \n :local FetchMethod \"get\";\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchLargeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global Grep;\r\ + \n \r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len [ /log/find where topics=({\"script\"; \"warning\"}) \\\r\ + \n message=(\"\\\$LogPrint: The message is already in log, scripting \ + subsystem may have crashed before!\") ] ] > 0) do={\r\ + \n :log warning (\$ScriptName . \" Scripting subsystem may have crashed\ + , possibly caused by us. Delaying!\");\r\ + \n :delay 5m;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchLargeFiles \$ScriptName \$FwAddrLis\ + tsUrl \$Index \$CheckCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$FwAddrListsUrl . \$Index);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$FwAddrListsUrl . \$Index);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach FwListName in=[ :deserialize \$tmpIndex delimiter=\"\\n\" fro\ + m=dsv options=dsv.plain ] do={\r\ + \n :set FwListName [ :tostr (\$FwListName->0) ];\r\ + \n# :local FwListName;\r\ + \n# :local FwListName (\$FwListFile->0);\r\ + \n# :set FwListName [ \$Grep \$FwListName \"[^0-9a-zA-Z\\\\./:-]\" ];\r\ + \n# :set FwListName ([ :pick \$FwList 0 [ \$FindDelim \$FwList ] ]);\r\ + \n# :set FwListName [ \$Grep \$FwListName \"[^0-9a-zA-Z\\\\./:-]\" ];\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$FwListName);\r\ + \n\r\ + \n# :local Delim [ \$FindDelim \$FwListName ];\r\ + \n# :if (\$Delim = 0) do={ :set FwListName \"\"; };\r\ + \n :if ([ :len \$FwListName ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$FwListName);\r\ + \n }\r\ + \n# :set FwListName [ :pick \$FwListName 0 \$Delim ];\r\ + \n\r\ + \n :local FwListUrl (\$FwAddrListsUrl . \$FwListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$FwAddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchLargeFiles \$ScriptName \$FwAddrLists\ + Url \$FwListName \$CheckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$FwListName . \"', \" . \$I . \". try from: \" . \$FwAddrListsUrl . \ + \$FwListName);\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: \" . \$FwAddrListsUrl . \$FwListName);\r\ + \n } else={\r\ + \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :len \$Data ] 1024 ] . \"B for list '\" . \$FwListName . \"' from: \" \ + . \$FwAddrListsUrl . \$FwListName);\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/20260504154002-Diff-Config.rsc b/MikroMaster/history/20260504/20260504154002-Diff-Config.rsc new file mode 100644 index 0000000..e248400 --- /dev/null +++ b/MikroMaster/history/20260504/20260504154002-Diff-Config.rsc @@ -0,0 +1,23 @@ +2856,2858c2856,2858 +< dont-require-permissions=no name=AM-FwAddrLists owner=vados policy=\ +< ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ +< !rsc by Vados\r\ +--- +> 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\ +2949c2949 +< \n :set FwListName [ :tostr (\$FwListName->0) ];\r\ +--- +> \n# :set FwListName (\$FwList->0);\r\ +2955,2956c2955,2956 +< \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ +< \_. \$FwListName);\r\ +--- +> \n# :log warning (\$ScriptName . \" Parsing address-list index entry: \ +> \" . \$FwListName);\r\ +2962c2962,2963 +< try: \" . \$FwListName);\r\ +--- +> try: \" . \$FwListFile->0);\r\ +> \n :error true; \r\ -- 2.52.0