From 4e889af806d90c6c8b255a1e2005b45b1a9fe6a4 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 08:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 08:00:18. --- .../20260511/20260511080002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511080002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511080002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260511/20260511080002-Binary.backup create mode 100644 MikroMaster/20260511/20260511080002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511080002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511080002-Binary.backup b/MikroMaster/20260511/20260511080002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..dcbdfdd4ff03f9fd7d401fdb229b728696178727 GIT binary patch literal 302647 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

Yq&_;y3{$l?@VNw`TI7>M0~H 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 DhYNf_ literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511080002-Config.rsc b/MikroMaster/20260511/20260511080002-Config.rsc new file mode 100644 index 0000000..f10ac17 --- /dev/null +++ b/MikroMaster/20260511/20260511080002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 08:00:02 by RouterOS 7.23beta5 +# 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 +# same mac-address as wlan1 +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 +# same mac-address as ether1 - Unet +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 +# same mac-address as ether1 - Unet +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,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/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 +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set 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,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s 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 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/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" disabled=yes 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!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.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=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=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" disabled=yes 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=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +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 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=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-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +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 passthrough=no +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 passthrough=no \ + 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" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +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" disabled=yes \ + 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 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 +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/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 package update +set channel=development +/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/20260511/20260511080002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511080002-Diff-Config.rsc new file mode 100644 index 0000000..647fe19 --- /dev/null +++ b/MikroMaster/history/20260511/20260511080002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4299d4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4301c4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4302a4302 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0