From 87ea999ba1cb2e1e3991d5d463a50c049cb7f8b9 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 18:20:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 18:20:19. --- .../20260512/20260512182002-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512182002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512182002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260512/20260512182002-Binary.backup create mode 100644 MikroMaster/20260512/20260512182002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512182002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512182002-Binary.backup b/MikroMaster/20260512/20260512182002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..444cf8e3326b7c32cf41b08f1635f7c5f5ed7147 GIT binary patch literal 302653 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 z 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%0ANdR8eWescdiGp~+#?6?yo1f^osgBD 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

YG{su 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 J4Tdki!h}8JtGoaJ literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512182002-Config.rsc b/MikroMaster/20260512/20260512182002-Config.rsc new file mode 100644 index 0000000..b7e915a --- /dev/null +++ b/MikroMaster/20260512/20260512182002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 18:20:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/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.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.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=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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/20260512182002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512182002-Diff-Config.rsc new file mode 100644 index 0000000..2e949f0 --- /dev/null +++ b/MikroMaster/history/20260512/20260512182002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0