From a5bfe39ae494cc7c0e03b0bded4d56bee85d7b22 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 06:20:17 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 06:20:17. --- .../20260507/20260507062001-Binary.backup | Bin 0 -> 280064 bytes .../20260507/20260507062001-Config.rsc | 4598 +++++++++++++++++ .../20260507/20260507062001-Diff-Config.rsc | 12 + 3 files changed, 4610 insertions(+) create mode 100644 MikroMaster/20260507/20260507062001-Binary.backup create mode 100644 MikroMaster/20260507/20260507062001-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507062001-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507062001-Binary.backup b/MikroMaster/20260507/20260507062001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..06a5d998384814b2e41b197be7af428f46a6a965 GIT binary patch literal 280064 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%0A8RpB~*qO@T@ACdmocQfU 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
^LG9H4na%`NMo;bhKW(+ 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

Vt|hGX0VCP$O+FS6^R}+LDc0@ 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

|L0LflK48Tu5vgX^J+p3H%Px016WDrA+Or2 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507062001-Config.rsc b/MikroMaster/20260507/20260507062001-Config.rsc new file mode 100644 index 0000000..fb1f078 --- /dev/null +++ b/MikroMaster/20260507/20260507062001-Config.rsc @@ -0,0 +1,4598 @@ +# 2026-05-07 06:20:02 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=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 comment=AMSTER name=amster.vados.ru 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=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.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 list=NoWG +add address=10.30.30.10 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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 +/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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=tcp +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="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram 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=Twitter dst-address=\ + 10.30.30.0/24 dst-address-list=Twitter 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=YouTube dst-address-list=\ + YouTube 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=facebook dst-address=\ + !10.30.30.0/24 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" \ + log-prefix=VPN-all new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=443 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat dst-port=80 in-interface="ether1 - Unet" \ + protocol=tcp to-addresses=10.30.30.33 to-ports=80 +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=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 log=yes +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 +add blackhole disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG \ + routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes 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/20260507/20260507062001-Diff-Config.rsc b/MikroMaster/history/20260507/20260507062001-Diff-Config.rsc new file mode 100644 index 0000000..aa7de85 --- /dev/null +++ b/MikroMaster/history/20260507/20260507062001-Diff-Config.rsc @@ -0,0 +1,12 @@ +3534c3534 +< add allowed-address=0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ +--- +> add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ +4492a4493,4496 +> add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +> add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +> add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +> add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +4495,4496d4498 +< add blackhole disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG \ +< routing-table=To-VPN scope=30 target-scope=10 -- 2.52.0