From 2a4e5df3ebe4114acb89611f16578f44cb92992b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 02:40:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 02:40:42. --- .../20260508/20260508024002-Binary.backup | Bin 0 -> 297788 bytes .../20260508/20260508024002-Config.rsc | 4643 +++++++++++++++++ .../20260508/20260508024002-Diff-Config.rsc | 12 + 3 files changed, 4655 insertions(+) create mode 100644 MikroMaster/20260508/20260508024002-Binary.backup create mode 100644 MikroMaster/20260508/20260508024002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508024002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508024002-Binary.backup b/MikroMaster/20260508/20260508024002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..dfd597fed3838a68fa1b57b71d8425bfacb0417c GIT binary patch literal 297788 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

0(?*If`W^$34kJ&(hhn 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 JN|Jp9eT@+t1aBi=kyQ%Ew=vfP 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

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