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