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