From 66feeec5a4a1ec2aa3987515a2ca7cc90fccdd9b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 09:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 09:40:18. --- .../20260510/20260510094002-Binary.backup | Bin 0 -> 302363 bytes .../20260510/20260510094002-Config.rsc | 4653 +++++++++++++++++ .../20260510/20260510094002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260510/20260510094002-Binary.backup create mode 100644 MikroMaster/20260510/20260510094002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510094002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510094002-Binary.backup b/MikroMaster/20260510/20260510094002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..9256bcd8d1af53298b703cf68100f6f1ae1f8dca GIT binary patch literal 302363 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

b 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 z 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%0D3#0q+2Qq!|Qmcy^oN*|*#_Y@bO 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260510/20260510094002-Config.rsc b/MikroMaster/20260510/20260510094002-Config.rsc new file mode 100644 index 0000000..42962c3 --- /dev/null +++ b/MikroMaster/20260510/20260510094002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-10 09:40:02 by RouterOS 7.23beta5 +# 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 +# same mac-address as wlan1 +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 +# same mac-address as ether1 - Unet +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 +# same mac-address as ether1 - Unet +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,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/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 +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set 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,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s 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 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/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" disabled=yes 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!!!! 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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +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" disabled=yes 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=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +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 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=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-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=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" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +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" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/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 +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/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 package update +set channel=development +/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/20260510/20260510094002-Diff-Config.rsc b/MikroMaster/history/20260510/20260510094002-Diff-Config.rsc new file mode 100644 index 0000000..6a253cf --- /dev/null +++ b/MikroMaster/history/20260510/20260510094002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4301d4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4302a4302 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4309d4308 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4311c4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0