From 0070bcbd8e8ab0b1781ee1d711212a1c7ba71e0e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 01:41:37 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 01:41:37. --- .../20260510/20260510014002-Binary.backup | Bin 0 -> 300292 bytes .../20260510/20260510014002-Config.rsc | 4643 +++++++++++++++++ .../20260510/20260510014002-Diff-Config.rsc | 8 + 3 files changed, 4651 insertions(+) create mode 100644 MikroMaster/20260510/20260510014002-Binary.backup create mode 100644 MikroMaster/20260510/20260510014002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510014002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510014002-Binary.backup b/MikroMaster/20260510/20260510014002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4f1eb3d406f226968eb2aea8a6cd5b6830574178 GIT binary patch literal 300292 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

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