From eaf725d79b48c69ad573e49e9783f98e38aea080 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 07:40:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 07:40:44. --- .../20260508/20260508074002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508074002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508074002-Diff-Config.rsc | 8 + 3 files changed, 4648 insertions(+) create mode 100644 MikroMaster/20260508/20260508074002-Binary.backup create mode 100644 MikroMaster/20260508/20260508074002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508074002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508074002-Binary.backup b/MikroMaster/20260508/20260508074002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0363b057f7e150c929d4ae437beb46089b9e00d5 GIT binary patch literal 298264 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508074002-Config.rsc b/MikroMaster/20260508/20260508074002-Config.rsc new file mode 100644 index 0000000..2f2b86a --- /dev/null +++ b/MikroMaster/20260508/20260508074002-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 07:40:04 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=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508074002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508074002-Diff-Config.rsc new file mode 100644 index 0000000..839b1c1 --- /dev/null +++ b/MikroMaster/history/20260508/20260508074002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4293d4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4294a4294 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4297d4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN -- 2.52.0