From 63c0877513812872d2406c2dda3725545409a7e9 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 14:40:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 14:40:41. --- .../20260508/20260508144002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508144002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508144002-Diff-Config.rsc | 20 + 3 files changed, 4660 insertions(+) create mode 100644 MikroMaster/20260508/20260508144002-Binary.backup create mode 100644 MikroMaster/20260508/20260508144002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508144002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508144002-Binary.backup b/MikroMaster/20260508/20260508144002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..80c38efbe6e982af29ec135ce2149d3ed3e75fb2 GIT binary patch literal 298264 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%0Dytgym=oaVyhlUO|!2;fSQJ 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

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