From 87257f904261d29d657ca7c22ea20aea1d4cc07a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 07:00:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 07:00:42. --- .../20260508/20260508070001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508070001-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508070001-Diff-Config.rsc | 16 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260508/20260508070001-Binary.backup create mode 100644 MikroMaster/20260508/20260508070001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508070001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508070001-Binary.backup b/MikroMaster/20260508/20260508070001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..84630453fc8a57d0150c095f207ab32e2456ad8e GIT binary patch literal 298264 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

2-Tq2Uc-E{j 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 o48sD)w!1lbz(y*}p!G(^b literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508070001-Config.rsc b/MikroMaster/20260508/20260508070001-Config.rsc new file mode 100644 index 0000000..499d8c9 --- /dev/null +++ b/MikroMaster/20260508/20260508070001-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 07:00:02 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 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m 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=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! 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 disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes 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 disabled=yes +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 \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +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 src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" 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 check-gateway=ping 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" 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/20260508/20260508070001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508070001-Diff-Config.rsc new file mode 100644 index 0000000..4bb8ea4 --- /dev/null +++ b/MikroMaster/history/20260508/20260508070001-Diff-Config.rsc @@ -0,0 +1,16 @@ +4291d4290 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4292a4292 +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4295d4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4296a4296 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4303d4302 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4304a4304 +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN -- 2.52.0