From 8882bc90add8ce3a935b59f3f4076d957c71fa4a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 30 Apr 2026 09:20:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 30 09:20:08. --- .../20260430/20260430092002-Binary.backup | Bin 0 -> 318070 bytes .../20260430/20260430092002-Config.rsc | 4613 +++++++++++++++++ .../20260430/20260430092002-Diff-Config.rsc | 7 + 3 files changed, 4620 insertions(+) create mode 100644 MikroMaster/20260430/20260430092002-Binary.backup create mode 100644 MikroMaster/20260430/20260430092002-Config.rsc create mode 100644 MikroMaster/history/20260430/20260430092002-Diff-Config.rsc diff --git a/MikroMaster/20260430/20260430092002-Binary.backup b/MikroMaster/20260430/20260430092002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..103004eda6e5ed5c796ce94362a5819a065a16d4 GIT binary patch literal 318070 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
1hZ<*V8R%5o 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

-8QRTKP9>%MWEuvPG1F+V`S7{^micv+1V?aO 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

&9UN&&3`-9@DTFK79N^`8c&S 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 JPAVxzUyN=DF1^H%? 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260430/20260430092002-Config.rsc b/MikroMaster/20260430/20260430092002-Config.rsc new file mode 100644 index 0000000..cddd6f7 --- /dev/null +++ b/MikroMaster/20260430/20260430092002-Config.rsc @@ -0,0 +1,4613 @@ +# 2026-04-30 09:20: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" \ + 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/20260430092002-Diff-Config.rsc b/MikroMaster/history/20260430/20260430092002-Diff-Config.rsc new file mode 100644 index 0000000..ded7b71 --- /dev/null +++ b/MikroMaster/history/20260430/20260430092002-Diff-Config.rsc @@ -0,0 +1,7 @@ +4273,4274c4273,4275 +< 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 +--- +> 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 -- 2.52.0

bC+HVp%ab+IdpO$``?!y&o~7vp?v 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%0D1#>MXWiK((IEC( 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