From 6326ef4e3f42678b9b68d1267663bd9b96f32ca6 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 11:40:40 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 11:40:40. --- .../20260508/20260508114001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508114001-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508114001-Diff-Config.rsc | 16 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260508/20260508114001-Binary.backup create mode 100644 MikroMaster/20260508/20260508114001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508114001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508114001-Binary.backup b/MikroMaster/20260508/20260508114001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..3639fcb42f4392692918c7f7ba73ebfd272ce40b GIT binary patch literal 298264 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�FwKjS`Ldn2IP325@%aO_Cqf1qXoA* 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

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

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