From 8ef459f3d85e6453fde028b6e8db6935c2a81946 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 23:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 23:00:18. --- .../20260511/20260511230002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511230002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511230002-Diff-Config.rsc | 20 + 3 files changed, 4673 insertions(+) create mode 100644 MikroMaster/20260511/20260511230002-Binary.backup create mode 100644 MikroMaster/20260511/20260511230002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511230002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511230002-Binary.backup b/MikroMaster/20260511/20260511230002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..2cceee622cee0eacd8570c8fa93850043d7c4ebc GIT binary patch literal 302647 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%0DE}nuvbp2+sl#Y|4NrmRiHtu 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 H#Z|wB@vegwrj+=K_v?0NvdLHlm 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�kOy1%!LIijCXU&GVXf{l| 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

PR=L>$_^j&U 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 DRQz3u literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511230002-Config.rsc b/MikroMaster/20260511/20260511230002-Config.rsc new file mode 100644 index 0000000..cc0a6da --- /dev/null +++ b/MikroMaster/20260511/20260511230002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 23:00: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.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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/20260511/20260511230002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511230002-Diff-Config.rsc new file mode 100644 index 0000000..ba4aa2a --- /dev/null +++ b/MikroMaster/history/20260511/20260511230002-Diff-Config.rsc @@ -0,0 +1,20 @@ +4297d4296 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4299c4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4300a4300 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4309d4308 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4311c4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0