From ef1b0059e09ce5972936ea08e5388e23ea11b98b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 18:00:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 18:00:19. --- .../20260512/20260512180002-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512180002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512180002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260512/20260512180002-Binary.backup create mode 100644 MikroMaster/20260512/20260512180002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512180002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512180002-Binary.backup b/MikroMaster/20260512/20260512180002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..3e9526f21de2e0ddd807c3ea6282a49d3d0da407 GIT binary patch literal 302653 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�s?*dw?IwKWmLWi`H{-!hS{swinCp7~3YLh|| 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℘Q(Z(dsLLMsyNE7>S9#2Oeb!Nt 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 J1MjDm-p-D?-#h>S literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512180002-Config.rsc b/MikroMaster/20260512/20260512180002-Config.rsc new file mode 100644 index 0000000..66a78eb --- /dev/null +++ b/MikroMaster/20260512/20260512180002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 18:00:03 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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.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.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.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 disabled=yes +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" disabled=yes \ + 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="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +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/20260512/20260512180002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512180002-Diff-Config.rsc new file mode 100644 index 0000000..5364cc9 --- /dev/null +++ b/MikroMaster/history/20260512/20260512180002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4297d4296 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4298a4298 +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4301d4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4303c4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0