From 0d958360df24ac2ff680c5ade84e198968e91843 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 21:40:38 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 21:40:38. --- .../20260507/20260507214002-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507214002-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507214002-Diff-Config.rsc | 10 + 3 files changed, 4654 insertions(+) create mode 100644 MikroMaster/20260507/20260507214002-Binary.backup create mode 100644 MikroMaster/20260507/20260507214002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507214002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507214002-Binary.backup b/MikroMaster/20260507/20260507214002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..46c85141708461a33f32b241a7d8182056240b2a GIT binary patch literal 297773 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 q!*y%I@D<3!9`Ncw|UIs!D@Eie~_^ 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
(V5NB;iR`I{q@mb$tjm^aG5MT_M%O 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%0D&ag0Q&k|HUpMTj-kmug>uap2g$1eo5H=~ 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

yg1gfT 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 R>x%mT7XF`K10;OeEqtxJAsGMw literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507214002-Config.rsc b/MikroMaster/20260507/20260507214002-Config.rsc new file mode 100644 index 0000000..6903c04 --- /dev/null +++ b/MikroMaster/20260507/20260507214002-Config.rsc @@ -0,0 +1,4644 @@ +# 2026-05-07 21:40:03 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=vados 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 \"dns.google\"\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.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=172.66.164.200 comment=dou.ua list=FuckRKN +add address=104.20.28.254 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input 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 +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=yes 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/20260507/20260507214002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507214002-Diff-Config.rsc new file mode 100644 index 0000000..0d1888e --- /dev/null +++ b/MikroMaster/history/20260507/20260507214002-Diff-Config.rsc @@ -0,0 +1,10 @@ +4303,4304c4303,4304 +< add address=172.66.164.200 comment=dou.ua list=FuckRKN +< add address=104.20.28.254 comment=dou.ua list=FuckRKN +--- +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4308d4307 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4309a4309 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0