From e6beb7d4d73db166ea56ff75544a69ecc7f112d3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 30 Apr 2026 11:40:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 30 11:40:08. --- .../20260430/20260430114002-Binary.backup | Bin 0 -> 318233 bytes .../20260430/20260430114002-Config.rsc | 4618 +++++++++++++++++ .../20260430/20260430114002-Diff-Config.rsc | 8 + 3 files changed, 4626 insertions(+) create mode 100644 MikroMaster/20260430/20260430114002-Binary.backup create mode 100644 MikroMaster/20260430/20260430114002-Config.rsc create mode 100644 MikroMaster/history/20260430/20260430114002-Diff-Config.rsc diff --git a/MikroMaster/20260430/20260430114002-Binary.backup b/MikroMaster/20260430/20260430114002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ff513c34d84b9deb22badb3015676873c04130a4 GIT binary patch literal 318233 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

ZQ-NpNd9T_T1=Wt38>5Hlj$7jBI(g^@$tuRg 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 =^U@vS&wbiCtZG~2!oc1K_&STQC3 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

pL_X$LX9L*g$;1<{J_13MjuA~& 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260430/20260430114002-Config.rsc b/MikroMaster/20260430/20260430114002-Config.rsc new file mode 100644 index 0000000..62525f9 --- /dev/null +++ b/MikroMaster/20260430/20260430114002-Config.rsc @@ -0,0 +1,4618 @@ +# 2026-04-30 11:40: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/268/e6e9840c\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 10:40:03 30.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" +add dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "#!rsc by Vados\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/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/20260430114002-Diff-Config.rsc b/MikroMaster/history/20260430/20260430114002-Diff-Config.rsc new file mode 100644 index 0000000..81684a0 --- /dev/null +++ b/MikroMaster/history/20260430/20260430114002-Diff-Config.rsc @@ -0,0 +1,8 @@ +695c695 +< \n:global CommitId \"main/268/e6e9840c\";\r\ +--- +> \n:global CommitId \"main/266/c0a5c627\";\r\ +698c698 +< r: root, in 10:40:03 30.04.2026.\";\r\ +--- +> r: root, in 03:10:03 28.04.2026.\";\r\ -- 2.52.0