From 751d55a13a13d32ab8d3d13781c093bc6b5ec7a0 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 14:00:30 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 14:00:30. --- .../20260512/20260512140002-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512140002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512140002-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260512/20260512140002-Binary.backup create mode 100644 MikroMaster/20260512/20260512140002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512140002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512140002-Binary.backup b/MikroMaster/20260512/20260512140002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..5f4ae032fc5383530477aea7e431157dd207c911 GIT binary patch literal 302653 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

goet2)9|$ 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

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