From c835a03dcff621787dd888897fdeb8d73213095f Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 09:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 09:40:18. --- .../20260512/20260512094001-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512094001-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512094001-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260512/20260512094001-Binary.backup create mode 100644 MikroMaster/20260512/20260512094001-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512094001-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512094001-Binary.backup b/MikroMaster/20260512/20260512094001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..5bac6d79fb3d48625946b732fbc6ec46a0b4d813 GIT binary patch literal 302647 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≫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 IXF|z9%5RV9>Slq-Qxf4zUtOZ2OhbE(QH!pGCWc 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 z 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%0Dt`*^U@KIVd?}v;67#m8C59mTuxB*GQZ3?%ppfj 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

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