From 599e00074b80c1d8e74eb90edb19e3a0336c3eb7 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 15:40:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 15:40:42. --- .../20260509/20260509154001-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509154001-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509154001-Diff-Config.rsc | 12 + 3 files changed, 4651 insertions(+) create mode 100644 MikroMaster/20260509/20260509154001-Binary.backup create mode 100644 MikroMaster/20260509/20260509154001-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509154001-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509154001-Binary.backup b/MikroMaster/20260509/20260509154001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..449a4389e573f9987c0a773462b0439293620e44 GIT binary patch literal 298264 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

c(B5apP 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�<7+Kr@&UXwtm96%3Njd^3}K#G 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

n6DU!GU+dlBfzMg({Huop*|` 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¾uK7G6 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

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