From 4ba1abcc00380d5c00cb1c9ff49cbc91c363f76d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 08:40:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 08:40:41. --- .../20260508/20260508084002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508084002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508084002-Diff-Config.rsc | 8 + 3 files changed, 4648 insertions(+) create mode 100644 MikroMaster/20260508/20260508084002-Binary.backup create mode 100644 MikroMaster/20260508/20260508084002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508084002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508084002-Binary.backup b/MikroMaster/20260508/20260508084002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..28da4bdbd47fbce46f6b2fd64e2655526d3af717 GIT binary patch literal 298264 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 ~kRp$E5z7qLkk-VS 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�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πwSR!;*O}f{u+J&D_ptmmkI`u1cu7Xj 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508084002-Config.rsc b/MikroMaster/20260508/20260508084002-Config.rsc new file mode 100644 index 0000000..9aee01a --- /dev/null +++ b/MikroMaster/20260508/20260508084002-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 08:40:03 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\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 UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \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\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 (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\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 };\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\"; \"mod/AM-\ + Certs-By-Ident\" } 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 (a);\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 (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\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/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35: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: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={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\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\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 warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :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" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/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 +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 +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 +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m 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 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 dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=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.4.4,8.8.8.8 +/ip dns static +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.33 comment=AMSTER name=amster.vados.ru type=A +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 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=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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net 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 +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=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 disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 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=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.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.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +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-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +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-list=WAN 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-list=WAN protocol=udp \ + src-address-list=!TRUSTED +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-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +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=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="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-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram 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-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-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-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" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/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="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +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=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +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 +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 check-gateway=ping 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 +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508084002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508084002-Diff-Config.rsc new file mode 100644 index 0000000..839b1c1 --- /dev/null +++ b/MikroMaster/history/20260508/20260508084002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4293d4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4294a4294 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4297d4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN -- 2.52.0