From 71f6806caf6bcbd99513a98772dbe8f5444766c1 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 30 Apr 2026 08:00:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 30 08:00:08. --- .../20260430/20260430080001-Binary.backup | Bin 0 -> 318070 bytes .../20260430/20260430080001-Config.rsc | 4614 +++++++++++++++++ .../20260430/20260430080001-Diff-Config.rsc | 7 + 3 files changed, 4621 insertions(+) create mode 100644 MikroMaster/20260430/20260430080001-Binary.backup create mode 100644 MikroMaster/20260430/20260430080001-Config.rsc create mode 100644 MikroMaster/history/20260430/20260430080001-Diff-Config.rsc diff --git a/MikroMaster/20260430/20260430080001-Binary.backup b/MikroMaster/20260430/20260430080001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..dfb3e2939e245f24531cdaaca44aca7aae6e8811 GIT binary patch literal 318070 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þ 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260430/20260430080001-Config.rsc b/MikroMaster/20260430/20260430080001-Config.rsc new file mode 100644 index 0000000..1d0f40e --- /dev/null +++ b/MikroMaster/20260430/20260430080001-Config.rsc @@ -0,0 +1,4614 @@ +# 2026-04-30 08:00:02 by RouterOS 7.22 +# software id = 2961-C4ZZ +# +# model = RBD52G-5HacD2HnD +# serial number = HCX084RAVFA +/interface bridge +add admin-mac=48:8F:5A:60:A1:0B auto-mac=no name=Bridge-LAN port-cost-mode=\ + short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + F6:BE:9D:85:53:F5 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/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 wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), 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 \ + station-roaming=enabled 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(17dBm), 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 station-roaming=enabled \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man security +add authentication-types=wpa-psk,wpa2-psk encryption=aes-ccm \ + group-encryption=aes-ccm name=security +/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 security=security 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 security=security 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 security=security ssid=vados5g +/disk +add media-interface=lo slot=tmpfs tmpfs-max-size=44739242 type=tmpfs +/interface list +add comment=defconf name=WAN +add comment=defconf 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 datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/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=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-AX disabled=no mode=ap name=5G-AX security=sec5G 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 +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys 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 +add name=mVados 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 +add dns-servers=1.0.0.1,1.1.1.1 name=m.blsp.at verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/ip dhcp-server +add add-arp=yes address-pool=dhcp dhcp-option-set=domain-search-set \ + dynamic-lease-identifiers=client-mac,client-id,opt-82 interface=\ + Bridge-LAN lease-time=10m name=masterDHCP server-address=10.30.30.81 \ + use-reconfigure=yes +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/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 +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +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 dont-require-permissions=no name=create_mkdir_function owner=vados \ + policy=read,write source="# Written by Phillip Stromberg in 2019\r\ + \n# Distributed under the MIT license\r\ + \n# \r\ + \n# \r\ + \n# this creates a function called \$mkdir\r\ + \n# from the command line you will be able to just type \"\$mkdir some/new\ + /folder\"\r\ + \n# and all the folders that need to be created will be\r\ + \n# if the folder already existed, it is ignored\r\ + \n\r\ + \n:log info \"Creating \\\$mkdir function...\"\r\ + \n\r\ + \n:global mkdir do={\r\ + \n # \$1 refers to the input variable the user passed in to us\r\ + \n :local newFolder \$1;\r\ + \n\r\ + \n # we'll use this variable to report error messages that may arise\r\ + \n :local errorMsg;\r\ + \n\r\ + \n # if the user put a slash on the end of the new folder name, remove \ + it\r\ + \n # i.e. \"some/test/\" becomes \"some/test\"\r\ + \n :while (([:pick \$newFolder ([:len \$newFolder] - 1)]) = \"/\") do={\ + \r\ + \n :set newFolder [:pick \$newFolder 0 ([:len \$newFolder] - 1)]\r\ + \n }\r\ + \n\r\ + \n # if the user put a slash at the beginning of the new folder name, r\ + emove it\r\ + \n # i.e. \"/some/test\" becomes \"some/test\"\r\ + \n :while ([:pick \$newFolder 0] = \"/\") do={\r\ + \n :set newFolder [:pick \$newFolder 1 [:len \$newFolder]]\r\ + \n }\r\ + \n\r\ + \n :if ([/file find name=\$newFolder] != \"\") do={\r\ + \n :set errorMsg \"'\$newFolder' already exists.\";\r\ + \n :log debug \"mkdir: \$errorMsg\";\r\ + \n :return \$newFolder;\r\ + \n }\r\ + \n\r\ + \n # the name of the temp file to create\r\ + \n :local tempfile \"mkdir_temp_file.txt\";\r\ + \n\r\ + \n # port 0 is unlikely to be open to HTTP requests...\r\ + \n :local fakeURL \"http://127.0.0.1:0/should-not-exist.txt\";\r\ + \n\r\ + \n :local fullTempPath (\$newFolder . \"/\" . \$tempfile);\r\ + \n\r\ + \n # this is where the folder creation happens\r\ + \n # `as-value` prevents status messages from printing\r\ + \n # wrapping in a `:do {...} on-error` prevents error messages from pr\ + inting.\r\ + \n :do {\r\ + \n /tool fetch dst-path=\"\$fullTempPath\" url=\"\$fakeURL\" durati\ + on=0.001s as-value;\r\ + \n } on-error={}\r\ + \n\r\ + \n # this waits for the temporary dir to show up so there isn't a race \ + \r\ + \n # condition where you call mkdir and then try to do something before\ + \_the \r\ + \n # folder is actually created\r\ + \n :local count 0;\r\ + \n :while ([/file find name=\"\$newFolder\"] = \"\") do={\r\ + \n :if (\$count >= 50) do={\r\ + \n # after 50 * 0.1s delays, it's been 5 seconds, which should \ + be long enough\r\ + \n :set errorMsg \"New folder could not be created at \$newFold\ + er\";\r\ + \n :log error \"mkdir: \$errorMsg\"\r\ + \n :error \$errorMsg\r\ + \n }\r\ + \n :delay 0.1s;\r\ + \n :set count (\$count + 1);\r\ + \n }\r\ + \n\r\ + \n :return \$newFolder;\r\ + \n}\r\ + \n\r\ + \n:log info \"Created function \\\$mkdir\"\r\ + \n" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=CustomUpdate-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n/tool/fetch mode=https url=https://developers.cloudflare.com/ssl/static/\ + origin_ca_ecc_root.pem;\r\ + \n/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalRo\ + otCA.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\"\ + \";\r\ + \n/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalG\ + 2TLSRSASHA2562020CA1-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/DigiCertGlobal\ + G3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n\r\ + \n#:global AmScriptsUrl;\r\ + \n#google\r\ + \n#:local CertName \"GTS-Root-R1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-R4.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \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#:set CertName \"ISRG-Root-X1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \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#:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\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 dont-require-permissions=no name=AM-setup owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_RouterOS Setup Script: AM-setup\r\ + \n# \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## Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:if ([ :len [ /system/script/find where name=\$ScriptName ]] = 0 ) do={\ + \r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# :global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n# /system/script/add name=\$ScriptName owner=\$ScriptName source=([ /too\ + l/fetch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptNa\ + me . \".rsc\") output=user as-value ]->\"data\");\r\ + \n#}\r\ + \n# For run from terminal:\r\ + \n# /system/script/add name=AM-setup owner=AM-Setup source=([ /tool/fetch \ + check-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" ou\ + tput=user as-value ]->\"data\");\r\ + \n#\r\ + \n# /system/script/set source=[ :tocrlf [ get \$ScriptName source ] ] \$Sc\ + riptName;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local RemoveThisScript false;\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n{\r\ + \n :local ScriptName;\r\ + \n :local RemoveThisScript;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local AllDone;\r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :local CertSettings [ /certificate/settings/get ];\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:log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\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\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 :put \"Add Schedulers...\";\r\ + \n :delay 1;\r\ + \n :put \"Add Global scheduler...\";\r\ + \n :local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFu\ + nc; }\";\r\ + \n :local Comment \"Setup Global Environment for scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] \ + ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-\ + event=\$OnEvent start-time=startup;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Commen\ + t) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEve\ + nt) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Add 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-ScriptInstallUpda\ + te\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Commen\ + t start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n }\r\ + \n\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n /system/script { run AM-GlobalConfig; run AM-GlobalFunc; };\r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :set AllDone true;\r\ + \n } on-error={\r\ + \n :set AllDone false;\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$ScriptName . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n\r\ + \n :delay 5s;\r\ + \n :if (\$AllDone = true && \$RemoveThisScript = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :set OnEvent \":delay 30s; /system/script/remove [ find where name=\$S\ + criptName ]; :delay5s; /system/scheduler/remove [ find where name=\\\"_Rem\ + oveSetup\\\" ];\";\r\ + \n :set Comment \"_RemoveSetup tmp scheduler for remove setup script.\";\ + \r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-ti\ + me=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$ScriptName . \"\\nI've done everything, and now I'm ti\ + red... I'm leaving. ))\\nThere will be an error below, this is normal.\");\ + \r\ + \n }\r\ + \n};\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \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\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \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\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n:local FetchFile AM-DOHCert.rsc\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \"[usb1]/scripts/\" . \$FetchFile);\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/266/c0a5c627\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 03:10:03 28.04.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\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 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 Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global 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: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: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 :global LogPrint;\r\ + \n \r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n\r\ + \n# :retry command={abc} delay=1 max=2 on-error={:put \"got error\"} \r\ + \n :do {\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using default s\ + ervice: \" . \$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={\$LogPrint error [ :jobname ] (\"Fail\ + ed to detect public IP using default service: \" . \$Url . \".\")}\r\ + \n #:error \"Failed to detect public IP using default service: \$Url\ + .\"};\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Failed to detect public IP using default s\ + ervice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using fallback \ + service: \" . \$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={\$LogPrint error [ :jobname ] (\"Fai\ + led to detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :if (\$PubIpAddr = false) do={\r\ + \n :set PubIpAddr \"not-detected\";\r\ + \n } else={\r\ + \n :set PubIpAddr [ :pick \$PubIpAddr 0 15];\r\ + \n }\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 :global CertificateDownload;\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :set UseFor [ \$EitherOr \$UseFor \"undefined\" ];\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 \$LogPrint 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 \$LogPrint 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 \$LogPrint info \$0 (\"Certificate with CommonName '\" . \$CommonNam\ + e . \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n \$LogPrint 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 \$LogPrint info \$0 (\"Certificate chain for '\" . \$CommonName . \ + \"' is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={:return fal\ + se}\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 GlobalScriptsUrl;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n \r\ + \n \$LogPrint info \$0 (\"Downloading and importing certificate with Comm\ + onName '\" . \$CommonName . \"'.\");\r\ + \n \r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({ [\ + \_\$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$GlobalScriptsUrl . \"certs/\" . \$FileName . \$GlobalScriptsUrl\ + Suffix) dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Common\ + Name '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"Required certificate is not available.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$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 \$LogPrint warning \$0 (\"Failed downloading certificate with Comm\ + onName '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n \$LogPrint warning \$0 (\"Certificate with CommonName '\" . \$Common\ + Name . \"' 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 :global LogPrint;\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 \$LogPrint 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 :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\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 GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \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: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 :global LogPrint;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n \$LogPrint 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 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={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {: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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\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 :global LogPrint;\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 \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint 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 \$LogPrint 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 \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint 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 \$LogPrint 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 LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint 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 \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 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: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 LogPrint;\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 \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\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 \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', 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: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: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:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\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 \$LogPrint 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: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: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:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\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: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:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\r\ + \n \r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\r\ + \n \r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={: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={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Setup Global Environment for scripts\";\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#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\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} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add comment="Import ssh keys for public key authentication" \ + dont-require-permissions=no name=AM-SshKeysImport owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-SshKeysImport\r\ + \n# Script comment: Import ssh keys for public key authentication\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global configs or functions not ready.\"); }; } del\ + ay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global SSHKeysImport;\r\ + \n:global SSHKeysImportFile;\r\ + \n\r\ + \n# import single key passed as string\r\ + \n:set SSHKeysImport do={ :onerror Err {\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :if ([ :len \$Key ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass key and u\ + ser!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ :len [ /user/find where name=\$User ] ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"User '\" . \$User . \"' does not exist.\")\ + ;\r\ + \n :return false;\r\ + \n }\r\ + \n :local KeyVal ([ :deserialize \$Key delimiter=\" \" from=dsv options=d\ + sv.plain ]->0);\r\ + \n :if (!(\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\")) do\ + ={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' is\ + \_not supported.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FingerPrintMD5 [ :convert from=base64 transform=md5 to=hex (\$K\ + eyVal->1) ];\r\ + \n :local RegEx (\"\\\\bmd5=\" . \$FingerPrintMD5 . \"\\\\b\");\r\ + \n :if ([ :len [ /user/ssh-keys/find where user=\$User \\\r\ + \n (key-owner~\$RegEx or info~\$RegEx) ] ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The ssh public key (MD5:\" . \$FingerPrint\ + MD5 . \\\r\ + \n \") is already available for user '\" . \$User . \"'.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$MkDir \"tmpfs/ssh-keys-import\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Creating directory 'tmpfs/ssh-keys-import'\ + \_failed!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\"tmpfs/ssh-keys-import/key-\" . [ \$GetRandom20CharA\ + lNum 6 ] . \".pub\");\r\ + \n /file/add name=\$FileName contents=(\$Key . \", md5=\" . \$FingerPrint\ + MD5);\r\ + \n \$WaitForFile \$FileName;\r\ + \n :onerror Err {\r\ + \n /user/ssh-keys/import public-key-file=\$FileName user=\$User;\r\ + \n \$LogPrint info \$0 (\"Imported ssh public key (\" . \$KeyVal->2 . \ + \", \" . \$KeyVal->0 . \", \" . \\\r\ + \n \"MD5:\" . \$FingerPrintMD5 . \") for user '\" . \$User . \"'.\");\ + \r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key: \" . \$Err);\r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n :return false;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# import keys from a file\r\ + \n:set SSHKeysImportFile do={ :onerror Err {\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global FileExists;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global SSHKeysImport;\r\ + \n :if ([ :len \$FileName ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass file name\ + \_and user!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$FileExists \$FileName ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"File '\" . \$FileName . \"' does not exist\ + .\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Keys [ :tolf [ /file/get \$FileName contents ] ];\r\ + \n :foreach KeyVal in=[ :deserialize \$Keys delimiter=\" \" from=dsv opti\ + ons=dsv.plain ] do={\r\ + \n :local Continue false;\r\ + \n :if (\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\") do=\ + {\r\ + \n :if ([ \$SSHKeysImport (\$KeyVal->0 . \" \" . \$KeyVal->1 . \" \" \ + . \$KeyVal->2) \$User ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key for user '\" . \$\ + User . \"'.\");\r\ + \n }\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && \$KeyVal->0 = \"#\") do={\r\ + \n :set User [ \$EitherOr ([ \$ParseKeyValueStore (\$KeyVal->1) ]->\"\ + user\") \$User ];\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && [ :len (\$KeyVal->0) ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' \ + is not supported.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\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\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Check for certificates validity" dont-require-permissions=no \ + name=AM-CheckCerts owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CheckCerts\r\ + \n# Script comment: Check for certificates validity\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 ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global CertRenewTime;\r\ + \n :global CertRenewUrl;\r\ + \n :global CertWarnTime;\r\ + \n :global Identity;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EscapeForRegEx;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global ScriptLock;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n# :global WaitFullyConnected;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Renew Certificates\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :local CheckCertificatesDownloadImport do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local CertName [ :tostr \$2 ];\r\ + \n :local FetchName [ :tostr \$3 ];\r\ + \n\r\ + \n :global CertRenewUrl;\r\ + \n :global CertRenewPass;\r\ + \n\r\ + \n :global CertificateNameByCN;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global UrlEncode;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :foreach Type in={ \"p12\"; \"pem\" } do={\r\ + \n :local CertFileName ([ \$UrlEncode \$FetchName ] . \".\" . \$Type)\ + ;\r\ + \n \$LogPrint debug \$ScriptName (\"Trying type '\" . \$Type . \"' fo\ + r '\" . \$CertName . \\\r\ + \n \"' (file '\" . \$CertFileName . \"')...\");\r\ + \n\r\ + \n :do {\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] \ + }) \\\r\ + \n (\$CertRenewUrl . \$CertFileName) dst-path=\$CertFileName \ + as-value;\r\ + \n } do={\r\ + \n :if (!(\$Err ~ \"[Ss]tatus 404\")) do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching certificate: \" . \ + \$Err);\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n \$WaitForFile \$CertFileName; \r\ + \n\r\ + \n :local DecryptionFailed true;\r\ + \n :foreach I,PassPhrase in=\$CertRenewPass do={\r\ + \n :do {\r\ + \n \$LogPrint debug \$ScriptName (\"Trying \" . \$I . \". passp\ + hrase... \");\r\ + \n :local Result [ /certificate/import file-name=\$CertFileName\ + \_passphrase=\$PassPhrase as-value ];\r\ + \n :if (\$Result->\"decryption-failures\" = 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Success!\");\r\ + \n :set DecryptionFailed false;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \$RmFile \$CertFileName;\r\ + \n\r\ + \n :if (\$DecryptionFailed = true) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Decryption failed for certi\ + ficate file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n\r\ + \n :foreach CertInChain in=[ /certificate/find where common-name!=\ + \$CertName !private-key \\\r\ + \n name~(\"^\" . [ \$EscapeForRegEx \$CertFileName ] . \"_[0-9]\ + +\\\$\") \\\r\ + \n !(subject-alt-name~(\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRe\ + gEx \$CertName ] . \"(\\\\W|\\\$)\")) \\\r\ + \n !(common-name=[]) ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$CertInChain common-\ + name ];\r\ + \n }\r\ + \n\r\ + \n :return true;\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not download certificate \ + file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FormatInfo do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global FormatLine;\r\ + \n :global FormatMultiLines;\r\ + \n :global IfThenElse;\r\ + \n\r\ + \n :local FormatExpire do={\r\ + \n :global CharacterReplace;\r\ + \n :return [ \$CharacterReplace [ \$CharacterReplace [ :tostr \$1 ] \ + \"w\" \"w \" ] \"d\" \"d \" ];\r\ + \n }\r\ + \n\r\ + \n :local FormatCertChain do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :typeof (\$CertVal->\"issuer\") ] = \"nothing\") do={\r\ + \n :return \"self-signed\";\r\ + \n }\r\ + \n\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=5 do={\r\ + \n :set Return (\$Return . [ \$ParseKeyValueStore (\$CertVal->\"iss\ + uer\") ]->\"CN\");\r\ + \n :if ([ :len [ /certificate/builtin/find where skid=(\$CertVal->\ + \"akid\") ] ] > 0) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :do {\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\ + \"akid\") ] ];\r\ + \n } on-error={\r\ + \n :return (\$Return . \" (possibly incomplete!)\");\r\ + \n }\r\ + \n :if ((\$CertVal->\"akid\") = \"\" || (\$CertVal->\"akid\") = (\$\ + CertVal->\"skid\")) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :set Return (\$Return . \" -> \");\r\ + \n }\r\ + \n :return (\$Return . \"...\");\r\ + \n }\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Name\" (\$CertVal->\"name\") ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"common-name\") ] > 0) ([ \$Fo\ + rmatLine \"CommonName\" (\$CertVal->\"common-name\") ] . \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"subject-alt-name\") ] > 0) ([\ + \_\$FormatMultiLines \"SubjectAltNames\" (\$CertVal->\"subject-alt-name\")\ + \_] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Private key\" [ \$IfThenElse ((\$CertVal->\"priva\ + te-key\") = true) \"available\" \"missing\" ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \"Fingerprint\" (\$CertVal->\"fingerprint\") ] . \"\ + \\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"ca\") ] > 0) [ \$FormatLine \ + \"Issuer\" (\$CertVal->\"ca\") ] [ \$FormatLine \"Issuer chain\" [ \$Forma\ + tCertChain \$Cert ] ] ] . \"\\n\" . \\\r\ + \n \"Validity:\\n\" . \\\r\ + \n [ \$FormatLine \" days\" (\$CertVal->\"days-valid\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" from\" (\$CertVal->\"invalid-before\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" to\" (\$CertVal->\"invalid-after\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" time left\" [ \$IfThenElse ((\$CertVal->\"exp\ + ired\") = true) \"expired\" [ \$FormatExpire (\$CertVal->\"expires-after\"\ + ) ] ] ]);\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n# \$WaitFullyConnected;\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !ca !scep-url expi\ + res-after<\$CertRenewTime ] do={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n :local LastName;\r\ + \n :local FetchName;\r\ + \n\r\ + \n :do {\r\ + \n :if ([ :len \$CertRenewUrl ] = 0) do={\r\ + \n \$LogPrint info \$ScriptName (\"No CertRenewUrl given.\");\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Attempting to renew certificate '\ + \" . (\$CertVal->\"name\") . \"'.\");\r\ + \n\r\ + \n :local ImportSuccess false;\r\ + \n :if ([ :len (\$CertVal->\"common-name\") ] > 0) do={\r\ + \n :set LastName (\$CertVal->\"common-name\");\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$ScriptN\ + ame \$LastName \$FetchName ];\r\ + \n }\r\ + \n :foreach SAN in=(\$CertVal->\"subject-alt-name\") do={\r\ + \n :if (\$ImportSuccess = false) do={\r\ + \n :set LastName [ :pick \$SAN ([ :find \$SAN \":\" ] + 1) [ :len\ + \_\$SAN ] ];\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scrip\ + tName \$LastName \$FetchName ];\r\ + \n :if (\$ImportSuccess = false && [ :pick \$LastName 0 2 ] = \"*\ + .\") do={\r\ + \n :set FetchName (\"star.\" . [ :pick \$LastName 2 [ :len \$La\ + stName ] ]);\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scr\ + iptName \$LastName \$FetchName ];\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$ImportSuccess = false) do={ :error false; }\r\ + \n\r\ + \n :if ([ :len (\$CertVal->\"fingerprint\") ] > 0 && \$CertVal->\"fin\ + gerprint\" != [ /certificate/get \$Cert fingerprint ]) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was updated in place.\");\r\ + \n :set CertVal [ /certificate/get \$Cert ];\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was not updated, but replaced.\");\r\ + \n\r\ + \n :local CertNew [ /certificate/find where name~(\"^\" . [ \$Escap\ + eForRegEx [ \$UrlEncode \$FetchName ] ] . \"\\\\.(p12|pem)_[0-9]+\\\$\") \ + \\\r\ + \n (common-name=(\$CertVal->\"common-name\") or subject-alt-name~\ + (\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRegEx \$LastName ] . \"(\\\\W|\\\$)\ + \")) \\\r\ + \n fingerprint!=[ :tostr (\$CertVal->\"fingerprint\") ] ];\r\ + \n :local CertNewVal [ /certificate/get \$CertNew ];\r\ + \n\r\ + \n :if ((\$CertVal->\"expires-after\") > (\$CertNewVal->\"expires-a\ + fter\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate is newer th\ + an the new one. Aborting renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ((\$CertVal->\"private-key\") = true && (\$CertVal->\"privat\ + e-key\") != (\$CertNewVal->\"private-key\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate '\" . (\$Ce\ + rtVal->\"name\") . \"' has a private key, new certificate does not. Aborti\ + ng renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable ([ \$ParseKeyValueStore (\$CertNew\ + Val->\"issuer\") ]->\"CN\") \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"The certificate chain is no\ + t available!\");\r\ + \n }\r\ + \n\r\ + \n /ip/service/set certificate=(\$CertNewVal->\"name\") [ find wher\ + e certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/ipsec/identity/set certificate=(\$CertNewVal->\"name\") [ fi\ + nd where certificate=(\$CertVal->\"name\") ];\r\ + \n /ip/ipsec/identity/set remote-certificate=(\$CertNewVal->\"name\ + \") [ find where remote-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/hotspot/profile/set ssl-certificate=(\$CertNewVal->\"name\")\ + \_[ find where ssl-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /certificate/remove \$Cert;\r\ + \n /certificate/set \$CertNew name=(\$CertVal->\"name\");\r\ + \n :set Cert \$CertNew;\r\ + \n :set CertVal [ /certificate/get \$CertNew ];\r\ + \n }\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; silent=true; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen\" ] . \"C\ + ertificate renewed: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" has been renewe\ + d.\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' has been renewed.\");\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not renew certificate '\" .\ + \_(\$CertVal->\"name\") . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !scep-url !(expire\ + s-after=[]) \\\r\ + \n expires-after<\$CertWarnTime !(fingerprint=[]) ] do\ + ={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/scep-server/find where ca-cert=(\$CertVal\ + ->\"ca\") ] ] > 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . (\$CertVal->\"n\ + ame\") . \"' is handled by SCEP, skipping.\");\r\ + \n } else={\r\ + \n :local State [ \$IfThenElse ((\$CertVal->\"expired\") = true) \"ex\ + pired\" \"is about to expire\" ];\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen,warning-s\ + ign\" ] . \"Certificate warning: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" \" . \$State . \ + \".\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' \" . \$State . \\\r\ + \n \", it is invalid after \" . (\$CertVal->\"invalid-after\") . \ + \".\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\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\ + \n# RouterOS script: AM-GlobalConfig\ + \n# Script comment: Global Config Script\ + \n# Copyright (c) 2007-2026 Vados \ + \n#\ + \n#\ + \n# Warning: Dont touch this line!\ + \n:global GlobalConfReady false;\ + \n#\ + \n#\ + \n# Global Url For Amster scripts to fetch\ + \n# most be defined in AM-Init-Script or AM-setup scripts\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global ScriptsUrlSuffix \"\";\ + \n:global CheckSumsVerify true;\ + \n\ + \n:global ScriptUpdatesCRLF true;\ + \n:global CommentsInScripts true;\ + \n\ + \n# Debug output:\ + \n:global PrintDebug true; #false;\ + \n\ + \n# Debug output for specific script:\ + \n:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\ + \n\ + \n# Debug logs\ + \n# Other actions (disk, email, remote or support) can be used as well.\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\ + \n#/system/logging/add topics=script,debug action=memory;\ + \n\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\ + \n:global Domain \"WORKGROUP\";\ + \n\ + \n:global EmailGeneralTo \"vados@vados.ru\";\ + \n#:global EmailGeneralCc \"\";\ + \n\ + \n# \$ScriptInstallUpdate mod/notification-telegram\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\ + \n# Use this to send notifications to a specific topic in group.\ + \n#:global TelegramThreadId \"30\";\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\ + \n# or user names. Groups allow to chat with devices simultaneously.\ + \n:global TelegramChatIdsTrusted {\ + \n \"454403445\"\ + \n \"-1003631309063\"\ + \n \"-5124482807\"\ + \n \"1087968824\";\ + \n};\ + \n# \"-5294757340\";\ + \n\ + \n:global TelegramChatGroups \"(all)\";\ + \n#:global TelegramChatGroups \"(all|home|office)\";\ + \n\ + \n:global NotificationFunctions {\ + \n \"email\"\ + \n \"telegram\";\ + \n};\ + \n# Toggle this to disable symbols in notifications.\ + \n:global NotificationsWithSymbols true;\ + \n:global TerminalColorOutput true;\ + \n\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\ + \n\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\ + \n:global updateChannel \"stable\";\ + \n\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\");\ + \n:global CertRenewTime 2w;\ + \n:global CertRenewPass {\ + \n \"\";\ + \n# \"v3ry-s3cr3t\";\ + \n# \"4n0th3r-s3cr3t\";\ + \n};\ + \n:global CertWarnTime 1w;\ + \n:global CertIssuedExportPass {\ + \n \"\";\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\ + \n};\ + \n\ + \n# Script BackupAndUpdate mode, possible values: backup,\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\ + \n# osnotify - Set `forceBackup` to always create backups on every run\ + \n:global DevInfoIncludeIP true;\ + \n:global BackupAndUpdateMode \"osnotify\"\ + \n\ + \n:global forceBackup true;\ + \n:global BackupPassword \"Peskar55\";\ + \n\ + \n# SFTP Backup Variables\ + \n:global BackupRandomDelay 0;\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\ + \n:global BackupUploadUser \$Identity;\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\ + \n\ + \n:global BackupSendBinary true;\ + \n:global BackupSendExport true;\ + \n:global BackupSendGlobalConfig true;\ + \n:global BackupSendScripts true;\ + \n\ + \n# Remove local file after uploading if no errors\ + \n:global BackupRmLocal true;\ + \n\ + \n# Local Backups Root Directory \ + \n:global BackupLocalRoot \"tmpfs\";\ + \n\ + \n# Encrypt Backup\ + \n:global BackupEncrypt true;\ + \n\ + \n# Sensitive information in Backups\ + \n:global BackupSens true;\ + \n\ + \n# User Export\ + \n:global BackupUser true;\ + \n\ + \n# License Export (not for CHR, will silently skip)\ + \n:global BackupLicense false;\ + \n\ + \n# SSH Keys\ + \n:global BackupSshKeys true;\ + \n\ + \n# Certificate Export\ + \n:global BackupCerts true;\ + \n\ + \n# Certificate Password\ + \n:global BackupCertsPasswd \"\";\ + \n\ + \n# User-Manager Export\ + \n:global BackupUserMan false;\ + \n\ + \n# The Dude Export\ + \n:global BackupDude false;\ + \n\ + \n# User Files to export, comma-separated string or array of strings\ + \n# User Files are not removed on backup\ + \n# Any directory paths will be removed (/ -> _) on remote file\ + \n# Nonpresent files are silently skipped\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\ + \n\ + \n# load functions and any custom scripts\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\ + \n#\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \n# :onerror Err {\ + \n# /system/script/run \$Script;\ + \n# } do={\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\ + \n# }\ + \n#}\ + \n#:log info \"\\ndevMode = \$devMode\";\ + \n#:log info \"\\ndevRunning = \$devRunning\";\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\ + \n :onerror Err {\ + \n /system/script/run \$Script;\ + \n } do={\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\ + \n }\ + \n}\ + \n\ + \n# signal we are ready\ + \n:set GlobalConfReady true;\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\ + \n" +add comment="Renew locally issued certificates" dont-require-permissions=no \ + name=AM-CertsRenew owner=AM-CertsRenew policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CertsRenew\r\ + \n# Script comment: Renew locally issued certificates\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global CertIssuedExportPass;\r\ + \n\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global ScriptLock;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Update Local Issued Certificates.\"\ + ;\r\ + \n#/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=st\ + artup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where issued expires-after<3w ] d\ + o={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n /certificate/issued-revoke \$Cert;\r\ + \n /certificate/set name=(\$CertVal->\"name\" . \"-revoked-\" . [ /syst\ + em/clock/get date ]) \$Cert;\r\ + \n /certificate/add name=(\$CertVal->\"name\") common-name=(\$CertVal->\ + \"common-name\") \\\r\ + \n key-usage=(\$CertVal->\"key-usage\") subject-alt-name=(\$CertVal\ + ->\"subject-alt-name\");\r\ + \n /certificate/sign (\$CertVal->\"name\") ca=(\$CertVal->\"ca\");\r\ + \n :if ([ :typeof (\$CertIssuedExportPass->(\$CertVal->\"common-name\")\ + ) ] = \"str\") do={\r\ + \n :if ([ \$MkDir \"cert-issued\" ] = true) do={\r\ + \n /certificate/export-certificate (\$CertVal->\"name\") type=pkcs1\ + 2 \\\r\ + \n file-name=(\"cert-issued/\" . \$CertVal->\"common-name\") \\\ + \r\ + \n export-passphrase=(\$CertIssuedExportPass->(\$CertVal->\"com\ + mon-name\"));\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\"\ + \_. \$CertVal->\"common-name\" . \\\r\ + \n \"', exported to 'cert-issued/\" . \$CertVal->\"common-name\" \ + . \".p12'.\");\r\ + \n } else={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed creating directory, no\ + t exporting certificate.\");\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\" .\ + \_\$CertVal->\"common-name\" . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/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=fetch +/disk settings +set auto-media-interface=lo default-mount-point-template=usb1 +/ip smb +set comment=MikroVados domain=WORKGROUP enabled=yes interfaces=Bridge-LAN +/interface bridge port +add bridge=Bridge-LAN ingress-filtering=no interface=ether2 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=LEN ingress-filtering=no interface=ether3 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=NUC ingress-filtering=no interface=ether4 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN ingress-filtering=no interface=ether5 \ + internal-path-cost=10 path-cost=10 +/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 disable-ipv6=yes 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 comment=WAN 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 cap +set caps-man-addresses=10.30.30.10 certificate=request discovery-interfaces=\ + wlan1,wlan2 lock-to-caps-man=no slaves-static=no +/interface wifi capsman +set package-path="" require-peer-certificate=no upgrade-policy=none +/interface wifi provisioning +add action=create-dynamic-enabled disabled=no master-configuration=2G-N \ + name-format=2G-%I slave-configurations=2G-G supported-bands=\ + 2ghz-n,2ghz-g,2ghz-g +add action=create-dynamic-enabled disabled=no master-configuration=5G-AC \ + name-format=5G-%I supported-bands=5ghz-ac,5ghz-ac +/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-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/interface wireless sniffer +set file-name=24g +/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="ether1 - Unet" \ + use-peer-dns=no +/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.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.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=1:20:72:a9:d3:34:36 dhcp-option=HostName \ + dhcp-option-set=MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP \ + use-src-mac=yes +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 +add address=10.30.30.86 dhcp-option=HostName dhcp-option-set=MikroYellow \ + mac-address=48:8F:5A:8E:1A:C2 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=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=git.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=ros.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.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" 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" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=2606:4700:4700::1111 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +add address=2606:4700:4700::1001 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +/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=amster-nuc disabled=yes list=NoWG +add address=10.30.30.11 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=10.30.30.95 comment=NUC list=NoWG +add address=glb.tas02.cws-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.cws.update.microsoft.com list=windowsupdateslist +add address=glb.cwsapp.prod.dcat.dsp.trafficmanager.net. comment=\ + glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas01.cwsapp.update.microsoft.com list=windowsupdateslist +add address=disc601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +/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 disabled=yes +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 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack main traffic" connection-state=established,related disabled=\ + yes +/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" \ + disabled=yes 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="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +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=dst-nat chain=dstnat comment=npm disabled=yes 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" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes 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 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=udp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=tcp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=udp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +/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 walled-garden +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 +add disabled=yes distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet 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 +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +add action=add-src-to-address-list address-list=bad_ipv6 \ + address-list-timeout=none-dynamic chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked in-interface=WG in-interface-list=WAN \ + src-address-list="" +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +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 packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/ppp secret +add local-address=192.168.60.1 name=vados remote-address=192.168.60.2 \ + service=l2tp +/routing bfd configuration +add disabled=no +/snmp +set contact=@AmsterNL enabled=yes engine-id-suffix=MikroMaster location=NL \ + src-address=10.30.30.81 trap-interfaces=Bridge-LAN,WG trap-target=\ + 10.30.30.10 +/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="Windows Update script" interval=2d5m name=WU-script-run-schedule \ + on-event=WU-add-to-list policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2014-02-11 start-time=00:00:00 +add comment="Backup Every Week" disabled=yes interval=1w name=BackupEveryWeek \ + on-event=BackupAndUpdate policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-07-07 start-time=03:41:27 +add comment="DoH Cache Flush" interval=1d name="DNS Cache Flush" on-event=\ + DNS_Flush_Cache policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2019-12-06 start-time=05:30:00 +add comment="Create mkdir function on startup" name=\ + create_mkdir_function_on_startup on-event=\ + "/system script run create_mkdir_function;" policy=read,write,policy,test \ + start-time=startup +add comment="Scheduler for Update Certificates CloudFlare Quad9" 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="Scheduler for Amster-Backup-UpdateEmail" disabled=yes interval=\ + 1w name=Amster-Backup-UpdateEmail on-event=\ + "/system/script { run Amster-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-02-13 start-time=03:41:27 +add comment="Setup Global Environment for scripts" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Renew Certificates" interval=1d name=\ + AM-CheckCerts on-event="/system/script/run AM-CheckCerts;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Auto-update Cloudflare Root CA for DoH" interval=2w name=\ + AM-DOHCert on-event="/import AM-DOHCert.rsc" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-04-15 start-time=03:00:00 +/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/20260430/20260430080001-Diff-Config.rsc b/MikroMaster/history/20260430/20260430080001-Diff-Config.rsc new file mode 100644 index 0000000..0105346 --- /dev/null +++ b/MikroMaster/history/20260430/20260430080001-Diff-Config.rsc @@ -0,0 +1,7 @@ +4273,4275c4273,4274 +< disabled=yes 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 +--- +> 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 -- 2.52.0