From 21759dad6626a89601791426a1c9a702be6324ae Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 05:20:16 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 05:20:16. --- .../20260510/20260510052001-Binary.backup | Bin 0 -> 302173 bytes .../20260510/20260510052001-Config.rsc | 4647 +++++++++++++++++ .../20260510/20260510052001-Diff-Config.rsc | 20 + 3 files changed, 4667 insertions(+) create mode 100644 MikroMaster/20260510/20260510052001-Binary.backup create mode 100644 MikroMaster/20260510/20260510052001-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510052001-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510052001-Binary.backup b/MikroMaster/20260510/20260510052001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..d0c7b4314ced54ea71e40528c15fba72c5c8a284 GIT binary patch literal 302173 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

9tvELQhT2S<8b)pL%|HOT`5M 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ϕo2p+c_5(aos@IB);}|2rZfLRC#~I$$*1 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 Hof|h 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

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