From fb08ed3d3840a12d0426626ef88e9ccc82c13a42 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 02:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 02:20:18. --- .../20260511/20260511022002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511022002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511022002-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260511/20260511022002-Binary.backup create mode 100644 MikroMaster/20260511/20260511022002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511022002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511022002-Binary.backup b/MikroMaster/20260511/20260511022002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..9fc33cbf3a41641db14a0760e1fa09065002871b GIT binary patch literal 302647 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�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

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