From 663621619d2396f5b33e14ad6725d529e8c6691f Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 03:40:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 03:40:42. --- .../20260508/20260508034002-Binary.backup | Bin 0 -> 297701 bytes .../20260508/20260508034002-Config.rsc | 4643 +++++++++++++++++ .../20260508/20260508034002-Diff-Config.rsc | 16 + 3 files changed, 4659 insertions(+) create mode 100644 MikroMaster/20260508/20260508034002-Binary.backup create mode 100644 MikroMaster/20260508/20260508034002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508034002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508034002-Binary.backup b/MikroMaster/20260508/20260508034002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..a5b5478ead972a8ad932c4f0d769f754a6b5a24e GIT binary patch literal 297701 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%0DIx4E5NqL|9`b?D;*`RT;9A%9pS4&$ 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508034002-Config.rsc b/MikroMaster/20260508/20260508034002-Config.rsc new file mode 100644 index 0000000..9fdf861 --- /dev/null +++ b/MikroMaster/20260508/20260508034002-Config.rsc @@ -0,0 +1,4643 @@ +# 2026-05-08 03:40:03 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 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 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.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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=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-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" \ + disabled=yes 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 src-address=\ + 10.30.30.0/24 +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 check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508034002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508034002-Diff-Config.rsc new file mode 100644 index 0000000..8c7241d --- /dev/null +++ b/MikroMaster/history/20260508/20260508034002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4296d4295 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4298c4297 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4300c4299 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4301a4301 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4308d4307 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4309a4309 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0