From 3d80ee98f74e4c264a15b762f75299bcac874c6b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 04:00:43 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 04:00:43. --- .../20260508/20260508040002-Binary.backup | Bin 0 -> 297701 bytes .../20260508/20260508040002-Config.rsc | 4642 +++++++++++++++++ .../20260508/20260508040002-Diff-Config.rsc | 23 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260508/20260508040002-Binary.backup create mode 100644 MikroMaster/20260508/20260508040002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508040002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508040002-Binary.backup b/MikroMaster/20260508/20260508040002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1335bdca017eaf39320c02620510465a3dc53812 GIT binary patch literal 297701 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%0Aeg#%ySMk#sQyIL5edOR8>WVyBp# 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 z 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˯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%0DZ7=+(x`c#eCt4T%0GUGeEZB(pX=m{PK|DA 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

cf0gCsUm!>q%4npp^4p#1U9!6@kCO8D)eg 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 x#HIgKZbq^4NL)g1gy_=b6Af@udBuM}O literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508040002-Config.rsc b/MikroMaster/20260508/20260508040002-Config.rsc new file mode 100644 index 0000000..5bc135b --- /dev/null +++ b/MikroMaster/20260508/20260508040002-Config.rsc @@ -0,0 +1,4642 @@ +# 2026-05-08 04:00: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.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.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=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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" \ + 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/20260508040002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508040002-Diff-Config.rsc new file mode 100644 index 0000000..7699169 --- /dev/null +++ b/MikroMaster/history/20260508/20260508040002-Diff-Config.rsc @@ -0,0 +1,23 @@ +4296d4295 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4297a4297 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4300d4299 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4301a4301 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4303d4302 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4304a4304 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4306d4305 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4307a4307 +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4404,4405c4404,4406 +< 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 +--- +> 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 -- 2.52.0