From c0ca6b804df0b26de126b5e887784bd71ffbccf7 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 11:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 11:40:18. --- .../20260512/20260512114002-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512114002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512114002-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260512/20260512114002-Binary.backup create mode 100644 MikroMaster/20260512/20260512114002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512114002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512114002-Binary.backup b/MikroMaster/20260512/20260512114002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..856137d8483a79d0899c44cbe0266d570928f961 GIT binary patch literal 302653 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�{*{tCD=6wxAZlju{ySgOap(J3Wv$Y|5mm# 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 J0HZP9Sqa9oaH{|S literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512114002-Config.rsc b/MikroMaster/20260512/20260512114002-Config.rsc new file mode 100644 index 0000000..56878cb --- /dev/null +++ b/MikroMaster/20260512/20260512114002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 11:40: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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.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.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.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.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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/20260512/20260512114002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512114002-Diff-Config.rsc new file mode 100644 index 0000000..f68aefb --- /dev/null +++ b/MikroMaster/history/20260512/20260512114002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4301d4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4302a4302 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4309d4308 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4310a4310 +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN -- 2.52.0