From cb6eb3a87fc715726cafcfa39d75b0494de445d1 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 5 May 2026 11:40:23 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 05 11:40:23. --- .../20260505/20260505114002-Binary.backup | Bin 0 -> 270775 bytes .../20260505/20260505114002-Config.rsc | 4506 +++++++++++++++++ .../20260505/20260505114002-Diff-Config.rsc | 17 + 3 files changed, 4523 insertions(+) create mode 100644 MikroMaster/20260505/20260505114002-Binary.backup create mode 100644 MikroMaster/20260505/20260505114002-Config.rsc create mode 100644 MikroMaster/history/20260505/20260505114002-Diff-Config.rsc diff --git a/MikroMaster/20260505/20260505114002-Binary.backup b/MikroMaster/20260505/20260505114002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..79ec60f9529db5f13c3181b9e517b602662658d1 GIT binary patch literal 270775 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

;`9=;jmKZ{6i=ebQD=DLJ?#`HO2zB`Q_HiGT&Zw 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≪z$syyUs%qIp6Z%z(f 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260505/20260505114002-Config.rsc b/MikroMaster/20260505/20260505114002-Config.rsc new file mode 100644 index 0000000..0b75743 --- /dev/null +++ b/MikroMaster/20260505/20260505114002-Config.rsc @@ -0,0 +1,4506 @@ +# 2026-05-05 11:40:03 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 SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\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 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 :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 } else={\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 (\$GlobalScriptsUrl . \"certs/ipall/\" . \$CertFileN\ + ame) dst-path=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :delay 1s;\r\ + \n };\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\" } 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 \"\";\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 {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\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/614/a7992fc8\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 01:00: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# read parts of a large file\r\ + \n# Description of parameters:\r\ + \n# \$1 - script name for logging and user agent\r\ + \n# \$2 - url to fetch from\r\ + \n# \$3 - check-certificate value for /tool/fetch (true/false)\r\ + \n# \$4 - mode value for /tool/fetch (optional, e.g. \"keep-broken\", \"ht\ + tps-only\", \"http-only\"\r\ + \n# \"no-redirects\", \"background\", \"background-and-keep-broken\",\ + \_\"background-and-https-only\",\r\ + \n# \"background-and-http-only\", \"background-and-no-redirects\", \"\ + background-and-keep-broken-and-https-only\", \"background-and-keep-broken-\ + and-http-only\",\r\ + \n# \"background-and-keep-broken-and-no-redirects\")\r\ + \n# \$5 - fetch method for /tool/fetch (optional, e.g. \"get\", \"head\", \ + \"post\", \"put\", \"patch\", \"delete\")\r\ + \n#:set FetchLargeFiles do={\r\ + \n# :local RunName [:tostr \$1];\r\ + \n# :local fetchUrl [:tostr \$2];\r\ + \n# :local fetchFile [:tostr \$3];\r\ + \n# :local CheckCert [:tostr \$4];\r\ + \n# :local fetchMode [:tostr \$5];\r\ + \n# :local fetchMethod [:tostr \$6];\r\ + \n# :local tmpName;\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-\ + without-crl\" ];\r\ + \n#\r\ + \n# :set tmpName (\$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum 6 ]);\r\ + \n# :local DirName (\"tmpfs/\" . \$tmpName);\r\ + \n# :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n# :log error (\$RunName . \" Failed creating directory: \" . \$DirNam\ + e . \"!\");\r\ + \n# :return false;\r\ + \n# }\r\ + \n#\r\ + \n# :local FileName (\$DirName . \"/\" . [ \$CleanName \$fetchFile ] . \"\ + -\" . [ \$GetRandom20CharAlNum 5 ]);\r\ + \n# :local Url (\$fetchUrl . \$fetchFile);\r\ + \n# :onerror Err {\r\ + \n# /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName\ + \_\\\r\ + \n# http-header-field=({ [ \$FetchUserAgentStr \$RunName ] }) as-valu\ + e;\r\ + \n# } do={\r\ + \n# :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n# \$RmFile \$FileName;\r\ + \n# }\r\ + \n# :log error (\$RunName . \" 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# :log error (\$RunName . \" 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=3\ + 2768 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## \$RmFile \$FileName;\r\ + \n# \$RmDir \$DirName;\r\ + \n# :return \$Return;\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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\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 :local ReadFile (\"tmpfs/\" .\$tmpIndex);\r\ + \n :local filebody [/file/get \$ReadFile contents];\r\ + \n:foreach fwList in=[:deserialize \$ReadFile delimiter=\"\\n\" from=dsv o\ + ptions=dsv.plain] do={\r\ + \n :log error \$fwList;\r\ + \n}\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 debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :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" +/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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +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 +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +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,dns,www,api,reverse-proxy" crl-store=system +/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=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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 enabled=yes 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 interface="ether1 - Unet" name=client1 \ + use-peer-dns=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.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +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 comment=AMSTER name=amster.vados.ru 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=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.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" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" 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=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 +/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 list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=tcp +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="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +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=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +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-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="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat dst-port=80 in-interface="ether1 - Unet" \ + protocol=tcp to-addresses=10.30.30.33 to-ports=80 +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=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 log=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +/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 routerboard settings +# Warning: cpu not running at default frequency +set cpu-frequency=700MHz +/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/20260505/20260505114002-Diff-Config.rsc b/MikroMaster/history/20260505/20260505114002-Diff-Config.rsc new file mode 100644 index 0000000..12e3ff4 --- /dev/null +++ b/MikroMaster/history/20260505/20260505114002-Diff-Config.rsc @@ -0,0 +1,17 @@ +4165d4164 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4166a4166 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4169,4180d4168 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +< add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +< add address=66.254.114.79 comment=youporn.com list=FuckRKN +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +< add address=149.154.167.99 comment=telegram.org list=FuckRKN +< add address=149.154.166.110 comment=api.telegram.org list=FuckRKN -- 2.52.0