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

$$cvG`ZyjpHfUPpIZb4PUYDkRZt3{ZH{cksB_X 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

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