From e00b025ab3f79cf651cc642d1cbbad6f7de039b0 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 15:40:17 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 15:40:17. --- .../20260510/20260510154001-Binary.backup | Bin 0 -> 302363 bytes .../20260510/20260510154001-Config.rsc | 4653 +++++++++++++++++ .../20260510/20260510154001-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260510/20260510154001-Binary.backup create mode 100644 MikroMaster/20260510/20260510154001-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510154001-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510154001-Binary.backup b/MikroMaster/20260510/20260510154001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..dcd1c60f98f9385ba3ee9f5b405eb768632204cc GIT binary patch literal 302363 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%0Dc>bkbV)9@A!Vk2%9GB9*-@vwD%Y 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�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%0DJ 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
-mE)jMy%}K1Xox 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260510/20260510154001-Config.rsc b/MikroMaster/20260510/20260510154001-Config.rsc new file mode 100644 index 0000000..ce012dd --- /dev/null +++ b/MikroMaster/20260510/20260510154001-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-10 15:40:02 by RouterOS 7.23beta5 +# 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 +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +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 +# same mac-address as ether1 - Unet +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,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/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 +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set 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,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s 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 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/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" disabled=yes 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!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=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=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=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" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +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 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=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN 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=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + 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=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" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/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" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +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" disabled=yes \ + 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 +/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 +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/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 package update +set channel=development +/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/20260510/20260510154001-Diff-Config.rsc b/MikroMaster/history/20260510/20260510154001-Diff-Config.rsc new file mode 100644 index 0000000..ff3c800 --- /dev/null +++ b/MikroMaster/history/20260510/20260510154001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4301d4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4303c4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4309d4308 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4310a4310 +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN -- 2.52.0