From e9dc47deec77eb203264911c1fdb12064a9cf039 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 15 Apr 2026 22:20:07 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 15 22:20:07. --- .../20260415/20260415222001-Binary.backup | Bin 0 -> 316661 bytes .../20260415/20260415222001-Config.rsc | 4614 +++++++++++++++++ .../20260415/20260415222001-Diff-Config.rsc | 102 + 3 files changed, 4716 insertions(+) create mode 100644 MikroMaster/20260415/20260415222001-Binary.backup create mode 100644 MikroMaster/20260415/20260415222001-Config.rsc create mode 100644 MikroMaster/history/20260415/20260415222001-Diff-Config.rsc diff --git a/MikroMaster/20260415/20260415222001-Binary.backup b/MikroMaster/20260415/20260415222001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..2d17e818ff8fa9da4fd1d47d1616485fa2e79951 GIT binary patch literal 316661 zcmV+aKLEh*sF8E^)C2(S7tLlbv0*z9sDo;Ks!dq{0000C{QrL7kOcr(;^}r%QMq0= z*g`@UVA8osX?QPofAy_(VvZe^Ss|{f9jJgnF|Odl-mvN5!u#uZFDGv4ze~WDwf%oq z>>hIJ6-6gan~^0J@RA~O5+1nqY14F-9^7rDYe8m0l*4T#75lR+q01i103ep5Bh!aOGMW9LbknNfElUFJymv)8=AOND- zxvHwoxRW?lq}XElkvcJ4#{eJTxh=Gd2FnHxVM!czOHQGQPW&Vo_p5&Ez57)d*Lz>g z+3t`P^kxO`uVhjtP6*HRQ=iEX(b+oDL$Haf3`$o-bHXuhN8%k=#6iG_kN}|2<;d$) zg5*i&vzo6%SR{=awDEGOF(%gDpps6C_|+HX2RM>cuB1=peWy)YbwN6a{WC2Ad z{%Oh?mpvFkIDkb(cfRH-HVTfAVoNy)Z7v9H@H?a8#IEv@R#0ECWY8$C912{6Gu#h*Zf^uF$J@%z7n|JJtuK7c{Xn z%Pl0Sf3%vhh|uSW^2E80hKqCkz+A8EuidS4KpJp$KWUhV*=om`~upFa&T+f|fl z=3qVE7#3^|L3v-7Nb;Dy%h9GEu=&l53&w^KtVzclGk^amtuDAnCR(HFL<##r#3FCo zhICJ0vutZ`_WDcItyOB3hD=6Ybs*3(uv{-@ zF-Qt5^cgl2HNOB7d4uf)LPQ^Y%aP;S$r(0|cX{N#)4h;l@j7sW|7_zH7_;+R@yT-( zT~AH)?CVgtl+lu9kZA}RkX*4q1NjRlz$=ZjDJ<89_=3LUG@z#*Y)tHqa9Ywe-IuOr zscA=1+oep~ZFXH;ffb;p$X$otg6&O=l5K(vyi8tMd3-x#ljoC2Yd(KK;*~*=HMLkv zhbuKZ&7rs5RW+H1VfC_NnngW1xq?Cu?*b96-$5AvQDbux;he@f@z&>cQ>6;7B{s!nzl;QZ{ZvaMNYvukZ+er6?@!X{n&?zyx|*U6cXqMFhoC# zX|C%rW6B{-IZGxci)ZJ1bd-O_HACuFQE8HJZNG18&70EvIpkn`j-F1t?sfON0Q_Zb zBvSTwwi$ zq_UG6mm`2uLpeWB@)mBFfW!JgAI3%U^&{6Zl2x2x0yaf|>AVWdZh~(X>d0)Xe-rfF zrwnvI>28!7!o&H3q@qrw|MrdKRge!Dco5P=);D*;cy8j=91(#50+PTHgey+}BramH z{#BJGmntiT5`tU<`5lVD1|I>+!6$Pt5I(e>c|g8UosY3Y zT(qvl96BjpT0GOU+0UwwZa`zBo%2~qeFbK;hRei+gXf-^XL#A& z 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

ARBI;F^>Z4CRJJanZ6M`s|Te31#;VoF&$lw^_0 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

${pQWFkSeRSvpc>nUD^Smm>lL@s}ui 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„`C3r1~aljK_xv}$1NNag<<=@X}ebEWhc>#Aa$v~ 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�C}}}0 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260415/20260415222001-Config.rsc b/MikroMaster/20260415/20260415222001-Config.rsc new file mode 100644 index 0000000..d57ae59 --- /dev/null +++ b/MikroMaster/20260415/20260415222001-Config.rsc @@ -0,0 +1,4614 @@ +# 2026-04-15 22:20:02 by RouterOS 7.22 +# software id = 2961-C4ZZ +# +# model = RBD52G-5HacD2HnD +# serial number = HCX084RAVFA +/interface bridge +add admin-mac=48:8F:5A:60:A1:0B auto-mac=no name=Bridge-LAN port-cost-mode=\ + short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + F6:BE:9D:85:53:F5 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + station-roaming=enabled wds-default-bridge=Bridge-LAN wds-mode=\ + dynamic-mesh wireless-protocol=802.11 wmm-support=enabled wps-mode=\ + disabled +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g station-roaming=enabled \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man security +add authentication-types=wpa-psk,wpa2-psk encryption=aes-ccm \ + group-encryption=aes-ccm name=security +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz security=security ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac security=security ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an security=security ssid=vados5g +/disk +add media-interface=lo slot=tmpfs tmpfs-max-size=44739242 type=tmpfs +# mountpoint [tmpfs] taken by tmpfs +set usb1 mount-point-template="[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" +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" +/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="[tmpfs]" +/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=\ + update-doh-ca on-event="/import 12a-dns-doh-ca.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/20260415222001-Diff-Config.rsc b/MikroMaster/history/20260415/20260415222001-Diff-Config.rsc new file mode 100644 index 0000000..f31151d --- /dev/null +++ b/MikroMaster/history/20260415/20260415222001-Diff-Config.rsc @@ -0,0 +1,102 @@ +693c693 +< \n:global CommitId \"main/233/efe032c8\";\r\ +--- +> \n:global CommitId \"main/226/e1cd7257\";\r\ +696c696 +< r: root, in 22:05:02 15.04.2026.\";\r\ +--- +> r: root, in 09:45:02 01.04.2026.\";\r\ +932c932 +< \n\r\ +--- +> \n \r\ +3307,3390d3306 +< 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" +4576,4579d4491 +< add comment="Auto-update Cloudflare Root CA for DoH" interval=2w name=\ +< update-doh-ca on-event="/import 12a-dns-doh-ca.rsc" policy=\ +< ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ +< start-date=2026-04-15 start-time=03:00:00 -- 2.52.0