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