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