From 4c66b69c7998cca71b5f9bc43287f77ab0bb91fe Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 15 Apr 2026 22:40:10 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 15 22:40:10. --- .../20260415/20260415224001-Binary.backup | Bin 0 -> 314272 bytes .../20260415/20260415224001-Config.rsc | 4528 +++++++++++++++++ .../20260415/20260415224001-Diff-Config.rsc | 96 + 3 files changed, 4624 insertions(+) create mode 100644 MikroMaster/20260415/20260415224001-Binary.backup create mode 100644 MikroMaster/20260415/20260415224001-Config.rsc create mode 100644 MikroMaster/history/20260415/20260415224001-Diff-Config.rsc diff --git a/MikroMaster/20260415/20260415224001-Binary.backup b/MikroMaster/20260415/20260415224001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..2aff3f64ad02dc2e99e295534d3df2dd6a234c30 GIT binary patch literal 314272 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⁡fO|DI@ZRZNx3U8L6d~ih{%zXiIpai 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 {QZV150VFSp4RD5d+pV~GY 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

=3-_>2#W+zcZw35zqjK&=Z?o*Hxc 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℞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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260415/20260415224001-Config.rsc b/MikroMaster/20260415/20260415224001-Config.rsc new file mode 100644 index 0000000..6ef9754 --- /dev/null +++ b/MikroMaster/20260415/20260415224001-Config.rsc @@ -0,0 +1,4528 @@ +# 2026-04-15 22:40:02 by RouterOS 7.22 +# software id = 2961-C4ZZ +# +# model = RBD52G-5HacD2HnD +# serial number = HCX084RAVFA +/interface bridge +add admin-mac=48:8F:5A:60:A1:0B auto-mac=no name=Bridge-LAN port-cost-mode=\ + short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + F6:BE:9D:85:53:F5 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + station-roaming=enabled wds-default-bridge=Bridge-LAN wds-mode=\ + dynamic-mesh wireless-protocol=802.11 wmm-support=enabled wps-mode=\ + disabled +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g station-roaming=enabled \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man security +add authentication-types=wpa-psk,wpa2-psk encryption=aes-ccm \ + group-encryption=aes-ccm name=security +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz security=security ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac security=security ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an security=security ssid=vados5g +/disk +add media-interface=lo slot=tmpfs tmpfs-max-size=44739242 type=tmpfs +/interface list +add comment=defconf name=WAN +add comment=defconf name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +add name=mVados options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=m.blsp.at verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/ip dhcp-server +add add-arp=yes address-pool=dhcp dhcp-option-set=domain-search-set \ + dynamic-lease-identifiers=client-mac,client-id,opt-82 interface=\ + Bridge-LAN lease-time=10m name=masterDHCP server-address=10.30.30.81 \ + use-reconfigure=yes +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add dont-require-permissions=no name=create_mkdir_function owner=vados \ + policy=read,write source="# Written by Phillip Stromberg in 2019\r\ + \n# Distributed under the MIT license\r\ + \n# \r\ + \n# \r\ + \n# this creates a function called \$mkdir\r\ + \n# from the command line you will be able to just type \"\$mkdir some/new\ + /folder\"\r\ + \n# and all the folders that need to be created will be\r\ + \n# if the folder already existed, it is ignored\r\ + \n\r\ + \n:log info \"Creating \\\$mkdir function...\"\r\ + \n\r\ + \n:global mkdir do={\r\ + \n # \$1 refers to the input variable the user passed in to us\r\ + \n :local newFolder \$1;\r\ + \n\r\ + \n # we'll use this variable to report error messages that may arise\r\ + \n :local errorMsg;\r\ + \n\r\ + \n # if the user put a slash on the end of the new folder name, remove \ + it\r\ + \n # i.e. \"some/test/\" becomes \"some/test\"\r\ + \n :while (([:pick \$newFolder ([:len \$newFolder] - 1)]) = \"/\") do={\ + \r\ + \n :set newFolder [:pick \$newFolder 0 ([:len \$newFolder] - 1)]\r\ + \n }\r\ + \n\r\ + \n # if the user put a slash at the beginning of the new folder name, r\ + emove it\r\ + \n # i.e. \"/some/test\" becomes \"some/test\"\r\ + \n :while ([:pick \$newFolder 0] = \"/\") do={\r\ + \n :set newFolder [:pick \$newFolder 1 [:len \$newFolder]]\r\ + \n }\r\ + \n\r\ + \n :if ([/file find name=\$newFolder] != \"\") do={\r\ + \n :set errorMsg \"'\$newFolder' already exists.\";\r\ + \n :log debug \"mkdir: \$errorMsg\";\r\ + \n :return \$newFolder;\r\ + \n }\r\ + \n\r\ + \n # the name of the temp file to create\r\ + \n :local tempfile \"mkdir_temp_file.txt\";\r\ + \n\r\ + \n # port 0 is unlikely to be open to HTTP requests...\r\ + \n :local fakeURL \"http://127.0.0.1:0/should-not-exist.txt\";\r\ + \n\r\ + \n :local fullTempPath (\$newFolder . \"/\" . \$tempfile);\r\ + \n\r\ + \n # this is where the folder creation happens\r\ + \n # `as-value` prevents status messages from printing\r\ + \n # wrapping in a `:do {...} on-error` prevents error messages from pr\ + inting.\r\ + \n :do {\r\ + \n /tool fetch dst-path=\"\$fullTempPath\" url=\"\$fakeURL\" durati\ + on=0.001s as-value;\r\ + \n } on-error={}\r\ + \n\r\ + \n # this waits for the temporary dir to show up so there isn't a race \ + \r\ + \n # condition where you call mkdir and then try to do something before\ + \_the \r\ + \n # folder is actually created\r\ + \n :local count 0;\r\ + \n :while ([/file find name=\"\$newFolder\"] = \"\") do={\r\ + \n :if (\$count >= 50) do={\r\ + \n # after 50 * 0.1s delays, it's been 5 seconds, which should \ + be long enough\r\ + \n :set errorMsg \"New folder could not be created at \$newFold\ + er\";\r\ + \n :log error \"mkdir: \$errorMsg\"\r\ + \n :error \$errorMsg\r\ + \n }\r\ + \n :delay 0.1s;\r\ + \n :set count (\$count + 1);\r\ + \n }\r\ + \n\r\ + \n :return \$newFolder;\r\ + \n}\r\ + \n\r\ + \n:log info \"Created function \\\$mkdir\"\r\ + \n" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=CustomUpdate-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n/tool/fetch mode=https url=https://developers.cloudflare.com/ssl/static/\ + origin_ca_ecc_root.pem;\r\ + \n/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalRo\ + otCA.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\"\ + \";\r\ + \n/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalG\ + 2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGlobal\ + G3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n\r\ + \n#:global AmScriptsUrl;\r\ + \n#google\r\ + \n#:local CertName \"GTS-Root-R1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-R4.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#:set CertName \"ISRG-Root-X1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add dont-require-permissions=no name=AM-setup owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_RouterOS Setup Script: AM-setup\r\ + \n# \r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n\r\ + \n## Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:if ([ :len [ /system/script/find where name=\$ScriptName ]] = 0 ) do={\ + \r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# :global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n# /system/script/add name=\$ScriptName owner=\$ScriptName source=([ /too\ + l/fetch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptNa\ + me . \".rsc\") output=user as-value ]->\"data\");\r\ + \n#}\r\ + \n# For run from terminal:\r\ + \n# /system/script/add name=AM-setup owner=AM-Setup source=([ /tool/fetch \ + check-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" ou\ + tput=user as-value ]->\"data\");\r\ + \n#\r\ + \n# /system/script/set source=[ :tocrlf [ get \$ScriptName source ] ] \$Sc\ + riptName;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local RemoveThisScript false;\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n{\r\ + \n :local ScriptName;\r\ + \n :local RemoveThisScript;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local AllDone;\r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n:log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :put \"Add Schedulers...\";\r\ + \n :delay 1;\r\ + \n :put \"Add Global scheduler...\";\r\ + \n :local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFu\ + nc; }\";\r\ + \n :local Comment \"Setup Global Environment for scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] \ + ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-\ + event=\$OnEvent start-time=startup;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Commen\ + t) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEve\ + nt) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Add Update Script scheduler\";\r\ + \n :set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\"\ + ;\r\ + \n :set Comment \"Every Day Check For Update Scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpda\ + te\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Commen\ + t start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n }\r\ + \n\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n /system/script { run AM-GlobalConfig; run AM-GlobalFunc; };\r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :set AllDone true;\r\ + \n } on-error={\r\ + \n :set AllDone false;\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$ScriptName . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n\r\ + \n :delay 5s;\r\ + \n :if (\$AllDone = true && \$RemoveThisScript = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :set OnEvent \":delay 30s; /system/script/remove [ find where name=\$S\ + criptName ]; :delay5s; /system/scheduler/remove [ find where name=\\\"_Rem\ + oveSetup\\\" ];\";\r\ + \n :set Comment \"_RemoveSetup tmp scheduler for remove setup script.\";\ + \r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-ti\ + me=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$ScriptName . \"\\nI've done everything, and now I'm ti\ + red... I'm leaving. ))\\nThere will be an error below, this is normal.\");\ + \r\ + \n }\r\ + \n};\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n:local Script AM-GlobalConfig;\r\ + \n/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch ch\ + eck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".rs\ + c\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub" +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/233/efe032c8\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 22:05:02 15.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 +/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/20260415/20260415224001-Diff-Config.rsc b/MikroMaster/history/20260415/20260415224001-Diff-Config.rsc new file mode 100644 index 0000000..52838d7 --- /dev/null +++ b/MikroMaster/history/20260415/20260415224001-Diff-Config.rsc @@ -0,0 +1,96 @@ +67a68,69 +> # mountpoint [tmpfs] taken by tmpfs +> set usb1 mount-point-template="[tmpfs]" +3304a3307,3390 +> add dont-require-permissions=no name=AM-DOHCerts owner=vados policy=\ +> ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ +> !rsc by Vados\r\ +> \n# RouterOS script: AM-DOHCerts\r\ +> \n# Script comment: Renew locally Cloudflare DOH certificates\r\ +> \n# Copyright (c) 2005-2026 Vados \r\ +> \n#\r\ +> \n#\r\ +> \n# requires RouterOS, version=7.15\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) d\ +> o={\r\ +> \n#:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is \ +> NOT 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###############################################\r\ +> \n# Scheduler - Auto-update every 14 days\r\ +> \n###############################################\r\ +> \n\r\ +> \n/system scheduler;\r\ +> \n:if ([:len [find name=\"update-doh-ca\"]] = 0) do={\r\ +> \n add name=\"update-doh-ca\" \\\r\ +> \n interval=2w \\\r\ +> \n on-event=\"/import 12a-dns-doh-ca.rsc\" \\\r\ +> \n start-time=03:00:00 \\\r\ +> \n comment=\"Auto-update Cloudflare Root CA for DoH\";\r\ +> \n}\r\ +> \n\r\ +> \n:log info \"Cloudflare CA auto-update scheduler configured\";\r\ +> \n\r\ +> \n###############################################\r\ +> \n# Cloudflare Root CA Certificate Update\r\ +> \n###############################################\r\ +> \n:local CfCaURL \"https://developers.cloudflare.com/ssl/static/origin_ca_\ +> ecc_root.pem\";\r\ +> \n\r\ +> \n:local CfCaFile \"cloudflare-root.pem\";\r\ +> \n\r\ +> \n# Remove old certificate file\r\ +> \n/file;\r\ +> \n:if ([:len [find name=\$CfCaFile]] > 0) do={\r\ +> \n remove \$CfCaFile;\r\ +> \n}\r\ +> \n\r\ +> \n# Download CA certificate\r\ +> \n/tool fetch \\\r\ +> \n url=\$CfCaURL \\\r\ +> \n dst-path=\$CfCaFile \\\r\ +> \n keep-result=yes;\r\ +> \n\r\ +> \n:delay 2s;\r\ +> \n\r\ +> \n# Import certificate\r\ +> \n/certificate;\r\ +> \nimport file-name=\$CfCaFile passphrase=\"\";\r\ +> \n\r\ +> \n:log info \"Cloudflare DoH Root CA updated from \$CfCaURL\";\r\ +> \n\r\ +> \n} do={\r\ +> \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ +> \n}\r\ +> \n" +3318c3404 +< set auto-media-interface=lo default-mount-point-template="[usb1]" +--- +> set auto-media-interface=lo default-mount-point-template="[tmpfs]" +4491c4577 +< AM-DOHCert on-event="/import AM-DOHCert.rsc" policy=\ +--- +> update-doh-ca on-event="/import 12a-dns-doh-ca.rsc" policy=\ -- 2.52.0