From 6756305488ee1ada50a67355e9bfa03a34d117d1 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 17:40:39 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 17:40:39. --- .../20260508/20260508174001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508174001-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508174001-Diff-Config.rsc | 8 + 3 files changed, 4648 insertions(+) create mode 100644 MikroMaster/20260508/20260508174001-Binary.backup create mode 100644 MikroMaster/20260508/20260508174001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508174001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508174001-Binary.backup b/MikroMaster/20260508/20260508174001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4ab25354a08e1334e25a629e2bf00fe84fb74278 GIT binary patch literal 298264 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

tM4Y*U&BzkeI+7l!4pDcF9H;xQ=0^D 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

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