From 8a7fb003857c90e041a9699dd8fd5a7f27617e73 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 13:40:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 13:40:42. --- .../20260508/20260508134002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508134002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508134002-Diff-Config.rsc | 16 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260508/20260508134002-Binary.backup create mode 100644 MikroMaster/20260508/20260508134002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508134002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508134002-Binary.backup b/MikroMaster/20260508/20260508134002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..02d6b850f00b554f7138c3df554eb09fa265dcab GIT binary patch literal 298264 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 +{mIFLAC8 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

?EM$T|Zmb#;E>x3+I{Uv>acS#b#l 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

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