From f71e5dde2e5a58f6a9e7396fe82dbe404afac84d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 12:00:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 12:00:41. --- .../20260509/20260509120001-Binary.backup | Bin 0 -> 297866 bytes .../20260509/20260509120001-Config.rsc | 4635 +++++++++++++++++ .../20260509/20260509120001-Diff-Config.rsc | 25 + 3 files changed, 4660 insertions(+) create mode 100644 MikroMaster/20260509/20260509120001-Binary.backup create mode 100644 MikroMaster/20260509/20260509120001-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509120001-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509120001-Binary.backup b/MikroMaster/20260509/20260509120001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ca92c5e9324effb513fe993a862173ce1683f005 GIT binary patch literal 297866 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

8@480;nAVr4|p4{C=qvzAA^ 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

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