From 3f7c1a16308bbb2f513dac5963f392e4f8b92464 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 18:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 18:20:18. --- .../20260511/20260511182002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511182002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511182002-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260511/20260511182002-Binary.backup create mode 100644 MikroMaster/20260511/20260511182002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511182002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511182002-Binary.backup b/MikroMaster/20260511/20260511182002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..badf1917f54a7539d4f76eeba63a5f17a1b68f84 GIT binary patch literal 302647 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
lpkj$XjFQOYRmp!h@&im# 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

k7hq}Sj~YPUPMuc>uuMhiJ9upJ@60r@45#5O5a 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�l#o6T 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 DfYvTm literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511182002-Config.rsc b/MikroMaster/20260511/20260511182002-Config.rsc new file mode 100644 index 0000000..023c966 --- /dev/null +++ b/MikroMaster/20260511/20260511182002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 18: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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=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/20260511/20260511182002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511182002-Diff-Config.rsc new file mode 100644 index 0000000..3d827d4 --- /dev/null +++ b/MikroMaster/history/20260511/20260511182002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4301d4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4302a4302 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN -- 2.52.0