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

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