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

iL1cR{ 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�i$ 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

OY~T}{2qSKns}vZ|c+ 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�qx^_f&FA=_y@|3YuQW)@}Wnig!e`jWCw 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

>KKikDpP=(7}1=lS^!??4u`h?)AQB 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508112001-Config.rsc b/MikroMaster/20260508/20260508112001-Config.rsc new file mode 100644 index 0000000..85ef68c --- /dev/null +++ b/MikroMaster/20260508/20260508112001-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 11:20:02 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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.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.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" 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/20260508112001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508112001-Diff-Config.rsc new file mode 100644 index 0000000..6843f5f --- /dev/null +++ b/MikroMaster/history/20260508/20260508112001-Diff-Config.rsc @@ -0,0 +1,16 @@ +4293d4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4294a4294 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4297d4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4303d4302 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4305c4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0