From 1acf73120c997f17608e5ca6d26f33b3e56883d5 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 09:00:47 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 09:00:47. --- .../20260508/20260508090001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508090001-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508090001-Diff-Config.rsc | 24 + 3 files changed, 4664 insertions(+) create mode 100644 MikroMaster/20260508/20260508090001-Binary.backup create mode 100644 MikroMaster/20260508/20260508090001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508090001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508090001-Binary.backup b/MikroMaster/20260508/20260508090001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..028b3fb5f7397e00407ed1414f39b6a589c0728a GIT binary patch literal 298264 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 z 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%0AM;vtKr9pg0%LQJV(ew$t!4DTNif#V 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%0DyXEB3NI8T{{*37+r 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%0A@-I0KAXlj>tyOa<^w;^qN1pVL(J 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%0AS} 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¬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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508090001-Config.rsc b/MikroMaster/20260508/20260508090001-Config.rsc new file mode 100644 index 0000000..d673065 --- /dev/null +++ b/MikroMaster/20260508/20260508090001-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 09:00:02 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=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=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 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.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 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" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes 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 disabled=yes +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 \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +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 src-address=\ + 10.30.30.0/24 +/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 check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" 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/20260508090001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508090001-Diff-Config.rsc new file mode 100644 index 0000000..ee5ba36 --- /dev/null +++ b/MikroMaster/history/20260508/20260508090001-Diff-Config.rsc @@ -0,0 +1,24 @@ +4291d4290 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4293c4292 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4295c4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4297c4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4303d4302 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4304a4304 +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN -- 2.52.0