From 30345179aa0c334d4d86a6fa452d2ad4cd17cfed Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 16 Apr 2026 20:20:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 16 20:20:08. --- .../20260416/20260416202002-Binary.backup | Bin 0 -> 315644 bytes .../20260416/20260416202002-Config.rsc | 4535 +++++++++++++++++ .../20260416/20260416202002-Diff-Config.rsc | 8 + 3 files changed, 4543 insertions(+) create mode 100644 MikroMaster/20260416/20260416202002-Binary.backup create mode 100644 MikroMaster/20260416/20260416202002-Config.rsc create mode 100644 MikroMaster/history/20260416/20260416202002-Diff-Config.rsc diff --git a/MikroMaster/20260416/20260416202002-Binary.backup b/MikroMaster/20260416/20260416202002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..fb2cab01f48c6aa834d92951a1e1d7e7df505c41 GIT binary patch literal 315644 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®(S2RjbH@Tx1mUI+;Z+B=ZRJGd+B&f6&>W4)1 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

HY@ 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 z%0D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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260416/20260416202002-Config.rsc b/MikroMaster/20260416/20260416202002-Config.rsc new file mode 100644 index 0000000..e297679 --- /dev/null +++ b/MikroMaster/20260416/20260416202002-Config.rsc @@ -0,0 +1,4535 @@ +# 2026-04-16 20: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: 5200/20-eCee/ac/P(20dBm), 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: 5200/20-eCee/ac/P(20dBm), 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/20260416/20260416202002-Diff-Config.rsc b/MikroMaster/history/20260416/20260416202002-Diff-Config.rsc new file mode 100644 index 0000000..be5bc7f --- /dev/null +++ b/MikroMaster/history/20260416/20260416202002-Diff-Config.rsc @@ -0,0 +1,8 @@ +35c35 +< # channel: 5200/20-eCee/ac/P(20dBm), SSID: vados5g, local forwarding +--- +> # channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +51c51 +< # channel: 5200/20-eCee/ac/P(20dBm), SSID: vados5g, local forwarding +--- +> # channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding -- 2.52.0