From 5baf5cebb56c35df67befd3f573a5cdce48d2fd3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 03:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 03:00:18. --- .../20260511/20260511030002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511030002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511030002-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260511/20260511030002-Binary.backup create mode 100644 MikroMaster/20260511/20260511030002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511030002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511030002-Binary.backup b/MikroMaster/20260511/20260511030002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b6ceb3a37a2fc5170c04e547f1ac195466e3218d GIT binary patch literal 302647 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�X*RxvhFKwh4kOYU8#S1TI@^dg_6ORwz9Ik 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 z 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 DQ9QmW literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511030002-Config.rsc b/MikroMaster/20260511/20260511030002-Config.rsc new file mode 100644 index 0000000..cf91528 --- /dev/null +++ b/MikroMaster/20260511/20260511030002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 03:00:03 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.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260511/20260511030002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511030002-Diff-Config.rsc new file mode 100644 index 0000000..b070a4b --- /dev/null +++ b/MikroMaster/history/20260511/20260511030002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4299d4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4301c4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4302a4302 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN -- 2.52.0