From 22fb7ac13edc311de7aae5fae1c35446730b4004 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 5 May 2026 06:00:38 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 05 06:00:38. --- .../20260505/20260505060002-Binary.backup | Bin 0 -> 270787 bytes .../20260505/20260505060002-Config.rsc | 4506 +++++++++++++++++ .../20260505/20260505060002-Diff-Config.rsc | 16 + 3 files changed, 4522 insertions(+) create mode 100644 MikroMaster/20260505/20260505060002-Binary.backup create mode 100644 MikroMaster/20260505/20260505060002-Config.rsc create mode 100644 MikroMaster/history/20260505/20260505060002-Diff-Config.rsc diff --git a/MikroMaster/20260505/20260505060002-Binary.backup b/MikroMaster/20260505/20260505060002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..54f592f05ebb8a931f35c506c8c6cfd0eae9398f GIT binary patch literal 270787 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�JmM%Ye*Gl&uex6KGV;6E7<)oGG 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 Jn$~T2`buBxF!cZc literal 0 HcmV?d00001 diff --git a/MikroMaster/20260505/20260505060002-Config.rsc b/MikroMaster/20260505/20260505060002-Config.rsc new file mode 100644 index 0000000..5cab034 --- /dev/null +++ b/MikroMaster/20260505/20260505060002-Config.rsc @@ -0,0 +1,4506 @@ +# 2026-05-05 06:00: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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="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/20260505060002-Diff-Config.rsc b/MikroMaster/history/20260505/20260505060002-Diff-Config.rsc new file mode 100644 index 0000000..e96c800 --- /dev/null +++ b/MikroMaster/history/20260505/20260505060002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4165d4164 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4167c4166 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4169c4168 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4170a4170 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4172d4171 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4173a4173 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0