From afaaf160ade59c3694189c0b90503f236ce276af Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 23:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 23:20:18. --- .../20260510/20260510232002-Binary.backup | Bin 0 -> 302647 bytes .../20260510/20260510232002-Config.rsc | 4653 +++++++++++++++++ .../20260510/20260510232002-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260510/20260510232002-Binary.backup create mode 100644 MikroMaster/20260510/20260510232002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510232002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510232002-Binary.backup b/MikroMaster/20260510/20260510232002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b1da2a80cd6f47124b02d5f52248f8a7cd2b63ad GIT binary patch literal 302647 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 z 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

oJ_n;sXM;2HE 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 Ds>)8B literal 0 HcmV?d00001 diff --git a/MikroMaster/20260510/20260510232002-Config.rsc b/MikroMaster/20260510/20260510232002-Config.rsc new file mode 100644 index 0000000..51d019b --- /dev/null +++ b/MikroMaster/20260510/20260510232002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-10 23: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/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# 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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=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=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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/20260510/20260510232002-Diff-Config.rsc b/MikroMaster/history/20260510/20260510232002-Diff-Config.rsc new file mode 100644 index 0000000..f778a37 --- /dev/null +++ b/MikroMaster/history/20260510/20260510232002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4303d4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4311d4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0