From b806fa2d8051d48778a1217e2d9681717911ccb9 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 14:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 14:20:18. --- .../20260512/20260512142001-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512142001-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512142001-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260512/20260512142001-Binary.backup create mode 100644 MikroMaster/20260512/20260512142001-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512142001-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512142001-Binary.backup b/MikroMaster/20260512/20260512142001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..132763301eaa64df1760a77d7edd930e2ea7d1cd GIT binary patch literal 302653 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 @p4z2Rp#i@A$+}u_RdQUU=6jEc9y74WVS$NNxj1 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

pk!^Ivu|Ej*y*Odud`V~ z4WYTS+pR@^EEzB%q1YkXlWs_PwB?8@QZ$nl:e!lP*kwkF|=ivYLXomjf4 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

$ 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∨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

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