From 3bcfee69f86ac6869b9963216045a1f59139b43c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 03:20:40 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 03:20:40. --- .../20260508/20260508032002-Binary.backup | Bin 0 -> 297701 bytes .../20260508/20260508032002-Config.rsc | 4643 +++++++++++++++++ .../20260508/20260508032002-Diff-Config.rsc | 44 + 3 files changed, 4687 insertions(+) create mode 100644 MikroMaster/20260508/20260508032002-Binary.backup create mode 100644 MikroMaster/20260508/20260508032002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508032002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508032002-Binary.backup b/MikroMaster/20260508/20260508032002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ad46ff06b2e9f7724379d3627ec9423c511771d3 GIT binary patch literal 297701 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

`uRv!?%R0wY3J-7%JafwHu!=pF4 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508032002-Config.rsc b/MikroMaster/20260508/20260508032002-Config.rsc new file mode 100644 index 0000000..a28d69f --- /dev/null +++ b/MikroMaster/20260508/20260508032002-Config.rsc @@ -0,0 +1,4643 @@ +# 2026-05-08 03:20: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=vados 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 \"dns.google\"\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=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.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.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add 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/20260508032002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508032002-Diff-Config.rsc new file mode 100644 index 0000000..663bfb0 --- /dev/null +++ b/MikroMaster/history/20260508/20260508032002-Diff-Config.rsc @@ -0,0 +1,44 @@ +3535c3535 +< add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ +--- +> add allowed-address=0.0.0.0/0 client-allowed-address=::/128 endpoint-address=\ +4296d4295 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4297a4297 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4300d4299 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4301a4301 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4303d4302 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4304a4304 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4385,4387d4384 +< add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ +< out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ +< tcp-flags=syn tcp-mss=1381-65535 +4404,4406c4401,4402 +< disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ +< log-prefix=VPN-all new-routing-mark=To-VPN passthrough=no src-address=\ +< 10.30.30.0/24 +--- +> dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ +> VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +4408,4409c4404,4408 +< 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ +< 10.30.30.0/24 +--- +> 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ +> src-address=10.30.30.0/24 +> add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ +> out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ +> tcp-flags=syn tcp-mss=1381-65535 +4540,4541c4539,4542 +< 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 +--- +> add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ +> To-VPN scope=30 target-scope=10 +> add blackhole disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG \ +> routing-table=To-VPN scope=30 target-scope=10 -- 2.52.0