From f27ab6561d6a54d13fbc6277074c608fd5d7ad78 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 06:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 06:40:18. --- .../20260512/20260512064001-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512064001-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512064001-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260512/20260512064001-Binary.backup create mode 100644 MikroMaster/20260512/20260512064001-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512064001-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512064001-Binary.backup b/MikroMaster/20260512/20260512064001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1460595b22d41719b4ed4ba415cc511f97a3cbf2 GIT binary patch literal 302647 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%0D88h;hoaVgbz@$VWv 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⁣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

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