From c18a63e47af37524e87790cda80c46fa668ef77d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 23 Apr 2026 17:20:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 23 17:20:08. --- .../20260423/20260423172002-Binary.backup | Bin 0 -> 315902 bytes .../20260423/20260423172002-Config.rsc | 4535 +++++++++++++++++ .../20260423/20260423172002-Diff-Config.rsc | 7 + 3 files changed, 4542 insertions(+) create mode 100644 MikroMaster/20260423/20260423172002-Binary.backup create mode 100644 MikroMaster/20260423/20260423172002-Config.rsc create mode 100644 MikroMaster/history/20260423/20260423172002-Diff-Config.rsc diff --git a/MikroMaster/20260423/20260423172002-Binary.backup b/MikroMaster/20260423/20260423172002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..c8f739725538081d03009a4e5ace2a602704aa8e GIT binary patch literal 315902 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 z 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

Y_%CFVa{Sr8J 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

3P} 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�#0)a~bLApGfvHacn*BdiE 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

#X2Y4kVg$b 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%0A@<@s}u_LYJcxbKFOm~B`A$x90xrPD-GUkXb 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

BV$->s$~1+Kea)E}P4Hg$NxC;RJXmH;cpb}B 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 DQRjsX literal 0 HcmV?d00001 diff --git a/MikroMaster/20260423/20260423172002-Config.rsc b/MikroMaster/20260423/20260423172002-Config.rsc new file mode 100644 index 0000000..fd41163 --- /dev/null +++ b/MikroMaster/20260423/20260423172002-Config.rsc @@ -0,0 +1,4535 @@ +# 2026-04-23 17:20:02 by RouterOS 7.22 +# software id = 2961-C4ZZ +# +# model = RBD52G-5HacD2HnD +# serial number = HCX084RAVFA +/interface bridge +add admin-mac=48:8F:5A:60:A1:0B auto-mac=no name=Bridge-LAN port-cost-mode=\ + short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + F6:BE:9D:85:53:F5 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + station-roaming=enabled wds-default-bridge=Bridge-LAN wds-mode=\ + dynamic-mesh wireless-protocol=802.11 wmm-support=enabled wps-mode=\ + disabled +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g station-roaming=enabled \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man security +add authentication-types=wpa-psk,wpa2-psk encryption=aes-ccm \ + group-encryption=aes-ccm name=security +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz security=security ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac security=security ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an security=security ssid=vados5g +/disk +add media-interface=lo slot=tmpfs tmpfs-max-size=44739242 type=tmpfs +/interface list +add comment=defconf name=WAN +add comment=defconf name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +add name=mVados options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=m.blsp.at verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/ip dhcp-server +add add-arp=yes address-pool=dhcp dhcp-option-set=domain-search-set \ + dynamic-lease-identifiers=client-mac,client-id,opt-82 interface=\ + Bridge-LAN lease-time=10m name=masterDHCP server-address=10.30.30.81 \ + use-reconfigure=yes +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add dont-require-permissions=no name=create_mkdir_function owner=vados \ + policy=read,write source="# Written by Phillip Stromberg in 2019\r\ + \n# Distributed under the MIT license\r\ + \n# \r\ + \n# \r\ + \n# this creates a function called \$mkdir\r\ + \n# from the command line you will be able to just type \"\$mkdir some/new\ + /folder\"\r\ + \n# and all the folders that need to be created will be\r\ + \n# if the folder already existed, it is ignored\r\ + \n\r\ + \n:log info \"Creating \\\$mkdir function...\"\r\ + \n\r\ + \n:global mkdir do={\r\ + \n # \$1 refers to the input variable the user passed in to us\r\ + \n :local newFolder \$1;\r\ + \n\r\ + \n # we'll use this variable to report error messages that may arise\r\ + \n :local errorMsg;\r\ + \n\r\ + \n # if the user put a slash on the end of the new folder name, remove \ + it\r\ + \n # i.e. \"some/test/\" becomes \"some/test\"\r\ + \n :while (([:pick \$newFolder ([:len \$newFolder] - 1)]) = \"/\") do={\ + \r\ + \n :set newFolder [:pick \$newFolder 0 ([:len \$newFolder] - 1)]\r\ + \n }\r\ + \n\r\ + \n # if the user put a slash at the beginning of the new folder name, r\ + emove it\r\ + \n # i.e. \"/some/test\" becomes \"some/test\"\r\ + \n :while ([:pick \$newFolder 0] = \"/\") do={\r\ + \n :set newFolder [:pick \$newFolder 1 [:len \$newFolder]]\r\ + \n }\r\ + \n\r\ + \n :if ([/file find name=\$newFolder] != \"\") do={\r\ + \n :set errorMsg \"'\$newFolder' already exists.\";\r\ + \n :log debug \"mkdir: \$errorMsg\";\r\ + \n :return \$newFolder;\r\ + \n }\r\ + \n\r\ + \n # the name of the temp file to create\r\ + \n :local tempfile \"mkdir_temp_file.txt\";\r\ + \n\r\ + \n # port 0 is unlikely to be open to HTTP requests...\r\ + \n :local fakeURL \"http://127.0.0.1:0/should-not-exist.txt\";\r\ + \n\r\ + \n :local fullTempPath (\$newFolder . \"/\" . \$tempfile);\r\ + \n\r\ + \n # this is where the folder creation happens\r\ + \n # `as-value` prevents status messages from printing\r\ + \n # wrapping in a `:do {...} on-error` prevents error messages from pr\ + inting.\r\ + \n :do {\r\ + \n /tool fetch dst-path=\"\$fullTempPath\" url=\"\$fakeURL\" durati\ + on=0.001s as-value;\r\ + \n } on-error={}\r\ + \n\r\ + \n # this waits for the temporary dir to show up so there isn't a race \ + \r\ + \n # condition where you call mkdir and then try to do something before\ + \_the \r\ + \n # folder is actually created\r\ + \n :local count 0;\r\ + \n :while ([/file find name=\"\$newFolder\"] = \"\") do={\r\ + \n :if (\$count >= 50) do={\r\ + \n # after 50 * 0.1s delays, it's been 5 seconds, which should \ + be long enough\r\ + \n :set errorMsg \"New folder could not be created at \$newFold\ + er\";\r\ + \n :log error \"mkdir: \$errorMsg\"\r\ + \n :error \$errorMsg\r\ + \n }\r\ + \n :delay 0.1s;\r\ + \n :set count (\$count + 1);\r\ + \n }\r\ + \n\r\ + \n :return \$newFolder;\r\ + \n}\r\ + \n\r\ + \n:log info \"Created function \\\$mkdir\"\r\ + \n" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=CustomUpdate-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n/tool/fetch mode=https url=https://developers.cloudflare.com/ssl/static/\ + origin_ca_ecc_root.pem;\r\ + \n/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalRo\ + otCA.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\"\ + \";\r\ + \n/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalG\ + 2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGlobal\ + G3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n\r\ + \n#:global AmScriptsUrl;\r\ + \n#google\r\ + \n#:local CertName \"GTS-Root-R1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-R4.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#:set CertName \"ISRG-Root-X1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add dont-require-permissions=no name=AM-setup owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_RouterOS Setup Script: AM-setup\r\ + \n# \r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n\r\ + \n## Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:if ([ :len [ /system/script/find where name=\$ScriptName ]] = 0 ) do={\ + \r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# :global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n# /system/script/add name=\$ScriptName owner=\$ScriptName source=([ /too\ + l/fetch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptNa\ + me . \".rsc\") output=user as-value ]->\"data\");\r\ + \n#}\r\ + \n# For run from terminal:\r\ + \n# /system/script/add name=AM-setup owner=AM-Setup source=([ /tool/fetch \ + check-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" ou\ + tput=user as-value ]->\"data\");\r\ + \n#\r\ + \n# /system/script/set source=[ :tocrlf [ get \$ScriptName source ] ] \$Sc\ + riptName;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local RemoveThisScript false;\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n{\r\ + \n :local ScriptName;\r\ + \n :local RemoveThisScript;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local AllDone;\r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n:log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :put \"Add Schedulers...\";\r\ + \n :delay 1;\r\ + \n :put \"Add Global scheduler...\";\r\ + \n :local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFu\ + nc; }\";\r\ + \n :local Comment \"Setup Global Environment for scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] \ + ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-\ + event=\$OnEvent start-time=startup;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Commen\ + t) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEve\ + nt) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Add Update Script scheduler\";\r\ + \n :set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\"\ + ;\r\ + \n :set Comment \"Every Day Check For Update Scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpda\ + te\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Commen\ + t start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n }\r\ + \n\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n /system/script { run AM-GlobalConfig; run AM-GlobalFunc; };\r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :set AllDone true;\r\ + \n } on-error={\r\ + \n :set AllDone false;\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$ScriptName . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n\r\ + \n :delay 5s;\r\ + \n :if (\$AllDone = true && \$RemoveThisScript = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :set OnEvent \":delay 30s; /system/script/remove [ find where name=\$S\ + criptName ]; :delay5s; /system/scheduler/remove [ find where name=\\\"_Rem\ + oveSetup\\\" ];\";\r\ + \n :set Comment \"_RemoveSetup tmp scheduler for remove setup script.\";\ + \r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-ti\ + me=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$ScriptName . \"\\nI've done everything, and now I'm ti\ + red... I'm leaving. ))\\nThere will be an error below, this is normal.\");\ + \r\ + \n }\r\ + \n};\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n:local FetchFile AM-DOHCert.rsc\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \"[usb1]/scripts/\" . \$FetchFile);\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/247/016960a4\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 03:45:02 16.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 \$LogPrint debug \$0 (\"\\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if (\$CurrentChannel != \$updateChannel) 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 (\$Update->\"channel\");\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\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 \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([:len \$arrDeviceInfo] = 0) do={\r\ + \n :global arrDeviceInfo ({});\r\ + \n :local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};}\ + );\r\ + \n }\r\ + \n # else={:local arrDeviceInfo ({})}\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [[ :parse \"/\ + system/package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"\ + Error\")};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannel\"; \$Cu\ + rrentChannel;};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentVersion\"; (\$U\ + pdate->\"installed-version\");};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannelVersion\ + \"; [/system/resource/get version];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateChannel\"; [\$up\ + dateChannel];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateVersion\"; (\$Up\ + date->\"latest-version\");};\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\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\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n\r\ + \n :global arrDeviceInfo [:toarray {\"section\"={\"key\"=\"\"; \"value\"\ + =\"\";} }];\r\ + \n #:do {:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system/package\ + /update/get\" ]]} on-error={}\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devRbCurrentFw;\r\ + \n :global devRbUpgradeFw;\r\ + \n\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global ROsVerCurrent;\r\ + \n :global ROsChannelCurrent;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :global ParseCustom;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global devBuildTime;\r\ + \n :global GetPubIp;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :set devBuildTime (\$Resource->\"build-time\");\r\ + \n :set runningChannelVersion (\$Resource->\"version\");\r\ + \n :set runningChannel [\$ParseCustom \$runningChannelVersion \"(\" \")\ + \" 1];\r\ + \n :set runningVersion [\$ParseCustom \$runningChannelVersion \" \"];\r\ + \n\r\ + \n :do {\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :local RouterBoard;\r\ + \n :do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on\ + -error={}\r\ + \n :set devModel (\$RouterBoard->\"model\");\r\ + \n :set devRbRevision (\$RouterBoard->\"revision\");\r\ + \n :set devRbSerialNumber (\$RouterBoard->\"serial-number\");\r\ + \n #:set devRbCurrentFw (\$RouterBoard->\"current-firmware\");\r\ + \n #:set devRbUpgradeFw (\$RouterBoard->\"upgrade-firmware\");\r\ + \n :if (\$devCurArch = \"mipsbe\" || \$devCurArch = \"arm\") do={\r\ + \n :global devRunning [ /system/device-mode/get mode ];\r\ + \n } else={\r\ + \n :global devRunning [/system/device-mode/get running];}\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n\r\ + \n :set devRbRevision false;\r\ + \n :set devRbSerialNumber false;\r\ + \n# :set devRbCurrentFw false;\r\ + \n# :set devRbUpgradeFw false;\r\ + \n #:set devCurrentFw \$runningVersion;#:set devUpgradeFw \$ROsVerAvail\ + ;\r\ + \n :set devRunning [/system/device-mode/get running];\r\ + \n }\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Error in Function getDevice!\");\r\ + \n :return false;\r\ + \n }\r\ + \n:return true;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global WaitArrDeviceInfo;\r\ + \n # \$WaitDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devCurArch;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global PiblicIpAddress;\r\ + \n\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :local Return;\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n\r\ + \n :set Return ([ \$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:\" . \$devBoardName ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Arch:\" . \$devCurArch ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Model:\" \$devModel ] . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbRevision ] > 0) \\\r\ + \n (\" \" . \$devRbRevision) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbSerialNumber ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial:\" . \$devRbSerialNumber ] . \"\\n\"\ + ) ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"nleve\ + l\")) ] . \"\\n\") ] . \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Running Channel\" \$runningChannel ] . \"\\n\" . \\\ + \r\ + \n [ \$FormatLine \" Installed:\" (\$Update->\"installed-version\") \ + ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :typeof (\$Update->\"latest-version\") ] != \"noth\ + ing\" && \\\r\ + \n \$Update->\"installed-version\" != \$Update->\"latest-version\")\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Update->\"latest-version\") ]\ + \_. \"\\n\") ] . \\\r\ + \n [ \$IfThenElse (\$RouterBoard->\"routerboard\" = true && \\\r\ + \n \$RouterBoard->\"current-firmware\" != \$RouterBoard->\"upgrade-\ + firmware\") \\\r\ + \n ([ \$FormatLine \" Firmware\" (\$RouterBoard->\"current-firmwar\ + e\") ] . \"\\n\") ] . \\ \r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n :global LogPrint;\r\ + \n \r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n\r\ + \n# :retry command={abc} delay=1 max=2 on-error={:put \"got error\"} \r\ + \n :do {\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using default s\ + ervice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={\$LogPrint error [ :jobname ] (\"Fail\ + ed to detect public IP using default service: \" . \$Url . \".\")}\r\ + \n #:error \"Failed to detect public IP using default service: \$Url\ + .\"};\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Failed to detect public IP using default s\ + ervice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using fallback \ + service: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={\$LogPrint error [ :jobname ] (\"Fai\ + led to detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :if (\$PubIpAddr = false) do={\r\ + \n :set PubIpAddr \"not-detected\";\r\ + \n } else={\r\ + \n :set PubIpAddr [ :pick \$PubIpAddr 0 15];\r\ + \n }\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n :global CertificateDownload;\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :set UseFor [ \$EitherOr \$UseFor \"undefined\" ];\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n \$LogPrint warning \$0 (\"This system has low free flash space but \ + \" . \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n \$LogPrint info \$0 (\"Certificate with CommonName '\" . \$CommonNam\ + e . \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n \$LogPrint info \$0 (\"There are \" . \$CertCount . \" Certificates \ + with CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n \$LogPrint info \$0 (\"Certificate chain for '\" . \$CommonName . \ + \"' is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n \r\ + \n \$LogPrint info \$0 (\"Downloading and importing certificate with Comm\ + onName '\" . \$CommonName . \"'.\");\r\ + \n \r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({ [\ + \_\$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$GlobalScriptsUrl . \"certs/\" . \$FileName . \$GlobalScriptsUrl\ + Suffix) dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Common\ + Name '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"Required certificate is not available.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Comm\ + onName '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n \$LogPrint warning \$0 (\"Certificate with CommonName '\" . \$Common\ + Name . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :global LogPrint;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n \$LogPrint error \$Name ([ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\ + \$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {:set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :global LogPrint;\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint info \$0 (\"Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Creating disk of type tmpfs failed: \" .\ + \_\$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint debug \$0 (\"... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Making directory '\" . \$Path . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={:set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]};\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={:set Path [ :pick \$Path 1 [ :len\ + \_\$Path ] ]};\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={:set Path [ :\ + pick \$Path 0 ([ :len \$Path ] - 1) ]};\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint error \$0 (\"No valid RouterOS version: \" . \$Required);\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No symbol available for name '\" . \$Name \ + . \"'!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\r\ + \n \r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\r\ + \n \r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Setup Global Environment for scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add comment="Import ssh keys for public key authentication" \ + dont-require-permissions=no name=AM-SshKeysImport owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-SshKeysImport\r\ + \n# Script comment: Import ssh keys for public key authentication\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global configs or functions not ready.\"); }; } del\ + ay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global SSHKeysImport;\r\ + \n:global SSHKeysImportFile;\r\ + \n\r\ + \n# import single key passed as string\r\ + \n:set SSHKeysImport do={ :onerror Err {\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :if ([ :len \$Key ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass key and u\ + ser!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ :len [ /user/find where name=\$User ] ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"User '\" . \$User . \"' does not exist.\")\ + ;\r\ + \n :return false;\r\ + \n }\r\ + \n :local KeyVal ([ :deserialize \$Key delimiter=\" \" from=dsv options=d\ + sv.plain ]->0);\r\ + \n :if (!(\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\")) do\ + ={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' is\ + \_not supported.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FingerPrintMD5 [ :convert from=base64 transform=md5 to=hex (\$K\ + eyVal->1) ];\r\ + \n :local RegEx (\"\\\\bmd5=\" . \$FingerPrintMD5 . \"\\\\b\");\r\ + \n :if ([ :len [ /user/ssh-keys/find where user=\$User \\\r\ + \n (key-owner~\$RegEx or info~\$RegEx) ] ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The ssh public key (MD5:\" . \$FingerPrint\ + MD5 . \\\r\ + \n \") is already available for user '\" . \$User . \"'.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$MkDir \"tmpfs/ssh-keys-import\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Creating directory 'tmpfs/ssh-keys-import'\ + \_failed!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\"tmpfs/ssh-keys-import/key-\" . [ \$GetRandom20CharA\ + lNum 6 ] . \".pub\");\r\ + \n /file/add name=\$FileName contents=(\$Key . \", md5=\" . \$FingerPrint\ + MD5);\r\ + \n \$WaitForFile \$FileName;\r\ + \n :onerror Err {\r\ + \n /user/ssh-keys/import public-key-file=\$FileName user=\$User;\r\ + \n \$LogPrint info \$0 (\"Imported ssh public key (\" . \$KeyVal->2 . \ + \", \" . \$KeyVal->0 . \", \" . \\\r\ + \n \"MD5:\" . \$FingerPrintMD5 . \") for user '\" . \$User . \"'.\");\ + \r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key: \" . \$Err);\r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n :return false;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# import keys from a file\r\ + \n:set SSHKeysImportFile do={ :onerror Err {\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global FileExists;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global SSHKeysImport;\r\ + \n :if ([ :len \$FileName ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass file name\ + \_and user!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$FileExists \$FileName ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"File '\" . \$FileName . \"' does not exist\ + .\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Keys [ :tolf [ /file/get \$FileName contents ] ];\r\ + \n :foreach KeyVal in=[ :deserialize \$Keys delimiter=\" \" from=dsv opti\ + ons=dsv.plain ] do={\r\ + \n :local Continue false;\r\ + \n :if (\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\") do=\ + {\r\ + \n :if ([ \$SSHKeysImport (\$KeyVal->0 . \" \" . \$KeyVal->1 . \" \" \ + . \$KeyVal->2) \$User ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key for user '\" . \$\ + User . \"'.\");\r\ + \n }\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && \$KeyVal->0 = \"#\") do={\r\ + \n :set User [ \$EitherOr ([ \$ParseKeyValueStore (\$KeyVal->1) ]->\"\ + user\") \$User ];\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && [ :len (\$KeyVal->0) ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' \ + is not supported.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Check for certificates validity" dont-require-permissions=no \ + name=AM-CheckCerts owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CheckCerts\r\ + \n# Script comment: Check for certificates validity\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global CertRenewTime;\r\ + \n :global CertRenewUrl;\r\ + \n :global CertWarnTime;\r\ + \n :global Identity;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EscapeForRegEx;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global ScriptLock;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n# :global WaitFullyConnected;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Renew Certificates\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :local CheckCertificatesDownloadImport do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local CertName [ :tostr \$2 ];\r\ + \n :local FetchName [ :tostr \$3 ];\r\ + \n\r\ + \n :global CertRenewUrl;\r\ + \n :global CertRenewPass;\r\ + \n\r\ + \n :global CertificateNameByCN;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global UrlEncode;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :foreach Type in={ \"p12\"; \"pem\" } do={\r\ + \n :local CertFileName ([ \$UrlEncode \$FetchName ] . \".\" . \$Type)\ + ;\r\ + \n \$LogPrint debug \$ScriptName (\"Trying type '\" . \$Type . \"' fo\ + r '\" . \$CertName . \\\r\ + \n \"' (file '\" . \$CertFileName . \"')...\");\r\ + \n\r\ + \n :do {\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] \ + }) \\\r\ + \n (\$CertRenewUrl . \$CertFileName) dst-path=\$CertFileName \ + as-value;\r\ + \n } do={\r\ + \n :if (!(\$Err ~ \"[Ss]tatus 404\")) do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching certificate: \" . \ + \$Err);\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n \$WaitForFile \$CertFileName; \r\ + \n\r\ + \n :local DecryptionFailed true;\r\ + \n :foreach I,PassPhrase in=\$CertRenewPass do={\r\ + \n :do {\r\ + \n \$LogPrint debug \$ScriptName (\"Trying \" . \$I . \". passp\ + hrase... \");\r\ + \n :local Result [ /certificate/import file-name=\$CertFileName\ + \_passphrase=\$PassPhrase as-value ];\r\ + \n :if (\$Result->\"decryption-failures\" = 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Success!\");\r\ + \n :set DecryptionFailed false;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \$RmFile \$CertFileName;\r\ + \n\r\ + \n :if (\$DecryptionFailed = true) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Decryption failed for certi\ + ficate file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n\r\ + \n :foreach CertInChain in=[ /certificate/find where common-name!=\ + \$CertName !private-key \\\r\ + \n name~(\"^\" . [ \$EscapeForRegEx \$CertFileName ] . \"_[0-9]\ + +\\\$\") \\\r\ + \n !(subject-alt-name~(\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRe\ + gEx \$CertName ] . \"(\\\\W|\\\$)\")) \\\r\ + \n !(common-name=[]) ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$CertInChain common-\ + name ];\r\ + \n }\r\ + \n\r\ + \n :return true;\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not download certificate \ + file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FormatInfo do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global FormatLine;\r\ + \n :global FormatMultiLines;\r\ + \n :global IfThenElse;\r\ + \n\r\ + \n :local FormatExpire do={\r\ + \n :global CharacterReplace;\r\ + \n :return [ \$CharacterReplace [ \$CharacterReplace [ :tostr \$1 ] \ + \"w\" \"w \" ] \"d\" \"d \" ];\r\ + \n }\r\ + \n\r\ + \n :local FormatCertChain do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :typeof (\$CertVal->\"issuer\") ] = \"nothing\") do={\r\ + \n :return \"self-signed\";\r\ + \n }\r\ + \n\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=5 do={\r\ + \n :set Return (\$Return . [ \$ParseKeyValueStore (\$CertVal->\"iss\ + uer\") ]->\"CN\");\r\ + \n :if ([ :len [ /certificate/builtin/find where skid=(\$CertVal->\ + \"akid\") ] ] > 0) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :do {\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\ + \"akid\") ] ];\r\ + \n } on-error={\r\ + \n :return (\$Return . \" (possibly incomplete!)\");\r\ + \n }\r\ + \n :if ((\$CertVal->\"akid\") = \"\" || (\$CertVal->\"akid\") = (\$\ + CertVal->\"skid\")) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :set Return (\$Return . \" -> \");\r\ + \n }\r\ + \n :return (\$Return . \"...\");\r\ + \n }\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Name\" (\$CertVal->\"name\") ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"common-name\") ] > 0) ([ \$Fo\ + rmatLine \"CommonName\" (\$CertVal->\"common-name\") ] . \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"subject-alt-name\") ] > 0) ([\ + \_\$FormatMultiLines \"SubjectAltNames\" (\$CertVal->\"subject-alt-name\")\ + \_] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Private key\" [ \$IfThenElse ((\$CertVal->\"priva\ + te-key\") = true) \"available\" \"missing\" ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \"Fingerprint\" (\$CertVal->\"fingerprint\") ] . \"\ + \\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"ca\") ] > 0) [ \$FormatLine \ + \"Issuer\" (\$CertVal->\"ca\") ] [ \$FormatLine \"Issuer chain\" [ \$Forma\ + tCertChain \$Cert ] ] ] . \"\\n\" . \\\r\ + \n \"Validity:\\n\" . \\\r\ + \n [ \$FormatLine \" days\" (\$CertVal->\"days-valid\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" from\" (\$CertVal->\"invalid-before\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" to\" (\$CertVal->\"invalid-after\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" time left\" [ \$IfThenElse ((\$CertVal->\"exp\ + ired\") = true) \"expired\" [ \$FormatExpire (\$CertVal->\"expires-after\"\ + ) ] ] ]);\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n# \$WaitFullyConnected;\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !ca !scep-url expi\ + res-after<\$CertRenewTime ] do={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n :local LastName;\r\ + \n :local FetchName;\r\ + \n\r\ + \n :do {\r\ + \n :if ([ :len \$CertRenewUrl ] = 0) do={\r\ + \n \$LogPrint info \$ScriptName (\"No CertRenewUrl given.\");\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Attempting to renew certificate '\ + \" . (\$CertVal->\"name\") . \"'.\");\r\ + \n\r\ + \n :local ImportSuccess false;\r\ + \n :if ([ :len (\$CertVal->\"common-name\") ] > 0) do={\r\ + \n :set LastName (\$CertVal->\"common-name\");\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$ScriptN\ + ame \$LastName \$FetchName ];\r\ + \n }\r\ + \n :foreach SAN in=(\$CertVal->\"subject-alt-name\") do={\r\ + \n :if (\$ImportSuccess = false) do={\r\ + \n :set LastName [ :pick \$SAN ([ :find \$SAN \":\" ] + 1) [ :len\ + \_\$SAN ] ];\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scrip\ + tName \$LastName \$FetchName ];\r\ + \n :if (\$ImportSuccess = false && [ :pick \$LastName 0 2 ] = \"*\ + .\") do={\r\ + \n :set FetchName (\"star.\" . [ :pick \$LastName 2 [ :len \$La\ + stName ] ]);\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scr\ + iptName \$LastName \$FetchName ];\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$ImportSuccess = false) do={ :error false; }\r\ + \n\r\ + \n :if ([ :len (\$CertVal->\"fingerprint\") ] > 0 && \$CertVal->\"fin\ + gerprint\" != [ /certificate/get \$Cert fingerprint ]) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was updated in place.\");\r\ + \n :set CertVal [ /certificate/get \$Cert ];\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was not updated, but replaced.\");\r\ + \n\r\ + \n :local CertNew [ /certificate/find where name~(\"^\" . [ \$Escap\ + eForRegEx [ \$UrlEncode \$FetchName ] ] . \"\\\\.(p12|pem)_[0-9]+\\\$\") \ + \\\r\ + \n (common-name=(\$CertVal->\"common-name\") or subject-alt-name~\ + (\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRegEx \$LastName ] . \"(\\\\W|\\\$)\ + \")) \\\r\ + \n fingerprint!=[ :tostr (\$CertVal->\"fingerprint\") ] ];\r\ + \n :local CertNewVal [ /certificate/get \$CertNew ];\r\ + \n\r\ + \n :if ((\$CertVal->\"expires-after\") > (\$CertNewVal->\"expires-a\ + fter\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate is newer th\ + an the new one. Aborting renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ((\$CertVal->\"private-key\") = true && (\$CertVal->\"privat\ + e-key\") != (\$CertNewVal->\"private-key\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate '\" . (\$Ce\ + rtVal->\"name\") . \"' has a private key, new certificate does not. Aborti\ + ng renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable ([ \$ParseKeyValueStore (\$CertNew\ + Val->\"issuer\") ]->\"CN\") \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"The certificate chain is no\ + t available!\");\r\ + \n }\r\ + \n\r\ + \n /ip/service/set certificate=(\$CertNewVal->\"name\") [ find wher\ + e certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/ipsec/identity/set certificate=(\$CertNewVal->\"name\") [ fi\ + nd where certificate=(\$CertVal->\"name\") ];\r\ + \n /ip/ipsec/identity/set remote-certificate=(\$CertNewVal->\"name\ + \") [ find where remote-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/hotspot/profile/set ssl-certificate=(\$CertNewVal->\"name\")\ + \_[ find where ssl-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /certificate/remove \$Cert;\r\ + \n /certificate/set \$CertNew name=(\$CertVal->\"name\");\r\ + \n :set Cert \$CertNew;\r\ + \n :set CertVal [ /certificate/get \$CertNew ];\r\ + \n }\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; silent=true; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen\" ] . \"C\ + ertificate renewed: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" has been renewe\ + d.\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' has been renewed.\");\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not renew certificate '\" .\ + \_(\$CertVal->\"name\") . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !scep-url !(expire\ + s-after=[]) \\\r\ + \n expires-after<\$CertWarnTime !(fingerprint=[]) ] do\ + ={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/scep-server/find where ca-cert=(\$CertVal\ + ->\"ca\") ] ] > 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . (\$CertVal->\"n\ + ame\") . \"' is handled by SCEP, skipping.\");\r\ + \n } else={\r\ + \n :local State [ \$IfThenElse ((\$CertVal->\"expired\") = true) \"ex\ + pired\" \"is about to expire\" ];\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen,warning-s\ + ign\" ] . \"Certificate warning: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" \" . \$State . \ + \".\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' \" . \$State . \\\r\ + \n \", it is invalid after \" . (\$CertVal->\"invalid-after\") . \ + \".\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\ + \n# RouterOS script: AM-GlobalConfig\ + \n# Script comment: Global Config Script\ + \n# Copyright (c) 2007-2026 Vados \ + \n#\ + \n#\ + \n# Warning: Dont touch this line!\ + \n:global GlobalConfReady false;\ + \n#\ + \n#\ + \n# Global Url For Amster scripts to fetch\ + \n# most be defined in AM-Init-Script or AM-setup scripts\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global ScriptsUrlSuffix \"\";\ + \n:global CheckSumsVerify true;\ + \n\ + \n:global ScriptUpdatesCRLF true;\ + \n:global CommentsInScripts true;\ + \n\ + \n# Debug output:\ + \n:global PrintDebug true; #false;\ + \n\ + \n# Debug output for specific script:\ + \n:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\ + \n\ + \n# Debug logs\ + \n# Other actions (disk, email, remote or support) can be used as well.\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\ + \n#/system/logging/add topics=script,debug action=memory;\ + \n\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\ + \n:global Domain \"WORKGROUP\";\ + \n\ + \n:global EmailGeneralTo \"vados@vados.ru\";\ + \n#:global EmailGeneralCc \"\";\ + \n\ + \n# \$ScriptInstallUpdate mod/notification-telegram\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\ + \n# Use this to send notifications to a specific topic in group.\ + \n#:global TelegramThreadId \"30\";\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\ + \n# or user names. Groups allow to chat with devices simultaneously.\ + \n:global TelegramChatIdsTrusted {\ + \n \"454403445\"\ + \n \"-1003631309063\"\ + \n \"-5124482807\"\ + \n \"1087968824\";\ + \n};\ + \n# \"-5294757340\";\ + \n\ + \n:global TelegramChatGroups \"(all)\";\ + \n#:global TelegramChatGroups \"(all|home|office)\";\ + \n\ + \n:global NotificationFunctions {\ + \n \"email\"\ + \n \"telegram\";\ + \n};\ + \n# Toggle this to disable symbols in notifications.\ + \n:global NotificationsWithSymbols true;\ + \n:global TerminalColorOutput true;\ + \n\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\ + \n\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\ + \n:global updateChannel \"stable\";\ + \n\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\");\ + \n:global CertRenewTime 2w;\ + \n:global CertRenewPass {\ + \n \"\";\ + \n# \"v3ry-s3cr3t\";\ + \n# \"4n0th3r-s3cr3t\";\ + \n};\ + \n:global CertWarnTime 1w;\ + \n:global CertIssuedExportPass {\ + \n \"\";\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\ + \n};\ + \n\ + \n# Script BackupAndUpdate mode, possible values: backup,\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\ + \n# osnotify - Set `forceBackup` to always create backups on every run\ + \n:global DevInfoIncludeIP true;\ + \n:global BackupAndUpdateMode \"osnotify\"\ + \n\ + \n:global forceBackup true;\ + \n:global BackupPassword \"Peskar55\";\ + \n\ + \n# SFTP Backup Variables\ + \n:global BackupRandomDelay 0;\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\ + \n:global BackupUploadUser \$Identity;\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\ + \n\ + \n:global BackupSendBinary true;\ + \n:global BackupSendExport true;\ + \n:global BackupSendGlobalConfig true;\ + \n:global BackupSendScripts true;\ + \n\ + \n# Remove local file after uploading if no errors\ + \n:global BackupRmLocal true;\ + \n\ + \n# Local Backups Root Directory \ + \n:global BackupLocalRoot \"tmpfs\";\ + \n\ + \n# Encrypt Backup\ + \n:global BackupEncrypt true;\ + \n\ + \n# Sensitive information in Backups\ + \n:global BackupSens true;\ + \n\ + \n# User Export\ + \n:global BackupUser true;\ + \n\ + \n# License Export (not for CHR, will silently skip)\ + \n:global BackupLicense false;\ + \n\ + \n# SSH Keys\ + \n:global BackupSshKeys true;\ + \n\ + \n# Certificate Export\ + \n:global BackupCerts true;\ + \n\ + \n# Certificate Password\ + \n:global BackupCertsPasswd \"\";\ + \n\ + \n# User-Manager Export\ + \n:global BackupUserMan false;\ + \n\ + \n# The Dude Export\ + \n:global BackupDude false;\ + \n\ + \n# User Files to export, comma-separated string or array of strings\ + \n# User Files are not removed on backup\ + \n# Any directory paths will be removed (/ -> _) on remote file\ + \n# Nonpresent files are silently skipped\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\ + \n\ + \n# load functions and any custom scripts\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\ + \n#\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \n# :onerror Err {\ + \n# /system/script/run \$Script;\ + \n# } do={\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\ + \n# }\ + \n#}\ + \n#:log info \"\\ndevMode = \$devMode\";\ + \n#:log info \"\\ndevRunning = \$devRunning\";\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\ + \n :onerror Err {\ + \n /system/script/run \$Script;\ + \n } do={\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\ + \n }\ + \n}\ + \n\ + \n# signal we are ready\ + \n:set GlobalConfReady true;\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\ + \n" +add comment="Renew locally issued certificates" dont-require-permissions=no \ + name=AM-CertsRenew owner=AM-CertsRenew policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CertsRenew\r\ + \n# Script comment: Renew locally issued certificates\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global CertIssuedExportPass;\r\ + \n\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global ScriptLock;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Update Local Issued Certificates.\"\ + ;\r\ + \n#/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=st\ + artup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where issued expires-after<3w ] d\ + o={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n /certificate/issued-revoke \$Cert;\r\ + \n /certificate/set name=(\$CertVal->\"name\" . \"-revoked-\" . [ /syst\ + em/clock/get date ]) \$Cert;\r\ + \n /certificate/add name=(\$CertVal->\"name\") common-name=(\$CertVal->\ + \"common-name\") \\\r\ + \n key-usage=(\$CertVal->\"key-usage\") subject-alt-name=(\$CertVal\ + ->\"subject-alt-name\");\r\ + \n /certificate/sign (\$CertVal->\"name\") ca=(\$CertVal->\"ca\");\r\ + \n :if ([ :typeof (\$CertIssuedExportPass->(\$CertVal->\"common-name\")\ + ) ] = \"str\") do={\r\ + \n :if ([ \$MkDir \"cert-issued\" ] = true) do={\r\ + \n /certificate/export-certificate (\$CertVal->\"name\") type=pkcs1\ + 2 \\\r\ + \n file-name=(\"cert-issued/\" . \$CertVal->\"common-name\") \\\ + \r\ + \n export-passphrase=(\$CertIssuedExportPass->(\$CertVal->\"com\ + mon-name\"));\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\"\ + \_. \$CertVal->\"common-name\" . \\\r\ + \n \"', exported to 'cert-issued/\" . \$CertVal->\"common-name\" \ + . \".p12'.\");\r\ + \n } else={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed creating directory, no\ + t exporting certificate.\");\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\" .\ + \_\$CertVal->\"common-name\" . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store=fetch +/disk settings +set auto-media-interface=lo default-mount-point-template=usb1 +/ip smb +set comment=MikroVados domain=WORKGROUP enabled=yes interfaces=Bridge-LAN +/interface bridge port +add bridge=Bridge-LAN ingress-filtering=no interface=ether2 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=LEN ingress-filtering=no interface=ether3 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=NUC ingress-filtering=no interface=ether4 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN ingress-filtering=no interface=ether5 \ + internal-path-cost=10 path-cost=10 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set disable-ipv6=yes max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add comment=WAN interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi cap +set caps-man-addresses=10.30.30.10 certificate=request discovery-interfaces=\ + wlan1,wlan2 lock-to-caps-man=no slaves-static=no +/interface wifi capsman +set package-path="" require-peer-certificate=no upgrade-policy=none +/interface wifi provisioning +add action=create-dynamic-enabled disabled=no master-configuration=2G-N \ + name-format=2G-%I slave-configurations=2G-G supported-bands=\ + 2ghz-n,2ghz-g,2ghz-g +add action=create-dynamic-enabled disabled=no master-configuration=5G-AC \ + name-format=5G-%I supported-bands=5ghz-ac,5ghz-ac +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/interface wireless sniffer +set file-name=24g +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name="ether1 - Unet" \ + use-peer-dns=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=1:20:72:a9:d3:34:36 dhcp-option=HostName \ + dhcp-option-set=MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP \ + use-src-mac=yes +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +add address=10.30.30.86 dhcp-option=HostName dhcp-option-set=MikroYellow \ + mac-address=48:8F:5A:8E:1A:C2 server=masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=git.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=ros.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=2606:4700:4700::1111 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +add address=2606:4700:4700::1001 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=amster-nuc disabled=yes list=NoWG +add address=10.30.30.11 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.95 comment=NUC list=NoWG +add address=glb.tas02.cws-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.cws.update.microsoft.com list=windowsupdateslist +add address=glb.cwsapp.prod.dcat.dsp.trafficmanager.net. comment=\ + glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas01.cwsapp.update.microsoft.com list=windowsupdateslist +add address=disc601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface="ether1 - Unet" protocol=tcp src-address-list=\ + !TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid disabled=yes +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +add action=fasttrack-connection chain=forward comment=\ + "FastTrack main traffic" connection-state=established,related disabled=\ + yes +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 dst-address-list=YouTube new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address=\ + !10.30.30.0/24 dst-address-list=facebook new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=dst-nat chain=dstnat comment=npm disabled=yes dst-port=81 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=80 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=udp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=tcp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=udp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com log=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot walled-garden +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=yes distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +add action=add-src-to-address-list address-list=bad_ipv6 \ + address-list-timeout=none-dynamic chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked in-interface=WG in-interface-list=WAN \ + src-address-list="" +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +add action=accept chain=forward comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/ppp secret +add local-address=192.168.60.1 name=vados remote-address=192.168.60.2 \ + service=l2tp +/routing bfd configuration +add disabled=no +/snmp +set contact=@AmsterNL enabled=yes engine-id-suffix=MikroMaster location=NL \ + src-address=10.30.30.81 trap-interfaces=Bridge-LAN,WG trap-target=\ + 10.30.30.10 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Windows Update script" interval=2d5m name=WU-script-run-schedule \ + on-event=WU-add-to-list policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2014-02-11 start-time=00:00:00 +add comment="Backup Every Week" disabled=yes interval=1w name=BackupEveryWeek \ + on-event=BackupAndUpdate policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-07-07 start-time=03:41:27 +add comment="DoH Cache Flush" interval=1d name="DNS Cache Flush" on-event=\ + DNS_Flush_Cache policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2019-12-06 start-time=05:30:00 +add comment="Create mkdir function on startup" name=\ + create_mkdir_function_on_startup on-event=\ + "/system script run create_mkdir_function;" policy=read,write,policy,test \ + start-time=startup +add comment="Scheduler for Update Certificates CloudFlare Quad9" interval=1w \ + name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Scheduler for Amster-Backup-UpdateEmail" disabled=yes interval=\ + 1w name=Amster-Backup-UpdateEmail on-event=\ + "/system/script { run Amster-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-02-13 start-time=03:41:27 +add comment="Setup Global Environment for scripts" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Renew Certificates" interval=1d name=\ + AM-CheckCerts on-event="/system/script/run AM-CheckCerts;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Auto-update Cloudflare Root CA for DoH" interval=2w name=\ + AM-DOHCert on-event="/import AM-DOHCert.rsc" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-04-15 start-time=03:00:00 +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260423/20260423172002-Diff-Config.rsc b/MikroMaster/history/20260423/20260423172002-Diff-Config.rsc new file mode 100644 index 0000000..5ba4120 --- /dev/null +++ b/MikroMaster/history/20260423/20260423172002-Diff-Config.rsc @@ -0,0 +1,7 @@ +4195,4196c4195,4197 +< dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ +< new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +--- +> disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina \ +> log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +> src-address-list=!NoWG -- 2.52.0