From dcde97e9939e971e58c83af522a8afc61a214cd9 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 07:20:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 07:20:41. --- .../20260509/20260509072001-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509072001-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509072001-Diff-Config.rsc | 14 + 3 files changed, 4653 insertions(+) create mode 100644 MikroMaster/20260509/20260509072001-Binary.backup create mode 100644 MikroMaster/20260509/20260509072001-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509072001-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509072001-Binary.backup b/MikroMaster/20260509/20260509072001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..110ea46a01163a477c237131dcd59f471ac80674 GIT binary patch literal 298264 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⪚g<(_&Avv1-3DWrL@?va7QKp(dJH6+K; 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

qB{m#}5MuHnIg?qdd05mO0D7 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509072001-Config.rsc b/MikroMaster/20260509/20260509072001-Config.rsc new file mode 100644 index 0000000..5ecdda6 --- /dev/null +++ b/MikroMaster/20260509/20260509072001-Config.rsc @@ -0,0 +1,4639 @@ +# 2026-05-09 07:20:02 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global 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.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=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" 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" \ + 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/20260509/20260509072001-Diff-Config.rsc b/MikroMaster/history/20260509/20260509072001-Diff-Config.rsc new file mode 100644 index 0000000..cf4039e --- /dev/null +++ b/MikroMaster/history/20260509/20260509072001-Diff-Config.rsc @@ -0,0 +1,14 @@ +4291d4290 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4292a4292 +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4300,4301c4300,4301 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +--- +> add address=172.66.164.200 comment=dou.ua list=FuckRKN +> add address=104.20.28.254 comment=dou.ua list=FuckRKN +4303d4302 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4304a4304 +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN -- 2.52.0