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

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