From 1239ef13435eb50d90fca3ae0f893357e492635c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 10:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 10:00:18. --- .../20260512/20260512100002-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512100002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512100002-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260512/20260512100002-Binary.backup create mode 100644 MikroMaster/20260512/20260512100002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512100002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512100002-Binary.backup b/MikroMaster/20260512/20260512100002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..022d75c06a7249dfde230ae7bf311ce79b4359da GIT binary patch literal 302647 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∈CcPnbVQV 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� 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 Dq~O9G literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512100002-Config.rsc b/MikroMaster/20260512/20260512100002-Config.rsc new file mode 100644 index 0000000..8ded78a --- /dev/null +++ b/MikroMaster/20260512/20260512100002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 10:00:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 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/20260512100002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512100002-Diff-Config.rsc new file mode 100644 index 0000000..7688d46 --- /dev/null +++ b/MikroMaster/history/20260512/20260512100002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4297d4296 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4299c4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +--- +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4300a4300 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN -- 2.52.0