From fa258e4de54fde7c733c61fac9a6ef9f08255053 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 15:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 15:20:18. --- .../20260510/20260510152001-Binary.backup | Bin 0 -> 302363 bytes .../20260510/20260510152001-Config.rsc | 4653 +++++++++++++++++ .../20260510/20260510152001-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260510/20260510152001-Binary.backup create mode 100644 MikroMaster/20260510/20260510152001-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510152001-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510152001-Binary.backup b/MikroMaster/20260510/20260510152001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1dc5e0164c661877402d0eb4de5b57991e58eebe GIT binary patch literal 302363 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
CJE)|WGnaQWtdOFw;&ENn3S6qR@OKQNbK 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%0Dmg%VG^r0_3*-(l}~3OI&);L_p~^| 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260510/20260510152001-Config.rsc b/MikroMaster/20260510/20260510152001-Config.rsc new file mode 100644 index 0000000..75a117d --- /dev/null +++ b/MikroMaster/20260510/20260510152001-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-10 15:20:02 by RouterOS 7.23beta5 +# 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 +# same mac-address as wlan1 +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 +# same mac-address as ether1 - Unet +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 +# same mac-address as ether1 - Unet +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,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/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 +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set 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,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s 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 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/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" disabled=yes 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!!!! 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.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.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=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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=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" disabled=yes 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=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +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 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=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-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=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 passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/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" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +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" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/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 +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/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 package update +set channel=development +/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/20260510/20260510152001-Diff-Config.rsc b/MikroMaster/history/20260510/20260510152001-Diff-Config.rsc new file mode 100644 index 0000000..4c22ffa --- /dev/null +++ b/MikroMaster/history/20260510/20260510152001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4299d4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0