From 5329613686811a2c9fc6f21d67660ab71fa79fde Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 12:01:01 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 12:01:01. --- .../20260507/20260507120002-Binary.backup | Bin 0 -> 295757 bytes .../20260507/20260507120002-Config.rsc | 4618 +++++++++++++++++ .../20260507/20260507120002-Diff-Config.rsc | 3 + 3 files changed, 4621 insertions(+) create mode 100644 MikroMaster/20260507/20260507120002-Binary.backup create mode 100644 MikroMaster/20260507/20260507120002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507120002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507120002-Binary.backup b/MikroMaster/20260507/20260507120002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..6d99632a4cf47787ee0d723240836c46da928a9e GIT binary patch literal 295757 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

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