From 175b5e82380ef8ea96ef34265a67dfd0939725fa Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 12:20:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 12:20:41. --- .../20260509/20260509122002-Binary.backup | Bin 0 -> 297576 bytes .../20260509/20260509122002-Config.rsc | 4632 +++++++++++++++++ .../20260509/20260509122002-Diff-Config.rsc | 11 + 3 files changed, 4643 insertions(+) create mode 100644 MikroMaster/20260509/20260509122002-Binary.backup create mode 100644 MikroMaster/20260509/20260509122002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509122002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509122002-Binary.backup b/MikroMaster/20260509/20260509122002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..78d560a4a9359c2b2c3ff14a20725188b54836dd GIT binary patch literal 297576 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509122002-Config.rsc b/MikroMaster/20260509/20260509122002-Config.rsc new file mode 100644 index 0000000..9513f7e --- /dev/null +++ b/MikroMaster/20260509/20260509122002-Config.rsc @@ -0,0 +1,4632 @@ +# 2026-05-09 12:20:04 by RouterOS 7.22.1 +# 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 +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 +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 +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,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" 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!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua 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=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" 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=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +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=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=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +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-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +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 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" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +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" 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 check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system 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/20260509/20260509122002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509122002-Diff-Config.rsc new file mode 100644 index 0000000..95f458b --- /dev/null +++ b/MikroMaster/history/20260509/20260509122002-Diff-Config.rsc @@ -0,0 +1,11 @@ +4297d4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301,4304 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +> add address=66.254.114.79 comment=youporn.com list=FuckRKN +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN -- 2.52.0