From 07c1190f1614a7b052e6dddfabdf29cdc55cfe26 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 5 May 2026 08:00:23 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 05 08:00:23. --- .../20260505/20260505080002-Binary.backup | Bin 0 -> 270775 bytes .../20260505/20260505080002-Config.rsc | 4506 +++++++++++++++++ .../20260505/20260505080002-Diff-Config.rsc | 24 + 3 files changed, 4530 insertions(+) create mode 100644 MikroMaster/20260505/20260505080002-Binary.backup create mode 100644 MikroMaster/20260505/20260505080002-Config.rsc create mode 100644 MikroMaster/history/20260505/20260505080002-Diff-Config.rsc diff --git a/MikroMaster/20260505/20260505080002-Binary.backup b/MikroMaster/20260505/20260505080002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..35cee9e86d854fbea23958eb0c1502c62ba47ef2 GIT binary patch literal 270775 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
    TjU_P#xUyxq#tdDD$RLfIZ(DaH%XQlzV> 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�rOOkKk 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�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

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