From 0e5f4ab77b7e9ec210ec28c53f2b8641be011c38 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 01:40:47 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 01:40:47. --- .../20260508/20260508014002-Binary.backup | Bin 0 -> 297773 bytes .../20260508/20260508014002-Config.rsc | 4644 +++++++++++++++++ .../20260508/20260508014002-Diff-Config.rsc | 14 + 3 files changed, 4658 insertions(+) create mode 100644 MikroMaster/20260508/20260508014002-Binary.backup create mode 100644 MikroMaster/20260508/20260508014002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508014002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508014002-Binary.backup b/MikroMaster/20260508/20260508014002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0924e4ebe0b7174f7a38b9326b2a01298fd24fcc GIT binary patch literal 297773 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
  • yr~HQzw#5^aZ4g9efB%?wysLw%w6@3u8ms*gYn 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≥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

    WbEAw$cO?!MbD`Yo#{Wp~*uR^cqeh+Vo(9Fi& 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

    a2FrtQ}O;$s=w*y$dR`QdR; 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%0D9CrpR$swn3i$6aj2Bwe=RT(8DAH89 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�>+ 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508014002-Config.rsc b/MikroMaster/20260508/20260508014002-Config.rsc new file mode 100644 index 0000000..8792503 --- /dev/null +++ b/MikroMaster/20260508/20260508014002-Config.rsc @@ -0,0 +1,4644 @@ +# 2026-05-08 01:40:04 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=vados 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 \"dns.google\"\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 public-key="64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" \ + responder=yes +/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=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.33 comment=AMSTER name=amster.vados.ru type=A +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 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=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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +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 disabled=yes 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 disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes 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 +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/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=yes 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" 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/20260508/20260508014002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508014002-Diff-Config.rsc new file mode 100644 index 0000000..a8c3f9e --- /dev/null +++ b/MikroMaster/history/20260508/20260508014002-Diff-Config.rsc @@ -0,0 +1,14 @@ +3537,3538c3537,3538 +< MikroVados public-key="64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" \ +< responder=yes +--- +> MikroVados persistent-keepalive=10s public-key=\ +> "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +4296d4295 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4297a4297 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4304a4304 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN -- 2.52.0