From 8710c4d4e95aec0a7626f2f7e2237574e28a96a3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 23:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 23:40:18. --- .../20260511/20260511234001-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511234001-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511234001-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260511/20260511234001-Binary.backup create mode 100644 MikroMaster/20260511/20260511234001-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511234001-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511234001-Binary.backup b/MikroMaster/20260511/20260511234001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..c87fae2342125581ebc9255409e8df10efbe740c GIT binary patch literal 302647 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

j_qnuL7A2^3d{koipWMn!|f@ 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

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