From a92cd17796da2479e270dd5eb6408d184d750dbc Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 02:20:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 02:20:19. --- .../20260512/20260512022002-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512022002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512022002-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260512/20260512022002-Binary.backup create mode 100644 MikroMaster/20260512/20260512022002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512022002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512022002-Binary.backup b/MikroMaster/20260512/20260512022002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..62dddd14ffe91756da605080dded3b08335082dd GIT binary patch literal 302647 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

ybeQZCh={&tDigc9pNozSyf| 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 DGNXwG literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512022002-Config.rsc b/MikroMaster/20260512/20260512022002-Config.rsc new file mode 100644 index 0000000..ac60ec8 --- /dev/null +++ b/MikroMaster/20260512/20260512022002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 02:20:03 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.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-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/20260512/20260512022002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512022002-Diff-Config.rsc new file mode 100644 index 0000000..943aa10 --- /dev/null +++ b/MikroMaster/history/20260512/20260512022002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4299d4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4301c4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4302a4302 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN -- 2.52.0