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

-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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508082002-Config.rsc b/MikroMaster/20260508/20260508082002-Config.rsc new file mode 100644 index 0000000..5e3ae90 --- /dev/null +++ b/MikroMaster/20260508/20260508082002-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 08:20:03 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=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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/20260508082002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508082002-Diff-Config.rsc new file mode 100644 index 0000000..4a1e7e0 --- /dev/null +++ b/MikroMaster/history/20260508/20260508082002-Diff-Config.rsc @@ -0,0 +1,18 @@ +4293d4292 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4295c4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4297c4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4300,4301c4300,4301 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +--- +> add address=104.20.28.254 comment=dou.ua list=FuckRKN +> add address=172.66.164.200 comment=dou.ua list=FuckRKN -- 2.52.0