From 32a7c8b753ce3c19c2c49f5de02926c7cf10fc6d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 10:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 10:40:18. --- .../20260511/20260511104002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511104002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511104002-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260511/20260511104002-Binary.backup create mode 100644 MikroMaster/20260511/20260511104002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511104002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511104002-Binary.backup b/MikroMaster/20260511/20260511104002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..3af0090401bdb109c7c6a70f3c752648d09ff1ca GIT binary patch literal 302647 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¿TIvWb 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

{)VOpF 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 DBKA%E literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511104002-Config.rsc b/MikroMaster/20260511/20260511104002-Config.rsc new file mode 100644 index 0000000..9a1fe36 --- /dev/null +++ b/MikroMaster/20260511/20260511104002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 10:40:02 by RouterOS 7.23beta5 +# 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 +# same mac-address as wlan1 +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 +# same mac-address as ether1 - Unet +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 +# same mac-address as ether1 - Unet +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,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/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 +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set 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,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s 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 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/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" disabled=yes 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!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=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=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=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" disabled=yes 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=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +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 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=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-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +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 passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +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 passthrough=no \ + 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" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +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" disabled=yes \ + 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 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 +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/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 package update +set channel=development +/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/20260511/20260511104002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511104002-Diff-Config.rsc new file mode 100644 index 0000000..037b749 --- /dev/null +++ b/MikroMaster/history/20260511/20260511104002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN -- 2.52.0