From a02bcb7993faaa2eea2922594acf8743bb6305ba Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 4 May 2026 19:21:00 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 04 19:21:00. --- .../20260504/20260504192002-Binary.backup | Bin 0 -> 251760 bytes .../20260504/20260504192002-Config.rsc | 4000 +++++++++++++++++ .../20260504/20260504192002-Diff-Config.rsc | 8 + 3 files changed, 4008 insertions(+) create mode 100644 MikroMaster/20260504/20260504192002-Binary.backup create mode 100644 MikroMaster/20260504/20260504192002-Config.rsc create mode 100644 MikroMaster/history/20260504/20260504192002-Diff-Config.rsc diff --git a/MikroMaster/20260504/20260504192002-Binary.backup b/MikroMaster/20260504/20260504192002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..12e480fde17eefc8735bcbb9f47db32e8759d71d GIT binary patch literal 251760 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 J+|Q_63Kbvy|EK@} literal 0 HcmV?d00001 diff --git a/MikroMaster/20260504/20260504192002-Config.rsc b/MikroMaster/20260504/20260504192002-Config.rsc new file mode 100644 index 0000000..a4f4daf --- /dev/null +++ b/MikroMaster/20260504/20260504192002-Config.rsc @@ -0,0 +1,4000 @@ +# 2026-05-04 19:20:03 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n } else={\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/ipall/\" . \$CertFileN\ + ame) dst-path=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :delay 1s;\r\ + \n };\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=vados 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/576/0cc4cd57\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 16:45:02 04.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n\r\ + \n:global FetchUserAgentStr;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n:global FetchLargeFiles;\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n \$LogPrint debug \$0 (\"\\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$0 (\"Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"\\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={:set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]};\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={:set Path [ :pick \$Path 1 [ :len\ + \_\$Path ] ]};\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={:set Path [ :\ + pick \$Path 0 ([ :len \$Path ] - 1) ]};\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n :log debug (\$0 . \"Validation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n# read parts of a large file\r\ + \n# Description of parameters:\r\ + \n# \$1 - script name for logging and user agent\r\ + \n# \$2 - url to fetch from\r\ + \n# \$3 - check-certificate value for /tool/fetch (true/false)\r\ + \n# \$4 - mode value for /tool/fetch (optional, e.g. \"keep-broken\", \"ht\ + tps-only\", \"http-only\"\r\ + \n# \"no-redirects\", \"background\", \"background-and-keep-broken\",\ + \_\"background-and-https-only\",\r\ + \n# \"background-and-http-only\", \"background-and-no-redirects\", \"\ + background-and-keep-broken-and-https-only\", \"background-and-keep-broken-\ + and-http-only\",\r\ + \n# \"background-and-keep-broken-and-no-redirects\")\r\ + \n# \$5 - fetch method for /tool/fetch (optional, e.g. \"get\", \"head\", \ + \"post\", \"put\", \"patch\", \"delete\")\r\ + \n:set FetchLargeFiles do={\r\ + \n :local RunName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local fetchFile [:tostr \$3];\r\ + \n :local CheckCert [:tostr \$4];\r\ + \n :local fetchMode [:tostr \$5];\r\ + \n :local fetchMethod [:tostr \$6];\r\ + \n :local tmpName;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :set tmpName (\$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum 6 ]);\r\ + \n :local DirName (\"tmpfs/\" . \$tmpName);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n :log error (\$RunName . \" Failed creating directory: \" . \$DirName\ + \_. \"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$fetchFile ] . \"-\ + \" . [ \$GetRandom20CharAlNum 5 ]);\r\ + \n :local Url (\$fetchUrl . \$fetchFile);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$RunName ] }) as-value\ + ;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n :log error (\$RunName . \" Failed downloading from '\" . \$Url . \"'\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n :log error (\$RunName . \" The file downloaded from '\" . \$Url . \"\ + ' did not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n \r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n# \$RmFile \$FileName;\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n :log warning (\$0 . \"Downloading certificate failed, trying without\ + .\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n :log info (\$0 . \" Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n" +add 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\ + \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/20260504192002-Diff-Config.rsc b/MikroMaster/history/20260504/20260504192002-Diff-Config.rsc new file mode 100644 index 0000000..dc8f372 --- /dev/null +++ b/MikroMaster/history/20260504/20260504192002-Diff-Config.rsc @@ -0,0 +1,8 @@ +726c726 +< AM-GlobalConfig owner=vados policy=\ +--- +> AM-GlobalConfig owner=AM-GlobalConfig policy=\ +752c752 +< \n:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ +--- +> \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ -- 2.52.0