From a2fc893df3a3a981c7452f6ccad986eca1c8897c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 00:20:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 00:20:19. --- .../20260512/20260512002002-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512002002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512002002-Diff-Config.rsc | 18 + 3 files changed, 4671 insertions(+) create mode 100644 MikroMaster/20260512/20260512002002-Binary.backup create mode 100644 MikroMaster/20260512/20260512002002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512002002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512002002-Binary.backup b/MikroMaster/20260512/20260512002002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..7ae7bd61e24f523ac2742793115c30563e7c7588 GIT binary patch literal 302647 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 Gk3&*O2R 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

mq6^gR37WCI2~ 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%0D9j{ACkpgX#u!O{;($+|4tgiG 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 Dq`x`s literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512002002-Config.rsc b/MikroMaster/20260512/20260512002002-Config.rsc new file mode 100644 index 0000000..bae54ff --- /dev/null +++ b/MikroMaster/20260512/20260512002002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 00: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/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=104.20.28.254 comment=dou.ua list=FuckRKN +add address=172.66.164.200 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512002002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512002002-Diff-Config.rsc new file mode 100644 index 0000000..129a5ec --- /dev/null +++ b/MikroMaster/history/20260512/20260512002002-Diff-Config.rsc @@ -0,0 +1,18 @@ +4299d4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4306,4307c4306,4307 +< add address=104.20.28.254 comment=dou.ua list=FuckRKN +< add address=172.66.164.200 comment=dou.ua list=FuckRKN +--- +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0