From f3056bd95c7b8e2f6a0c8e9c34e0de3dab685dc3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 5 May 2026 14:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 05 14:20:18. --- .../20260505/20260505142001-Binary.backup | Bin 0 -> 272039 bytes .../20260505/20260505142001-Config.rsc | 4504 +++++++++++++++++ .../20260505/20260505142001-Diff-Config.rsc | 17 + 3 files changed, 4521 insertions(+) create mode 100644 MikroMaster/20260505/20260505142001-Binary.backup create mode 100644 MikroMaster/20260505/20260505142001-Config.rsc create mode 100644 MikroMaster/history/20260505/20260505142001-Diff-Config.rsc diff --git a/MikroMaster/20260505/20260505142001-Binary.backup b/MikroMaster/20260505/20260505142001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..3e80a2fa20d13982f9be5eb166b0a66e0a5eba2d GIT binary patch literal 272039 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 N(Sn<<6LKz8x1|Tl2V?*M literal 0 HcmV?d00001 diff --git a/MikroMaster/20260505/20260505142001-Config.rsc b/MikroMaster/20260505/20260505142001-Config.rsc new file mode 100644 index 0000000..a21c015 --- /dev/null +++ b/MikroMaster/20260505/20260505142001-Config.rsc @@ -0,0 +1,4504 @@ +# 2026-05-05 14:20: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: 5200/20-eCee/ac/P(21dBm), 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: 5200/20-eCee/ac/P(21dBm), 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,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name=client1 \ + use-peer-dns=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.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 +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 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/20260505142001-Diff-Config.rsc b/MikroMaster/history/20260505/20260505142001-Diff-Config.rsc new file mode 100644 index 0000000..c8301d2 --- /dev/null +++ b/MikroMaster/history/20260505/20260505142001-Diff-Config.rsc @@ -0,0 +1,17 @@ +3380,3381c3380 +< openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ +< system crl-use=yes +--- +> openflow,tr069,dot1x,dns,www,api,reverse-proxy" crl-store=system +3422c3421 +< add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=::/0 \ +--- +> add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ +4166d4164 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4167a4166 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4450a4450,4452 +> /system routerboard settings +> # Warning: cpu not running at default frequency +> set cpu-frequency=700MHz -- 2.52.0