From 8e6c2b20b1596fd202872054d185888f13d7520e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 21:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 21:20:18. --- .../20260511/20260511212002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511212002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511212002-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260511/20260511212002-Binary.backup create mode 100644 MikroMaster/20260511/20260511212002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511212002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511212002-Binary.backup b/MikroMaster/20260511/20260511212002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..c960cf1dc8e5885b5adca6f74313cdd355a4268e GIT binary patch literal 302647 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%0A0j@Ym8Ay+JD#~EqR~`>g&gpj1F{7U8 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 DXYVJe literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511212002-Config.rsc b/MikroMaster/20260511/20260511212002-Config.rsc new file mode 100644 index 0000000..2d9321e --- /dev/null +++ b/MikroMaster/20260511/20260511212002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 21:20: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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 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.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260511/20260511212002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511212002-Diff-Config.rsc new file mode 100644 index 0000000..6c8a1cf --- /dev/null +++ b/MikroMaster/history/20260511/20260511212002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4297d4296 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4298a4298 +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4301d4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4302a4302 +> add address=188.114.96.1 comment=lostfilm.tv 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 -- 2.52.0