From d28f9d8dd4a818ecd9f728cd8b1d5dba48e73d34 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 01:20:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 01:20:42. --- .../20260508/20260508012001-Binary.backup | Bin 0 -> 297773 bytes .../20260508/20260508012001-Config.rsc | 4644 +++++++++++++++++ .../20260508/20260508012001-Diff-Config.rsc | 8 + 3 files changed, 4652 insertions(+) create mode 100644 MikroMaster/20260508/20260508012001-Binary.backup create mode 100644 MikroMaster/20260508/20260508012001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508012001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508012001-Binary.backup b/MikroMaster/20260508/20260508012001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1d19ccd1c62946003b2c4486509dc07b1054b01b GIT binary patch literal 297773 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

# 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 RD#G~1n1zB-y9;I;CtXVNJud(N literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508012001-Config.rsc b/MikroMaster/20260508/20260508012001-Config.rsc new file mode 100644 index 0000000..e6d19bb --- /dev/null +++ b/MikroMaster/20260508/20260508012001-Config.rsc @@ -0,0 +1,4644 @@ +# 2026-05-08 01:20: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=vados 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 \"dns.google\"\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.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +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=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/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" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input 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 +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=yes 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/20260508012001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508012001-Diff-Config.rsc new file mode 100644 index 0000000..24bc932 --- /dev/null +++ b/MikroMaster/history/20260508/20260508012001-Diff-Config.rsc @@ -0,0 +1,8 @@ +4296d4295 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4297a4297 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4304a4304 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0