From cca891355e8c4deb885e2607c6a4745b905a363e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 13:40:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 13:40:19. --- .../20260512/20260512134002-Binary.backup | Bin 0 -> 302923 bytes .../20260512/20260512134002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512134002-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260512/20260512134002-Binary.backup create mode 100644 MikroMaster/20260512/20260512134002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512134002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512134002-Binary.backup b/MikroMaster/20260512/20260512134002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..d51a379d51f770ebc3b2bc4e7843969ca1f9c97b GIT binary patch literal 302923 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 T#3iLiYJJp3$%y*$8ezwnEDM;$ literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512134002-Config.rsc b/MikroMaster/20260512/20260512134002-Config.rsc new file mode 100644 index 0000000..80ae50f --- /dev/null +++ b/MikroMaster/20260512/20260512134002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 13:40: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.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=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=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512134002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512134002-Diff-Config.rsc new file mode 100644 index 0000000..b2b3b62 --- /dev/null +++ b/MikroMaster/history/20260512/20260512134002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4301c4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4302a4302 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN -- 2.52.0