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