From 227ee3a2206d0a5319debeb82dec0b440d563bea Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 4 May 2026 14:01:01 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 04 14:01:01. --- .../20260504/20260504140002-Binary.backup | Bin 0 -> 262194 bytes .../20260504/20260504140002-Config.rsc | 4297 +++++++++++++++++ .../20260504/20260504140002-Diff-Config.rsc | 12 + 3 files changed, 4309 insertions(+) create mode 100644 MikroMaster/20260504/20260504140002-Binary.backup create mode 100644 MikroMaster/20260504/20260504140002-Config.rsc create mode 100644 MikroMaster/history/20260504/20260504140002-Diff-Config.rsc diff --git a/MikroMaster/20260504/20260504140002-Binary.backup b/MikroMaster/20260504/20260504140002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..abcceb8a377a24c32f626b026fa9450a503d40b5 GIT binary patch literal 262194 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

+1+r#+|^GEs}PYN~ii39LC!H_nCRbbhbCdyu1e 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260504/20260504140002-Config.rsc b/MikroMaster/20260504/20260504140002-Config.rsc new file mode 100644 index 0000000..73423d3 --- /dev/null +++ b/MikroMaster/20260504/20260504140002-Config.rsc @@ -0,0 +1,4297 @@ +# 2026-05-04 14:00: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/560/2e1d6954\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:35:03 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\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 ] - 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 FwListFile in=[ :deserialize \$tmpIndex delimiter=\"\\n\" fro\ + m=dsv options=dsv.plain ] do={\r\ + \n :local FwListName (\$FwListFile->0);\r\ + \n :local Delim [ \$FindDelim \$FwListName ];\r\ + \n :if (\$Delim = 0) do={ :set FwListName \"\"; };\r\ + \n :if ([ :len \$FwListName ] = 0) do={ :error true; }\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 \$FwListUrl t\ + rue \$FetchMode ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$FwListName . \"', \" . \$I . \". try from: \" . \$FwListUrl);\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: \" . \$FwListUrl);\r\ + \n } else={\r\ + \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :len \$Data ] 1024 ] . \"B for list '\" . \$FwListName . \"' from: \" \ + . \$FwListUrl);\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/20260504140002-Diff-Config.rsc b/MikroMaster/history/20260504/20260504140002-Diff-Config.rsc new file mode 100644 index 0000000..a671423 --- /dev/null +++ b/MikroMaster/history/20260504/20260504140002-Diff-Config.rsc @@ -0,0 +1,12 @@ +937c937 +< \n:global CommitId \"main/560/2e1d6954\";\r\ +--- +> \n:global CommitId \"main/559/a7de843a\";\r\ +940c940 +< r: root, in 13:35:03 04.05.2026.\";\r\ +--- +> r: root, in 13:30:03 04.05.2026.\";\r\ +2457c2457 +< \n :local Url (\$fetchUrl . \$fetchFile);\r\ +--- +> \n :local Url (\$fetchUrl . \$FileName);\r\ -- 2.52.0