From 03f74649f69bd1c2246f99dc28f65ffc499b845a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 07:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 07:20:18. --- .../20260512/20260512072001-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512072001-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512072001-Diff-Config.rsc | 4 + 3 files changed, 4657 insertions(+) create mode 100644 MikroMaster/20260512/20260512072001-Binary.backup create mode 100644 MikroMaster/20260512/20260512072001-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512072001-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512072001-Binary.backup b/MikroMaster/20260512/20260512072001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..f45531b0e53bd6a195b294047bbb69acb47f2bb9 GIT binary patch literal 302647 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 z%0A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 -?)>(b6< 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

*~m;(=ez!SmyDpK~IaM*!|g}?|3=H=1_Nu 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

9BM`L3~YKi_S4y*>C6yS~> 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

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