From cca5fa7b72ea8889b47a6d6ecbbc91bb51b548ab Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 4 May 2026 15:21:14 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 04 15:21:14. --- .../20260504/20260504152002-Binary.backup | Bin 0 -> 262755 bytes .../20260504/20260504152002-Config.rsc | 4311 +++++++++++++++++ .../20260504/20260504152002-Diff-Config.rsc | 84 + 3 files changed, 4395 insertions(+) create mode 100644 MikroMaster/20260504/20260504152002-Binary.backup create mode 100644 MikroMaster/20260504/20260504152002-Config.rsc create mode 100644 MikroMaster/history/20260504/20260504152002-Diff-Config.rsc diff --git a/MikroMaster/20260504/20260504152002-Binary.backup b/MikroMaster/20260504/20260504152002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4fbf1855829d08468fffc4759dabbfdcd5a5cbb5 GIT binary patch literal 262755 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260504/20260504152002-Config.rsc b/MikroMaster/20260504/20260504152002-Config.rsc new file mode 100644 index 0000000..d3470ac --- /dev/null +++ b/MikroMaster/20260504/20260504152002-Config.rsc @@ -0,0 +1,4311 @@ +# 2026-05-04 15:20:03 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 SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\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 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 :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 } else={\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 (\$GlobalScriptsUrl . \"certs/ipall/\" . \$CertFileN\ + ame) dst-path=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :delay 1s;\r\ + \n };\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\" } 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 \"\";\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 {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\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\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/568/5c207d26\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:55:02 04.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 GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\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 ExitError;\r\ + \n:global ExitOnError;\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\r\ + \n:global FetchUserAgentStr;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n:global FetchLargeFiles;\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 LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$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 \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$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\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\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\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\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\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# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n\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 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 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 /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 :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\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 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 [ :len\ + \_\$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 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: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 ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n :log debug (\$0 . \"Validation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\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# read parts of a large file\r\ + \n# Description of parameters:\r\ + \n# \$1 - script name for logging and user agent\r\ + \n# \$2 - url to fetch from\r\ + \n# \$3 - check-certificate value for /tool/fetch (true/false)\r\ + \n# \$4 - mode value for /tool/fetch (optional, e.g. \"keep-broken\", \"ht\ + tps-only\", \"http-only\"\r\ + \n# \"no-redirects\", \"background\", \"background-and-keep-broken\",\ + \_\"background-and-https-only\",\r\ + \n# \"background-and-http-only\", \"background-and-no-redirects\", \"\ + background-and-keep-broken-and-https-only\", \"background-and-keep-broken-\ + and-http-only\",\r\ + \n# \"background-and-keep-broken-and-no-redirects\")\r\ + \n# \$5 - fetch method for /tool/fetch (optional, e.g. \"get\", \"head\", \ + \"post\", \"put\", \"patch\", \"delete\")\r\ + \n:set FetchLargeFiles do={\r\ + \n :local RunName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local fetchFile [:tostr \$3];\r\ + \n :local CheckCert [:tostr \$4];\r\ + \n :local fetchMode [:tostr \$5];\r\ + \n :local fetchMethod [:tostr \$6];\r\ + \n :local tmpName;\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 :set tmpName (\$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum 6 ]);\r\ + \n :local DirName (\"tmpfs/\" . \$tmpName);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n :log error (\$RunName . \" Failed creating directory: \" . \$DirName\ + \_. \"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$fetchFile ] . \"-\ + \" . [ \$GetRandom20CharAlNum 5 ]);\r\ + \n :local Url (\$fetchUrl . \$fetchFile);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$RunName ] }) as-value\ + ;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n :log error (\$RunName . \" 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 :log error (\$RunName . \" 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# \$RmFile \$FileName;\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\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 :log warning (\$0 . \"Downloading certificate failed, trying without\ + .\");\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 :log 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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\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: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" +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 FwAddrListsDirName (\"fw-addr-lists.d/\" . [ /system identity g\ + et name ] . \"/\");\r\ + \n :local FwAddrListsUrl (\$GlobalScriptsUrl . \$FwAddrListsDirName);\r\ + \n :local Index \"index.lst\";\r\ + \n :local FwAddrListTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n :local FetchMode \"https-only\";\r\ + \n :local FetchMethod \"get\";\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchLargeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global Grep;\r\ + \n \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 :if ([ :len [ /log/find where topics=({\"script\"; \"warning\"}) \\\r\ + \n message=(\"\\\$LogPrint: The message is already in log, scripting \ + subsystem may have crashed before!\") ] ] > 0) do={\r\ + \n :log warning (\$ScriptName . \" Scripting subsystem may have crashed\ + , possibly caused by us. Delaying!\");\r\ + \n :delay 5m;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\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 [ \$FetchLargeFiles \$ScriptName \$FwAddrLis\ + tsUrl \$Index \$CheckCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$FwAddrListsUrl . \$Index);\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: \" . \$FwAddrListsUrl . \$Index);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach FwListName in=[ :deserialize \$tmpIndex delimiter=\"\\n\" fro\ + m=dsv options=dsv.plain ] do={\r\ + \n# :set FwListName (\$FwList->0);\r\ + \n# :local FwListName;\r\ + \n# :local FwListName (\$FwListFile->0);\r\ + \n# :set FwListName [ \$Grep \$FwListName \"[^0-9a-zA-Z\\\\./:-]\" ];\r\ + \n# :set FwListName ([ :pick \$FwList 0 [ \$FindDelim \$FwList ] ]);\r\ + \n# :set FwListName [ \$Grep \$FwListName \"[^0-9a-zA-Z\\\\./:-]\" ];\r\ + \n# :log warning (\$ScriptName . \" Parsing address-list index entry: \ + \" . \$FwListName);\r\ + \n\r\ + \n# :local Delim [ \$FindDelim \$FwListName ];\r\ + \n# :if (\$Delim = 0) do={ :set FwListName \"\"; };\r\ + \n :if ([ :len \$FwListName ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$FwListFile->0);\r\ + \n :error true; \r\ + \n }\r\ + \n# :set FwListName [ :pick \$FwListName 0 \$Delim ];\r\ + \n\r\ + \n :local FwListUrl (\$FwAddrListsUrl . \$FwListName);\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 \$FwAddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchLargeFiles \$ScriptName \$FwAddrLists\ + Url \$FwListName \$CheckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$FwListName . \"', \" . \$I . \". try from: \" . \$FwAddrListsUrl . \ + \$FwListName);\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 '\" . \ + \$FwListName . \"' from: \" . \$FwAddrListsUrl . \$FwListName);\r\ + \n } else={\r\ + \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :len \$Data ] 1024 ] . \"B for list '\" . \$FwListName . \"' from: \" \ + . \$FwAddrListsUrl . \$FwListName);\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 Delim [ \$FindDelim \$Line ];\r\ + \n :if (\$Delim = 0) do={ :set Line \"\"; };\r\ + \n :if ([ :len \$Line ] = 0) do={ :error true; }\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 ] ];\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 :if ([ :typeof (\$IPv4Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv4Addresses->\$Branch) ({}) };\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 :if ([ :typeof (\$IPv6Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv6Addresses->\$Branch) ({}) };\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 :if ([ :typeof (\$IPv4Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv4Addresses->\$Branch) ({}) };\r\ + \n :if ([ :typeof (\$IPv6Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv6Addresses->\$Branch) ({}) };\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={:log error (\$ScriptName . \" Failed parsing address: \ + \" . \$Line->0);}\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$FwListName 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 debug (\$ScriptName . \" Renewing IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' 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 debug (\$ScriptName . \" Removing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName . \".\");\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=\$FwListName 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 debug (\$ScriptName . \" Renewing IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' 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 debug (\$ScriptName . \" Removing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName . \".\");\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 debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv4 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$FwListName 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 IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv6 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$FwListName comment=\$Li\ + stComment \\\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 '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$FwListName . \\\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" +/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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +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 +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man manager +set enabled=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,dns,www,api,reverse-proxy" crl-store=system +/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=10.8.0.2/32,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 enabled=yes 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 interface="ether1 - Unet" name=client1 \ + use-peer-dns=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.8.8,8.8.4.4 verify-doh-cert=yes +/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" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" 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=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 +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC 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 disabled=yes +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 +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=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 dst-address-list=YouTube new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address=\ + !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" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN 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 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 disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +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=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 +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set graphs-plain=no rest-plain=no webfig-plain=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 +/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 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 +/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/20260504/20260504152002-Diff-Config.rsc b/MikroMaster/history/20260504/20260504152002-Diff-Config.rsc new file mode 100644 index 0000000..317aeee --- /dev/null +++ b/MikroMaster/history/20260504/20260504152002-Diff-Config.rsc @@ -0,0 +1,84 @@ +937c937 +< \n:global CommitId \"main/568/5c207d26\";\r\ +--- +> \n:global CommitId \"main/567/f0428e42\";\r\ +940c940 +< r: root, in 14:55:02 04.05.2026.\";\r\ +--- +> r: root, in 14:35:02 04.05.2026.\";\r\ +2856,2858c2856,2858 +< 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\ +--- +> dont-require-permissions=no name=AM-FwAddrLists owner=vados policy=\ +> ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ +> !rsc by Vados\r\ +2892c2892,2894 +< \n \r\ +--- +> \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk\ +> lmnopqrstuvwxyz-\";\r\ +> \n \r\ +2897,2902c2899,2904 +< \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 :local FindDelim;\r\ +> \n :set FindDelim do={\r\ +> \n :local Length [ :tostr \$1 ];\r\ +> \n :for I from=0 to=([ :len \$Length ] - 1) do={\r\ +> \n :if ([ :typeof [ :find \$ValidChars [ :pick \$Length \$I ] ] ] != \ +> \"num\") do={\r\ +2947,2950c2949,2952 +< \n :foreach FwListName in=[ :deserialize \$tmpIndex delimiter=\"\\n\" fro\ +< m=dsv options=dsv.plain ] do={\r\ +< \n# :set FwListName (\$FwList->0);\r\ +< \n# :local FwListName;\r\ +--- +> \n :foreach FwList in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=ds\ +> v options=dsv.plain ] do={\r\ +> \n :set FwList (\$FwList->0);\r\ +> \n :local FwListName;\r\ +2953,2956c2955,2957 +< \n# :set FwListName ([ :pick \$FwList 0 [ \$FindDelim \$FwList ] ]);\r\ +< \n# :set FwListName [ \$Grep \$FwListName \"[^0-9a-zA-Z\\\\./:-]\" ];\r\ +< \n# :log warning (\$ScriptName . \" Parsing address-list index entry: \ +< \" . \$FwListName);\r\ +--- +> \n :set FwListName ([ :pick \$FwList 0 [ \$FindDelim \$FwList ] ] ;\r\ +> \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ +> \_. \$FwListName);\r\ +2958,2959c2959,2960 +< \n# :local Delim [ \$FindDelim \$FwListName ];\r\ +< \n# :if (\$Delim = 0) do={ :set FwListName \"\"; };\r\ +--- +> \n :local Delim [ \$FindDelim \$FwListName ];\r\ +> \n :if (\$Delim = 0) do={ :set FwListName \"\"; };\r\ +2965c2966 +< \n# :set FwListName [ :pick \$FwListName 0 \$Delim ];\r\ +--- +> \n :set FwListName [ :pick \$FwListName 0 \$Delim ];\r\ +2979,2980c2980,2981 +< \n :set Data [ :tolf [ \$FetchLargeFiles \$ScriptName \$FwAddrLists\ +< Url \$FwListName \$CheckCerts ] ];\r\ +--- +> \n :set Data [ :tolf [ \$FetchLargeFiles \$ScriptName \$FwListUrl t\ +> rue \$FetchMode ] ];\r\ +2983,2984c2984 +< \" . \$FwListName . \"', \" . \$I . \". try from: \" . \$FwAddrListsUrl . \ +< \$FwListName);\r\ +--- +> \" . \$FwListName . \"', \" . \$I . \". try from: \" . \$FwListUrl);\r\ +2994c2994 +< \$FwListName . \"' from: \" . \$FwAddrListsUrl . \$FwListName);\r\ +--- +> \$FwListName . \"' from: \" . \$FwListUrl);\r\ +2998c2998 +< . \$FwAddrListsUrl . \$FwListName);\r\ +--- +> . \$FwListUrl);\r\ -- 2.52.0