From dc9cd7528b50a386dd8ee57911c16a10f623dfbc Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 11:40:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 11:40:44. --- .../20260507/20260507114002-Binary.backup | Bin 0 -> 295572 bytes .../20260507/20260507114002-Config.rsc | 4616 +++++++++++++++++ .../20260507/20260507114002-Diff-Config.rsc | 14 + 3 files changed, 4630 insertions(+) create mode 100644 MikroMaster/20260507/20260507114002-Binary.backup create mode 100644 MikroMaster/20260507/20260507114002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507114002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507114002-Binary.backup b/MikroMaster/20260507/20260507114002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..001fc5f255cc88e17f1b3b7dd351b50dcb23589f GIT binary patch literal 295572 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507114002-Config.rsc b/MikroMaster/20260507/20260507114002-Config.rsc new file mode 100644 index 0000000..45caee9 --- /dev/null +++ b/MikroMaster/20260507/20260507114002-Config.rsc @@ -0,0 +1,4616 @@ +# 2026-05-07 11:40:05 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=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=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org list=Trusted-NTP +add address=1.ru.pool.ntp.org list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org list=Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org list=Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=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 acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260507/20260507114002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507114002-Diff-Config.rsc new file mode 100644 index 0000000..c687658 --- /dev/null +++ b/MikroMaster/history/20260507/20260507114002-Diff-Config.rsc @@ -0,0 +1,14 @@ +4278c4278 +< add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +--- +> add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +4281,4283d4280 +< add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +< add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +< add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +4373,4374c4370,4371 +< dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ +< VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +--- +> disabled=yes dst-address=!10.30.30.0/24 log-prefix=VPN-all \ +> new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 -- 2.52.0