From dc188ae56b4d3a6e81ae49fa929b32db88f27c5a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 01:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 01:20:18. --- .../20260512/20260512012001-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512012001-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512012001-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260512/20260512012001-Binary.backup create mode 100644 MikroMaster/20260512/20260512012001-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512012001-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512012001-Binary.backup b/MikroMaster/20260512/20260512012001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..3e61b2fa100280bff051e39fe5556d5f4ec81bfb GIT binary patch literal 302647 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

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