From c96d23b36ab4e67990998ac0abbcc751f7f62b46 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 3 Jul 2026 07:00:04 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jul 03 07:00:04. --- .../20260703/20260703070001-Binary.backup | Bin 0 -> 382513 bytes MikroNUC/20260703/20260703070001-Config.rsc | 5456 +++++++++++++++++ .../20260703/20260703070001-Diff-Config.rsc | 37 + 3 files changed, 5493 insertions(+) create mode 100644 MikroNUC/20260703/20260703070001-Binary.backup create mode 100644 MikroNUC/20260703/20260703070001-Config.rsc create mode 100644 MikroNUC/history/20260703/20260703070001-Diff-Config.rsc diff --git a/MikroNUC/20260703/20260703070001-Binary.backup b/MikroNUC/20260703/20260703070001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..25406ae8d092a67b50ec713dfe418f8d05eb131f GIT binary patch literal 382513 zcmV(fK>EM$sF8Cq)&&4wb6pe{fi@}7_VIT67tbmH000000000800008;0Fj+zA4y` z$x<@0?SgXaa(5uQtYFq4iz#KQzl<{#8V%NXN^4DOQ@d%e%zDu#IS;aJ;n>_zqdZq| zyVz#zSI-Qa6@wFcpRIcRN8o4>38P+iT-7-K_^2a|}F zbx_nkcoCQn8Fx-H0#nHHfBgxqdsBRX=o+vNZRm}YxwXN=z zNi!-8a)_w)tuANu&vze3dfLVCIUK#p6=$7yOu9ebNoM^=Ih1rEDqSj%k{$q0bVy8M z$lSIQJP{lw*=00HC^aGST-Jk)g1CkBVLkL|LcP9lsO!q8kH!F84aTSOpe<*Kxb@Mr ztpE^H;2@XYy4LCCPwJ2vW0FT)_P%DSWw_NI1W!sstSaJP;&Jl2c)LqFqMF-UD3Z2^twAz<|Krp;{BZW1Z zXL|8=6bagXk(kNTKR|C@L#8nOy};!HrqE@g%xmGgTnm6rY;|uiO1ancQih-AXxhjvJOl4MvWjq{vOc z$AnZ9h2|%_)?+O{U@~kQbox>qQ8FqE+>n;n$X1pr<`eXL?a}U~5Uv zL#64{qmU^lMuUTlx{%QPDVxo%q#gUV<*aQz_kq`UOdi&@ITnqO*jI~{BULfh-k&O< z;j|Bkr{DzdGABMzVhcvtBy?N|TH;z8O>6XQShI6YPUdsR)e|K56(eU_ND~iG-r+Nt z-Z@$}(w5v^yF>3oCWU!t$#&6+wGCfKB7GJ|R$Sq-KIYI3N%NYChK?vHNji`X}89#5aMey(1A;-ndXO;-CF9&2~?Yfs=EURbyq?m_{^R7i9z#FY?fSllhk_5 zNypA>rqSC_qsDDdOAKBu?>rWD_M&F%P2tnc!UzVintW{PP?S9Q`**Dk-tg&(XdzuJ_{RA~mD5cYHMF^{p zhzY5ekfe3f_8yw1Y}twi9Y7{^#u_KH2-`h2Z>N3rrI?a){YjXyr*5 z6xTMY5Z{tg*T1=P$fv*_E1d|2`TB7#Pcn>M=w-qrtZA>u^X@foKnzpW}XCGTH(ku5Hz?!K9i5U&`84*MbF zOux7ow4Kw*hv8zG(Z-zm4aTeY00c~=-wm=C371Nrp7 zF@wrTB<>Bvg5_I%_9pjOvJn97aN&4JU7+Q z)ZhjRQ7O=ZY^BOF4pvoArM_tLEN*`#XH&l}6u9(Ng3*Xo6G(5ur<7r{a)JL{*sC|~ z(6_}ZmX&|ggtI4xpBmvCYXFwp=$OAivM1qi>c|GHi|bf)-?ze|P!t%jOK2Gv8tdLhZr_6R^lS31wC5&T=(a={Ddn!AoU4caTm>~ zaAMmayFlq>4uA(&!SjzRsigVPau)+GdjX2`M19tNYK-!ZR5ah8WSo(02X#6wdNl+6*?34(wut-QuHn#0vTi|Rf!|p=385K zLgU9dJ_y+`0EFaxzX^x099zF`Y+j~18RMI^J@Y)~m##rd%0A5A%)-S~-NpR~1s1BV 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

G5l~Oaf&0=1I`C#@NI5YXeug_ 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%0A#6!z3c^9<2bWc|BVP-UXiOoJ#FI)C?#e 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

A9KTc9V-Ivw>nFP zG&ysH#l_c}fp*sCjzNh9YzkFj=Jm$JZJ`9Y0~%U z$cmGHX9J54VrL{MBLVJjV%9l>vz$T1bWtTDdRPk^DuNHcbjO!;Djei}rCP$=vRZzVh zUj*=B66zf%y8G_kzD>F;LKv)9;hGMu3}hlD@b%<87p9G93b(#qlzjrUJ>S;Ye{!D9 z3R7@fhvUD3`4QLl(2+I@UwF9y2Ee|+Zz0&x`~S!K zRm;isiFT2HiPsIEa%Otg^joi1Njs&a=rlvcFtn{97GK&H6mJUri@Jx|%aa(lqxt@e zHC(ey1|G-P+wM=a1x>{py67`rUCUB7xs(oVdk|eIP}-wx!!uVQs7r*)K8ls9?+^B0 zw@M_kiV3p6Ml4YBT{IRvrv(7*-c*D~wEGWSD)y!(GGf)l))ThqBEvK4>q1EXYh z=4-zGhBU;L2fqaHUE42vE5FUSp4sT`EBcM4U5!xn; WK;NDDqB7T?O6`6pliQ`#t!YoTlsj<% literal 0 HcmV?d00001 diff --git a/MikroNUC/20260703/20260703070001-Config.rsc b/MikroNUC/20260703/20260703070001-Config.rsc new file mode 100644 index 0000000..975535c --- /dev/null +++ b/MikroNUC/20260703/20260703070001-Config.rsc @@ -0,0 +1,5456 @@ +# 2026-07-03 07:00:02 by RouterOS 7.23.1 +# system id = NmJcEM+8XAP +# +/caps-man channel +add band=2ghz-g/n extension-channel=disabled frequency=2422 name=2G-3 \ + reselect-interval=20m save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXX frequency=5660 name=5G-5660 \ + save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXXXXXX frequency=5160,5200,5280 \ + name=5G-5160-5280 reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5180 name=5G-36 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5200 name=5G-40 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5220 name=5G-44 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5240 name=5G-48 \ + reselect-interval=30m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2442 name=2G-7 \ + reselect-interval=20m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2462 name=2G-11 \ + reselect-interval=20m save-selected=yes +/interface bridge +add name=BridgeLAN +add name=bridge1 +/interface ethernet +set [ find default-name=ether1 ] disable-running-check=no +/interface wireguard +add comment="Interface for Master Connection" listen-port=22022 mtu=1360 \ + name=MASTER +/caps-man security +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=xs-Sec +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=WPA2 +/disk +add slot=ram tmpfs-max-size=100000000 type=tmpfs +/interface list +add include=dynamic,static name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroMIC +/iot wiliot servers +set *1 address=mqtt.us-east-2.prod.wiliot.cloud name="Wiliot US East" +/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=P1505n 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 +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=test owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#:local ScriptName [ :jobname ];\r\ + \n:local expSrc;\r\ + \n:local FileName;\r\ + \n:local FilePath;\r\ + \n:local DirPath \"tmpfs/\";\r\ + \n:global WaitForFile;\r\ + \n:global IfThenElse;\r\ + \n\r\ + \n:foreach Script in=([ /system/script find where name~\"Amster-GlobalConf\ + *\" ]) do={\r\ + \n:local ScriptVal [ /system/script/get \$Script ];\r\ + \n\r\ + \n:local expName [ (\$ScriptVal->\"name\") ];\r\ + \n#[/system/script get \$expScript name];\r\ + \n:delay 2s;\r\ + \n\r\ + \n:set expSrc [/system/script print where name=\$expName];\r\ + \n/system/script print where name=\$expName;\r\ + \n#[:put [/system/script get \$expScript source]];\r\ + \n:put [\$expSrc];\r\ + \n:delay 2s;\r\ + \n:set FileName \$expName;\r\ + \n:set FilePath (\$DirPath . \$FileName);\r\ + \n\r\ + \n#:log warning \"\\n----------------------\\n\\\$expSrc = \$expSrc\\n____\ + ______________________________\";\r\ + \n:log info \"\\n\\\$FileName = '\$FileName'\";\r\ + \n:log info \"\\n\\\$FilePath = \$FilePath\";\r\ + \n#:log warning {/system/script/get source=[/system/script/get \$expScript\ + \_source];};\r\ + \n\r\ + \n#\$[/system script get [/system script find name=\"\$FileName\"] source]\ + \r\ + \n\r\ + \n#:local gettingScript \"\$FileName\";\r\ + \n#:execute script=\"[[:parse \\\"[:parse { :put (\"\$[/system script get \ + [/system script find name=\$FileName] source]\"); } \\\"]]\"; \\\r\ + \n\r\ + \n#:execute script={:put \"[:parse \\\"[:parse [/system/script get [/syste\ + m/script find name=\$gettingScript] source];\\\"]]\";} \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n:do {\r\ + \n:local fName (\$FilePath . \".rsc\");\r\ + \n#:delay 3s;\r\ + \n#/file add name=\$fName;\r\ + \n:put [:tostr [\$expSrc]];\r\ + \n/file set \$fName contents=[:put [\$expSrc]];\r\ + \n:delay 3s;\r\ + \n\$WaitForFile \$fName;\r\ + \n(\$FilePath . \".rsc\");\r\ + \n#:delay 2s;\r\ + \n\r\ + \n} on-error={\r\ + \n:log error \"\\nERROR \\\$FilePath = \$FilePath\";\r\ + \n}\r\ + \n#\$WaitForFile (\$FilePath . \".rsc\");\r\ + \n#:execute script={ :put [/system/script get [:put \$FileName] source]; }\ + ;\r\ + \n#/system/script export \$Sscript file=\$FilePath;\r\ + \n#/system/script/export [:put [/system/script/get \$expScript source]] fi\ + le=\$FilePath;\r\ + \n#:execute script={ :put [/system/script/get \$expScript source]; } \\\r\ + \n\r\ + \n#:log warning \"\\n\\\$expScript = \$expScript\";\r\ + \n# \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n#script={:put [/system/script/get \$FileName source];} file=(\$FilePath\ + \_. \".rsc\\00\");\r\ + \n#/system script export \$src file=(\$FilePath . \$FileName);\r\ + \n}\r\ + \n\r\ + \n:log warning \"\\nComplete!\";\r\ + \n\r\ + \n # :execute script={ :put [ /system/script/get Amster-GlobalConfig sou\ + rce ]; } \\\r\ + \n # file=(\$FilePath . \".conf\\00\");\r\ + \n # \$WaitForFile (\$FilePath . \".conf\");\r\ + \n # :onerror Err {\r\ + \n # /tool/fetch upload=yes url=(\$BackupUploadUrl . \"/\" . \$FileName\ + \_. \".conf\") \\\r\ + \n # user=\$BackupUploadUser password=\$BackupUploadPass src-path=(\ + \$FilePath . \".conf\");\r\ + \n # :set ConfigFile [ /file/get (\$FilePath . \".conf\") ];\r\ + \n # :set (\$ConfigFile->\"name\") (\$FileName . \".conf\");\r\ + \n " +add dont-require-permissions=no name=test1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n#:local runningVer [:find [/system/resource/get version] \"(\"];\r\ + \n\r\ + \n:local runningChannel;\r\ + \n:local runningVersion;\r\ + \n:local ParseCustom;\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\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:global runningChannel [\$ParseCustom [/system/resource/get version] \"(\ + \" \")\" 1];\r\ + \n:log warning [\$runningChannel];\r\ + \n:set runningVersion [\$ParseCustom [/system/resource/get version] \" \" \ + \")\" 2];\r\ + \n:log warning [\$runningVersion];\r\ + \n\r\ + \n\r\ + \n\r\ + \n# :if ([:len \$open] = 0) do={\r\ + \n# :log error \"\$SMP Could not extract installed OS channel from vers\ + ion string: `\$runningOsAndChannel`.\";\r\ + \n# :error \"\$SMP error, check logs\";\r\ + \n# }\r\ + \n# :local rest [:pick \$runningOsAndChannel (\$open+1) [:len \$runningOs\ + AndChannel]];\r\ + \n# :local close [:find \$rest \")\"];\r\ + \n# :local channel [:pick \$rest 0 \$close];\r\ + \n# :return \$channel;\r\ + \n#}" +add dont-require-permissions=no name=01-Amster-Init-Script owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# Amster Initial Script\r\ + \n#\r\ + \n#:global GlobalEnvRemove true; /system/script {run Amster-GlobalEnvRemov\ + e; };\r\ + \n#:delay 1s;\r\ + \n:#global ReloadGlobal true; \r\ + \n\r\ + \n:global AmScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global defOwner \"vados\";\r\ + \n:global AmFirstRun;\r\ + \n\r\ + \n:set AmFirstRun do={\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n #:global ParseKeyValueStore;\r\ + \n #:local AmUpdCRLF true;\r\ + \n #:local IfThenElse;\r\ + \n #:set IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1\ + \_] = true) do={:return \$2}; :return \$3}\r\ + \n #/certificate/settings/set builtin-trust-store=fetch;\r\ + \n #/tool/fetch \"\$scriptsUrl/certs/Root-YE.pem\" dst-path=\"root-ye.p\ + em\";\r\ + \n #/certificate/import file-name=\"root-ye.pem\" passphrase=\"\";\r\ + \n # For basic verification we rename the certificate and print it by f\ + ingerprint. Make sure exactly this one certificate (\"Root-YE\") is shown.\ + \r\ + \n #/certificate/set name=\"Root-YE\" [ find where common-name=\"Root Y\ + E\" ];\r\ + \n #/certificate/print proplist=name,fingerprint where fingerprint=\"e1\ + 4ffcad5b0025731006caa43a121a22d8e9700f4fb9cf852f02a708aa5d5666\";\r\ + \n #:log info \"\\nAmScriptsUrl = \$AmScriptsUrl\";\r\ + \n :local Scripts {\r\ + \n \"Amster-GlobalConfig\"\r\ + \n \"Amster-GlobalFunc\";\r\ + \n# \"Amster-SFTP-backup\"\r\ + \n# \"Amster-BkpEmail-and-upd\";\r\ + \n };\r\ + \n# /system/script/set owner=(\$ScriptVal->\"name\") \\\r\ + \n# source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRLF \$S\ + ourceNew ] \$Script;\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n /system/script { run Amster-GlobalConfig; run Amster-GlobalFunc; }\r\ + \n}\r\ + \n:global AmUpdRun;\r\ + \n:set AmUpdRun do={\r\ + \n #:local UpdScript [ :tostr \$1 ];\r\ + \n #:global ParseKeyValueStore;\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n :local Scripts {\r\ + \n# \"Amster-GlobalConfig\"\r\ + \n# \"Amster-GlobalFunc\"\r\ + \n# \"Amster-GlobalRemove\"\r\ + \n \"Amster-backup-SFTP\"\r\ + \n \"Amster-SFTP-backup\"\r\ + \n \"Amster-BkpEmail-and-upd\"\r\ + \n \"Amster-TG-Bot\"\r\ + \n \"Amster-TG-Notification\";\r\ + \n };\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"updating \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n# /system/script/add name=\$Script owner=\$AmOwner source=([ /tool/fe\ + tch check-certificate=yes-without-crl (\"\$AmScriptsUrl\" . \$Script . \".\ + rsc\") output=user as-value ]->\"data\"); };\r\ + \n}\r\ + \n\r\ + \n\$AmFirstRun;\r\ + \n#\$AmUpdRun;\r\ + \n\r\ + \n#\$setUpdExist;\r\ + \n#:global setUpdExist;\r\ + \n#:global ParseKeyValueStore;\r\ + \n#:set setUpdExist do={\r\ + \n#:do {\r\ + \n#:global ParseKeyValueStore;\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\\r\?\\n#comment=*\" ] do={\r\ + \n# :local ScriptVal [ /system/script/get \$Script ];\r\ + \n# :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"#comment\"\ + ) ];\r\ + \n# :local scriptName (\$ScriptVal->\"name\");\r\ + \n#:log warning (\"\\n\\\$scriptName = \". \$scriptName);\r\ + \n#: log warning (\"\\n\\\$ScriptInfo = \". \$ScriptInfo);\r\ + \n# }\r\ + \n#} on-error={}\r\ + \n#}\r\ + \n#\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run\ + -count;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;\r\ + \n#;(evl / (evl /docommand=;(evl / (evl /foreachcounter=\$Script;do=;(evl \ + / (evl /localname=\$ScriptVal;value=(evl (evl /system/script/getnumber=\$S\ + cript))) (evl /localname=\$ScriptInfo;value=(evl (<%% \$ParseKeyValueStore\ + \_(> \$ParseKeyValueStore);(-> \$ScriptVal comment)))) (evl /localname=\$s\ + criptName) (evl /setname=\$scriptName;value=(-> #\$ScriptVal name)) (evl /\ + log/errormessage=(. \r\ + \n# \$ ScriptInfo = \$ScriptInfo)));in=(evl (evl /system/script/findwhere\ + =\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run-c\ + ount;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;(~ \$so\ + urce (. ^#!rsc by Vados \r\ + \n# \? \r\ + \n#));5))));on-error=;(evl /)))\r\ + \n" +add dont-require-permissions=no name="Download cAP's Packages" owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# +------------------------------+\r\ + \n# | |\r\ + \n# | Mikrotik RouterOS Scripts |\r\ + \n# | _Download cAP's Packages_ |\r\ + \n# | |\r\ + \n# +------------------------------+\r\ + \n# https://github.com/sebastian13/mikrotik-routeros-scripts\r\ + \n#\r\ + \n\r\ + \n# Set a directory path providing the required space\r\ + \n# Add a microSD card https://wiki.mikrotik.com/wiki/Manual:System/Disks\ + \r\ + \n# or setup a RAM-Disk via '/disk/add type=tmpfs tmpfs-max-size=20M slot=\ + ram'\r\ + \n:local dir \"/tmpfs/capsman-packages\";\r\ + \n\r\ + \n\r\ + \n# Set Package Path if required, set policy to none if using 'upgrade-cap\ + s' script\r\ + \n/interface/wifi/capsman/set package-path=\$dir upgrade-policy=none;\r\ + \n/caps-man/manager/set package-path=\$dir upgrade-policy=none;\r\ + \n#require-same-version;\r\ + \n\r\ + \n:local installed [/system package get value-name=version [find where nam\ + e=\"routeros\"]]\r\ + \n\r\ + \n# Delete old downloads\r\ + \n# /file/remove [ find type=package name~\"capsman*\" ]\r\ + \n\r\ + \n# Starting from RouterOS version 7.13, drivers for older wireless and 60\ + GHz interfaces are\r\ + \n# part of the separate \"wireless\" package. The existing \"wifiwave2\" \ + package has been divided\r\ + \n# into distinct packages: \"wifi-qcom\" and \"wifi-qcom-ac\".\r\ + \n# RouterOS >=7.12 is required to upgrade to 7.13.\r\ + \n# https://forum.mikrotik.com/viewtopic.php\?t=202423\r\ + \n\r\ + \n:foreach architecture in={ \"arm\";\r\ + \n# \"arm64\";\r\ + \n \"x86_64\";\r\ + \n \"mipsbe\"} do={\r\ + \n :foreach package in={ \"routeros\";\r\ + \n# \"wifi-qcom-ac\";\r\ + \n# \"wifi-qcom\";\r\ + \n \"container\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\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# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\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 /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\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 :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\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 /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \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/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\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 :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/729/f42d43ae\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 00:05:03 01.07.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\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 MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\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 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 GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\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 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 ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\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 updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$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 :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\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:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\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:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$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={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$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={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\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\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\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 :log 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 :log 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 :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log 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 :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\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 ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$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=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$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 :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' 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 :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 :log 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 FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\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 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 [ :le\ + n \$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 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 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\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 :if (\$ExitOK = \"false\") do={\r\ + \n :log 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 ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\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 :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\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={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :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 :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\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 :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\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\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 :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log 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 :log 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 :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log 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 :log 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 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 VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log 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 :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 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\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\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\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 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 :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\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 :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', 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\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\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\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\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 :log 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\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\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\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\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\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:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\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\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\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\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 \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\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 (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\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={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\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 \"Every Day Set Global Environment Variables\";\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: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:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\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="#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \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\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Manager@id_rsa.pub\ + \n:local localDir \"/\";\ + \n\ + \n\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\ + \n" +add dont-require-permissions=yes name=MkTmpfs owner=vados policy=\ + ftp,read,write,policy,test,sniff,sensitive source=\ + ":global MkDir;\r\ + \n\r\ + \n\$MkDir /usb1/tmpfs;" +add dont-require-permissions=no name=CreateContainer owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local contIF \"veth1\";\r\ + \n:local contIP \"10.10.10.10/24\";\r\ + \n:local contGW \"10.10.10.1\";\r\ + \n#/interface/veth/add name=\$contIF address=\$contIP gateway=\$contGW;\r\ + \n:local contBridgeIF \"Bridge-DOC\";\r\ + \n:local contBridgeIP \"10.10.10.1/24\";\r\ + \n/interface/bridge/add name=\$contBridgeIF;\r\ + \n/ip/address/add address=\$contBridgeIP interface=\$contBridgeIF;\r\ + \n/interface/bridge/port/add bridge=\$contBridgeIF interface=\$contIF;\r\ + \n/container/config/set ram-high=768M registry-url=https://registry-1.dock\ + er.io tmpdir=sata1/tmp\r\ + \n" +add dont-require-permissions=no name=carkeeperbot owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/mounts/add list=carkeeper_configs/.profile src=sata1/carkeeper/c\ + onfigs/.profile dst=/root/.ashrc;\r\ + \n/container/mounts/add list=carkeeper_configs/php.ini src=sata1/carkeeper\ + /configs/php.ini dst=/etc/php82/php.ini;\r\ + \n#/container/mounts/add list=carkeeper_configs src=sata1/carkeeper/config\ + s dst=/configs;\r\ + \n/container/mounts/add list=carkeeper_app src=sata1/carkeeper/app dst=/ap\ + p;\r\ + \n/container/mounts/add list=carkeeper_scripts src=sata1/carkeeper/scripts\ + \_dst=/scripts;\r\ + \n/container/mounts/add list=carkeeper_configs/sshd_config src=sata1/carke\ + eper/configs/sshd_config dst=/etc/ssh/sshd_config;\r\ + \n\r\ + \n/container/mounts/add list=carkeeper_tmp src=sata1/carkeeper/tmp dst=/va\ + r/tmp;\r\ + \n/container/mounts/add list=carkeeper_sync src=sata1/carkeeper/sync dst=/\ + var/sync;\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=mod/AM-IPbridge \ + 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="Use Telegram to chat with your Router and send commands" \ + dont-require-permissions=no name=mod/AM-TG-Bot owner=mod/AM-TG-Bot \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Bot\r\ + \n# Script comment: Use Telegram to chat with your Router and send command\ + s\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\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 Identity;\r\ + \n :global TelegramChatActive;\r\ + \n :global TelegramChatGroups;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdsTrusted;\r\ + \n :global TelegramChatOffset;\r\ + \n :global TelegramChatRunTime;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramRandomDelay;\r\ + \n :global TelegramTokenId;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FileExists;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global LogPrintVerbose;\r\ + \n :global MAX;\r\ + \n :global MIN;\r\ + \n :global MkDir;\r\ + \n :global RandomDelay;\r\ + \n :global RmDir;\r\ + \n :global ScriptLock;\r\ + \n :global SendTelegram2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global WaitForFile;\r\ + \n :global WaitFullyConnected;\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$WaitFullyConnected;\r\ + \n\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) \ + do={\r\ + \n /system/scheduler/add start-time=startup interval=30s name=\$ScriptN\ + ame on-event=\"/system/script/run \$ScriptName;\" comment=\"Telegram Chat \ + Bot\";\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramChatOffset ] != \"array\") do={\r\ + \n :set TelegramChatOffset { 0; 0; 0 };\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramRandomDelay ] != \"num\") do={\r\ + \n :set TelegramRandomDelay 0;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certificate \ + failed.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$RandomDelay \$TelegramRandomDelay;\r\ + \n\r\ + \n :local Data false;\r\ + \n :for I from=1 to=4 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl outpu\ + t=user \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") as-value ]->\"data\");\r\ + \n :set TelegramRandomDelay [ \$MAX 0 (\$TelegramRandomDelay - 1) ]\ + ;\r\ + \n } do={\r\ + \n :if (\$I < 4) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Fetch failed, \" . \$I . \". \ + try: \" . \$Err);\r\ + \n :set TelegramRandomDelay [ \$MIN 15 (\$TelegramRandomDelay + 5\ + ) ];\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed getting updates.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local UpdateID 0;\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :foreach Update in=(\$JSON->\"result\") do={\r\ + \n :set UpdateID (\$Update->\"update_id\");\r\ + \n \$LogPrintVerbose debug \$ScriptName (\"Update \" . \$UpdateID . \":\ + \_\" . [ :serialize to=json \$Update ]);\r\ + \n\r\ + \n :local Message (\$Update->\"message\");\r\ + \n :local IsAnyReply ([ :typeof (\$Message->\"reply_to_message\") ] = \ + \"array\");\r\ + \n :local IsMyReply (\$TelegramMessageIDs->[ :tostr (\$Message->\"reply\ + _to_message\"->\"message_id\") ]);\r\ + \n :if ((\$IsMyReply = 1 || \$TelegramChatOffset->0 > 0 || \$Uptime > 5\ + m) && \$UpdateID >= \$TelegramChatOffset->2) do={\r\ + \n :local Trusted false;\r\ + \n :local Chat (\$Message->\"chat\");\r\ + \n :local From (\$Message->\"from\");\r\ + \n :local Command (\$Message->\"text\");\r\ + \n :local ThreadId [ \$IfThenElse (\$Message->\"is_topic_message\") (\ + \$Message->\"message_thread_id\") \"\" ];\r\ + \n\r\ + \n :foreach IdsTrusted in=(\$TelegramChatId, \$TelegramChatIdsTrusted\ + ) do={\r\ + \n :if (\$From->\"id\" = \$IdsTrusted || \\\r\ + \n \$From->\"username\" = \$IdsTrusted || \\\r\ + \n \$Chat->\"id\" = \$IdsTrusted) do={\r\ + \n :set Trusted true;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Trusted = true) do={\r\ + \n :local Done false;\r\ + \n :if (\$Command = \"\?\") do={\r\ + \n \$LogPrint info \$ScriptName (\"Sending notice for update \" .\ + \_\$UpdateID . \".\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=([ \$IfThenElse ([ :len (\$From->\"first_name\") ] >\ + \_0) (\"Hello \" . (\$From->\"first_name\") . \"!\\n\\n\") ] . \\\r\ + \n \"Online\" . [ \$IfThenElse \$TelegramChatActive \" (and a\ + ctive!)\" ] . \", awaiting your commands!\") });\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && [ :pick \$Command 0 1 ] = \"!\") do={\r\ + \n :if (\$Command ~ (\"^! *(\" . [ \$EscapeForRegEx \$Identity ] \ + . \"|@\" . \$TelegramChatGroups . \")\\\$\")) do={\r\ + \n :set TelegramChatActive true;\r\ + \n } else={\r\ + \n :set TelegramChatActive false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Now \" . [ \$IfThenElse \$Tele\ + gramChatActive \"active\" \"passive\" ] . \\\r\ + \n \" from update \" . \$UpdateID . \"!\");\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && (\$IsMyReply = 1 || (\$IsAnyReply = false\ + \_&& \\\r\ + \n \$TelegramChatActive = true)) && [ :len \$Command ] > 0) do\ + ={\r\ + \n :if ([ \$ValidateSyntax \$Command ] = true) do={\r\ + \n :local State \"\";\r\ + \n :local File (\"tmpfs/telegram-chat/\" . [ \$GetRandom20CharA\ + lNum 6 ]);\r\ + \n :if ([ \$MkDir \"tmpfs/telegram-chat\" ] = false) do={\r\ + \n \$LogPrint error \$ScriptName (\"Failed creating directory\ + !\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Running command from update \ + \" . \$UpdateID . \": \" . \$Command);\r\ + \n :execute script=(\":do {\\n\" . \$Command . \"\\n} on-error=\ + { /file/add name=\\\"\" . \$File . \".failed\\\" };\" . \\\r\ + \n \"/file/add name=\\\"\" . \$File . \".done\\\"\") file=(\$\ + File . \"\\00\");\r\ + \n :if ([ \$WaitForFile (\$File . \".done\") [ \$EitherOr \$Tel\ + egramChatRunTime 20s ] ] = false) do={\r\ + \n :set State ([ \$SymbolForNotification \"warning-sign\" ] .\ + \_\"The command did not finish, still running in background.\\n\\n\");\r\ + \n }\r\ + \n :if ([ \$FileExists (\$File . \".failed\") ] = true) do={\r\ + \n :set State ([ \$SymbolForNotification \"cross-mark\" ] . \ + \"The command failed with an error!\\n\\n\");\r\ + \n }\r\ + \n :local Content ([ /file/read chunk-size=32768 file=\$File as\ + -value ]->\"data\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n \$State . [ \$IfThenElse ([ :len \$Content ] > 0) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"Output:\\n\" .\ + \_\$Content) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"No output.\") \ + ]) });\r\ + \n \$RmDir \"tmpfs/telegram-chat\";\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"The command from update \" .\ + \_\$UpdateID . \" failed syntax validation!\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n [ \$SymbolForNotification \"cross-mark\" ] . \"The comma\ + nd failed syntax validation!\") });\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n :local MessageText (\"Received a message from untrusted contact \ + \" . \\\r\ + \n [ \$IfThenElse ([ :len (\$From->\"username\") ] = 0) \"without\ + \_username\" (\"'\" . \$From->\"username\" . \"'\") ] . \\\r\ + \n \" (ID \" . \$From->\"id\" . \") in update \" . \$UpdateID . \ + \"!\");\r\ + \n :if (\$Command ~ (\"^! *\" . [ \$EscapeForRegEx \$Identity ] . \ + \"\\\$\")) do={\r\ + \n \$LogPrint warning \$ScriptName \$MessageText;\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=(\"You are not trusted.\") });\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName \$MessageText;\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ + ateID . \".\");\r\ + \n }\r\ + \n }\r\ + \n :set TelegramChatOffset ([ :pick \$TelegramChatOffset 1 3 ], \\\r\ + \n [ \$IfThenElse (\$UpdateID >= \$TelegramChatOffset->2) (\$UpdateID +\ + \_1) (\$TelegramChatOffset->2) ]);\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Script send Notifications in Telegram" dont-require-permissions=\ + no name=mod/AM-TG-Notifications owner=mod/AM-TG-Notifications policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Notifications\r\ + \n# Script comment: Script send Notifications in Telegram\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:global FlushTelegramQueue;\r\ + \n:global GetTelegramChatId;\r\ + \n:global NotificationFunctions;\r\ + \n:global PurgeTelegramQueue;\r\ + \n:global SendTelegram;\r\ + \n:global SendTelegram2;\r\ + \n# flush telegram queue\r\ + \n:set FlushTelegramQueue do={ :onerror Err {\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global CertificateAvailable;\r\ + \n :global IsFullyConnected;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$IsFullyConnected ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"System is not fully connected, not flushing.\ + \");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local AllDone true;\r\ + \n :local QueueLen [ :len \$TelegramQueue ];\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueue\ + \" ] ] > 0 && \$QueueLen = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Flushing Telegram messages from scheduler,\ + \_but queue is empty.\");\r\ + \n }\r\ + \n :foreach Id,Message in=\$TelegramQueue do={\r\ + \n :if ([ :typeof \$Message ] = \"array\" ) do={\r\ + \n :onerror Err {\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl out\ + put=user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . (\$Message->\"tokenid\") .\ + \_\"/sendMessage\") \\\r\ + \n http-data=(\$Message->\"http-data\") as-value ]->\"data\");\r\ + \n :set (\$TelegramQueue->\$Id);\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json v\ + alue=\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Sending queued Telegram message failed: \ + \" . \$Err);\r\ + \n :set AllDone false;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$AllDone = true && \$QueueLen = [ :len \$TelegramQueue ]) do={\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ]\ + ;\r\ + \n :set TelegramQueue;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# get the chat id\r\ + \n:set GetTelegramChatId do={ :onerror Err {\r\ + \n :global TelegramTokenId;\r\ + \n :global CertificateAvailable;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local Data;\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl output=us\ + er \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/getUpd\ + ates\?offset=0\" . \\\r\ + \n \"&allowed_updates=%5B%22message%22%5D\") as-value ]->\"data\");\ + \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Fetching data failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local Count [ :len (\$JSON->\"result\") ];\r\ + \n :if (\$Count = 0) do={\r\ + \n \$LogPrint info \$0 (\"No message received.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Message (\$JSON->\"result\"->(\$Count - 1)->\"message\");\r\ + \n \$LogPrint info \$0 (\"The chat id is: \" . (\$Message->\"chat\"->\"id\ + \"));\r\ + \n :if ((\$Message->\"is_topic_message\") = true) do={\r\ + \n \$LogPrint info \$0 (\"The thread id is: \" . (\$Message->\"message_\ + thread_id\"));\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set (\$NotificationFunctions->\"telegram\") do={\r\ + \n :local Notification \$1;\r\ + \n :global Identity;\r\ + \n :global IdentityExtra;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdOverride;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramThreadId;\r\ + \n :global TelegramThreadIdOverride;\r\ + \n :global TelegramTokenId;\r\ + \n :global TelegramTokenIdOverride;\r\ + \n :global CertificateAvailable;\r\ + \n :global CharacterReplace;\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ProtocolStrip;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n :local EscapeMD do={\r\ + \n :local Text [ :tostr \$1 ];\r\ + \n :local Mode [ :tostr \$2 ];\r\ + \n :local Excl [ :tostr \$3 ];\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :local Chars {\r\ + \n \"body\"={ \"\\\\\"; \"`\" };\r\ + \n \"plain\"={ \"_\"; \"*\"; \"[\"; \"]\"; \"(\"; \")\"; \"~\"; \"`\"\ + ; \">\";\r\ + \n \"#\"; \"+\"; \"-\"; \"=\"; \"|\"; \"{\"; \"}\"; \".\"; \ + \"!\" };\r\ + \n }\r\ + \n :foreach Char in=(\$Chars->\$Mode) do={\r\ + \n :if ([ :typeof [ :find \$Excl \$Char ] ] = \"nil\") do={\r\ + \n :set Text [ \$CharacterReplace \$Text \$Char (\"\\\\\" . \$Char)\ + \_];\r\ + \n }\r\ + \n }\r\ + \n :if (\$Mode = \"body\") do={:return (\"```\\n\" . \$Text . \"\\n```\ + \")}\r\ + \n :return \$Text;\r\ + \n }\r\ + \n :local ChatId [ \$EitherOr (\$Notification->\"chatid\") \\\r\ + \n [ \$EitherOr (\$TelegramChatIdOverride->(\$Notification->\"origin\")\ + ) \$TelegramChatId ] ];\r\ + \n :local ThreadId [ \$EitherOr (\$Notification->\"threadid\") \\\r\ + \n [ \$EitherOr (\$TelegramThreadIdOverride->(\$Notification->\"origin\ + \")) \\\r\ + \n [ \$IfThenElse ([ :len (\$TelegramChatIdOverride->(\$Notification->\ + \"origin\")) ] = 0) \$TelegramThreadId ] ] ];\r\ + \n :local TokenId [ \$EitherOr (\$TelegramTokenIdOverride->(\$Notificatio\ + n->\"origin\")) \$TelegramTokenId ];\r\ + \n :if ([ :len \$TokenId ] = 0 || [ :len \$ChatId ] = 0) do={:return fals\ + e}\r\ + \n :if ([ :typeof \$TelegramMessageIDs ] = \"nothing\") do={:set Telegram\ + MessageIDs ({})}\r\ + \n :local Truncated false;\r\ + \n :local Text (\"*__\" . [ \$EscapeMD (\"[\" . \$IdentityExtra . \$Ident\ + ity . \"] \" . \\\r\ + \n (\$Notification->\"subject\")) \"plain\" ] . \"__*\\n\\n\");\r\ + \n :local LenSubject [ :len \$Text ];\r\ + \n :local LenMessage [ :len (\$Notification->\"message\") ];\r\ + \n :local LenLink ([ :len (\$Notification->\"link\") ] * 2);\r\ + \n :local LenSum (\$LenSubject + \$LenMessage + \$LenLink);\r\ + \n :if (\$LenSum > 3968) do={\r\ + \n :set Text (\$Text . [ \$EscapeMD ([ :pick (\$Notification->\"message\ + \") 0 (3840 - \$LenSubject - \$LenLink) ] . \"...\") \"body\" ]);\r\ + \n :set Truncated true;\r\ + \n } else={:set Text (\$Text . [ \$EscapeMD (\$Notification->\"message\")\ + \_\"body\" ])}\r\ + \n :if (\$LenLink > 0) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"link\" ] .\ + \_\\\r\ + \n \"[\" . [ \$EscapeMD [ \$ProtocolStrip (\$Notification->\"link\") \ + ] \"plain\" ] . \"]\" . \\\r\ + \n \"(\" . [ \$EscapeMD (\$Notification->\"link\") \"plain\" ] . \")\ + \");\r\ + \n }\r\ + \n :if (\$Truncated = true) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"scissors\"\ + \_] . \\\r\ + \n [ \$EscapeMD (\"The message was too long and has been truncated, c\ + ut off _\" . \\\r\ + \n ((\$LenSum - [ :len \$Text ]) * 100 / \$LenSum) . \"%_!\") \"plain\ + \" \"_\" ]);\r\ + \n }\r\ + \n :local HTTPData (\"chat_id=\" . \$ChatId . \"&disable_notification=\" \ + . (\$Notification->\"silent\") . \\\r\ + \n \"&reply_to_message_id=\" . (\$Notification->\"replyto\") . \"&mes\ + sage_thread_id=\" . \$ThreadId . \\\r\ + \n \"&disable_web_page_preview=true&parse_mode=MarkdownV2\");\r\ + \n :onerror Err {\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority \ + - G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl output=\ + user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TokenId . \"/sendMessage\") \ + \\\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) as-va\ + lue ]->\"data\");\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json value\ + =\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint info \$0 (\"Failed sending Telegram notification: \" . \$\ + Err . \" - Queuing...\");\r\ + \n :if ([ :typeof \$TelegramQueue ] = \"nothing\") do={:set TelegramQue\ + ue ({})}\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"alarm-cloc\ + k\" ] . \\\r\ + \n [ \$EscapeMD (\"This message was queued since _\" . [ /system/cloc\ + k/get date ] . \\\r\ + \n \" \" . [ /system/clock/get time ] . \"_ and may be obsolete.\") \ + \"plain\" \"_\" ]);\r\ + \n :set (\$TelegramQueue->[ :len \$TelegramQueue ]) { tokenid=\$TokenId\ + ;\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) };\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueu\ + e\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"_FlushTelegramQueue\" interval=1m sta\ + rt-time=startup \\\r\ + \n on-event=(\":global FlushTelegramQueue; \\\$FlushTelegramQueue;\ + \");\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n# purge the Telegram queue\r\ + \n:set PurgeTelegramQueue do={\r\ + \n :global TelegramQueue;\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ];\ + \r\ + \n :set TelegramQueue;\r\ + \n}\r\ + \n# send notification via telegram - expects at least two string arguments\ + \r\ + \n:set SendTelegram do={ :onerror Err {\r\ + \n :global SendTelegram2;\r\ + \n \$SendTelegram2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3; sil\ + ent=\$4 });\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set SendTelegram2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n (\$NotificationFunctions->\"telegram\") (\"\\\$NotificationFunctions->\ + \\\"telegram\\\"\") \$Notification;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=testIfThenElseAndEitherOr owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source=":local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local ExitError;\r\ + \n#:local IfThenElse;\r\ + \n#:local EitherOr;\r\ + \n\r\ + \n:local one 11;\r\ + \n:local two 8;\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n:local Test; # [ :totime \"22s\" ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n\r\ + \n:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set Test [ \$EitherOr \$Test \"\" ];\r\ + \n:log warning (\"\\\$ Test = \" . \$Test);\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 :local IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log 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\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set ExitOK true;\r\ + \n\$ExitError \$ExitOK \$ScriptName \"Err test custom\";" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\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:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$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:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add dont-require-permissions=no name=testGetPubIP owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global DevInfoIncludeIP;\r\ + \n:global CharacterReplace;\r\ + \n:global EscapeForRegEx;\r\ + \n:global UrlEncode;\r\ + \n\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local Char (\"\\n\\r\");\r\ + \n :local PublicIpAddress [\$GetPubIp];\r\ + \n# :if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 2) ] = \ + \"\\n\") do={:error true}; :set error falseon-error={:set PublicIpAddress \ + (\$PublicIpAddress . Char)};\r\ + \n#:if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 1) ] = \"/\ + n\") do={\r\ + \n#:log warning \"N is = //n\"; \r\ + \n# :set PublicIpAddress [ \$CharacterReplace \$PublicIpAddress \$Char \"\ + \" ];\r\ + \n#}\r\ + \n# :set PublicIpAddress [ \$UrlEncode \$PublicIpAddress ];\r\ + \n#:local IpLen ([ :len \$PublicIpAddress ] -1);\r\ + \n#:set PublicIpAddress [:pick \$PublicIpAddress 0 \$IpLen];\r\ + \n :log warning \"Public IP address detected: \$PublicIpAddress , len = \ + \$IpLen\";\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\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 GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\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 :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=awg-env owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/envs/add list=awg-proxy-env key=AWG_LISTEN value=\":55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_REMOTE value=\"109.107.17\ + 7.79:55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H1 value=\"472437748-4724\ + 38637\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H2 value=\"707808381-7078\ + 09250\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H3 value=\"1609078552-160\ + 9079495\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H4 value=\"1012329484-101\ + 2329741\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I5 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_SERVER_PUB value=\"o5IgCl\ + 1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_CLIENT_PUB value=[/interf\ + ace/wireguard/get [find name=wg-awg-proxy] public-key]" +add dont-require-permissions=no name=awg-container-add owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/add file=sata1/tmp/awg-proxy-amd64.tar.gz interface=veth-awg-pro\ + xy envlist=awg-proxy-env \\\ + \n hostname=awg-proxy root-dir=sata1/awg-proxy logging=yes shm-size=4M \ + start-on-boot=yes\ + \n/container/start [find where tag~\"awg-proxy\"]" +add dont-require-permissions=yes name=awg2-webui owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + put \"Download image, and save him to usb1/tmp\"\ + \n/tool/fetch url=\"https://ros.vados.ru/docker/awg2-webui-chr.tar\" dst-p\ + ath=sata1/tmp/awg2-webui.tar\ + \n\ + \n:put \"1. Create veth interface\"\ + \n/interface veth add name=veth-awg address=10.9.9.2/24 gateway=10.9.9.1\ + \n\ + \n:put \"2. Create bridge and add veth\"\ + \n/interface bridge add name=br-awg\ + \n/interface bridge port add bridge=br-awg interface=veth-awg\ + \n\ + \n:put \"3. Assign IP to bridge\"\ + \n/ip address add address=10.9.9.1/24 interface=br-awg\ + \n\ + \n:put \"4. NAT: masquerade container traffic\"\ + \n/ip firewall nat add chain=srcnat src-address=10.9.9.0/24 action=masquer\ + ade\ + \n\ + \n:put \"5. Port forward: UDP 443 \? container (AmneziaWG QUIC mimicry)\"\ + \n/ip firewall nat add chain=dstnat protocol=udp dst-port=443 action=dst-n\ + at to-addresses=10.9.9.2 to-ports=55055 in-interface=ether1\ + \n\ + \n:put \"6. Port forward: HTTPS 9443 \? container Web UI\"\ + \n/ip firewall nat add chain=dstnat protocol=tcp dst-port=9443 action=dst-\ + nat to-addresses=10.9.9.2 to-ports=443 in-interface=ether1\ + \n\ + \n:put \"Create environment list..\"\ + \n/container envs add list=awgui-env key=WEB_USER value=vados\ + \n/container envs add list=awgui-env key=WEB_PASS value=zoomzoomrulezz\ + \n/container envs add list=awgui-env key=SECRET_KEY value=RanDomSecret32Sy\ + mboLs2325272931q\ + \n/container envs add list=awgui-env key=AWG_ENDPOINT value=10.30.30.10:44\ + 3\ + \n\ + \n:put \"Load and start container...\"\ + \n/container add file=sata1/tmp/awg2-webui.tar interface=veth-awg hostname\ + =awg2-webui \\\ + \nroot-dir=sata1/awg2-webui layer-dir=sata1/docker/awg2-webu/ envlist=awgu\ + i-env start-on-boot=yes logging=yes shm-size=4M\ + \n\ + \n:put \"Start...\"\ + \n/container start 0\ + \n\ + \n:put \"Verify...\"\ + \n/container print\ + \n\ + \n:put \"Should show: status=running\"\ + \n\ + \n/log print where topics~\"container\"\ + \n\ + \n:put \"Should show: AWG started, nginx running\"\ + \n" +add dont-require-permissions=no name=awg-proxy-go-Client owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:put \"[::::::::::::::: START :::::::::::::::]\"\ + \n:put \"\"\ + \n:put \"Add ram disk tmpfs\"\ + \n#/disk add type=tmpfs tmpfs-max-size=100M slot=ram\ + \n\ + \n:put \"veth and network:\"\ + \n /interface/bridge add name=docker port-cost-mode=short\ + \n /ip/address/add address=192.168.100.1/24 interface=docker\ + \n\ + \n /interface/veth add address=192.168.100.3/24 gateway=192.168.100.1 name\ + =awg-proxy-go-client\ + \n /interface/bridge/port add bridge=docker interface=awg-proxy-go-client\ + \n\ + \n:put \"add config-client.json\"\ + \n/file/add name=sata1/mounts/awg-proxy-go/config-client.json\ + \n/container/mounts/add src=sata1/mounts/awg-proxy-go/config-client.json d\ + st=/app/config.json list=awgcfg-client\ + \n\ + \n#:put \"Download image, and save him to sata1/tmp/awgproxy-0.0.1-0034-am\ + d64.tar.gz\"\ + \n#/tool/fetch url=\"https://ros.vados.ru/amneziawg/img/awgproxy-0.0.1-003\ + 4-amd64.tar.gz\" dst-#path=\"tmp/awgproxy-0.0.1-0034-amd64.tar.gz\"\ + \n\ + \n:put \"Add container\"\ + \n/container/add file=\"usb1/dst/awgproxy-0.0.1-0036-amd64.tar\" interface\ + =awg-proxy-go-client hostname=awg-proxy-go-client root-dir=sata1/awg-proxy\ + -client logging=yes start-on-boot=yes workdir=sata1/docker/ name=\"awg-pro\ + xy-go-client\" mountlists=awgcfg-client\ + \n\ + \n:put \"Start container\"\ + \n#/container/start awg-proxy-go-client\ + \n\ + \n:put \"Add user:\"\ + \n /user/add address=192.168.100.2 group=write name=awg-proxy-go password=\ + peskar55\ + \n\ + \n:put \"Add forwarding port web-ui\"\ + \n /ip firewall nat add action=dst-nat chain=dstnat dst-port=8089 in-inter\ + face=ether1 protocol=tcp to-addresses=192.168.100.3 to-port=8088\ + \n\ + \n:put \"Add native WireGuard-server wg-awg, add address.\"\ + \n /interface/wireguard/add name=wg-awg-client\ + \n /ip/address/add address=172.17.0.1/24 interface=wg-awg-client\ + \n\ + \n:put \"\"\ + \n:put \"[::::::::::::::: END :::::::::::::::]\"\ + \n" +add comment=awg2wg dont-require-permissions=no name=awg2wg-uninstall owner=\ + Manager policy=ftp,read,write,policy source="\r\ + \n :put \"Uninstalling AmneziaWG...\"\r\ + \n :log info \"Uninstalling AmneziaWG...\"\r\ + \n /ip/route/remove [find where comment=awg2wg-tunnel]\r\ + \n :do { /tool/netwatch/remove [find where comment=Monitor-AWG2WG] } on-e\ + rror={}\r\ + \n :do { /ip/route/remove [find where comment=Monitor-AWG2WG] } on-error=\ + {}\r\ + \n /container/stop [find where interface=veth-awg2wg]\r\ + \n :delay 7s\r\ + \n /interface/list/member/remove [find where interface=wg-awg2wg]\r\ + \n /container/remove [find where interface=veth-awg2wg]\r\ + \n /container/envs/remove [find where list=\"awg2wg-env\"]\r\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg2wg\"]\r\ + \n /ip/address/remove [find where address=\"172.20.0.1/30\"]\r\ + \n /interface/veth/remove [find where name=\"veth-awg2wg\"]\r\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg2wg\"]\ + \r\ + \n /ip/address/remove [find where interface=\"wg-awg2wg\"]\r\ + \n /interface/wireguard/remove [find where name=\"wg-awg2wg\"]\r\ + \n :do { /file/remove [find where name~\"awg2wg.+tar\"] } on-error={}\r\ + \n :do { /file/remove [find where name=\"disk1/awg2wg\"] } on-error={}\r\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n /system/script/remove [find where name=awg2wg-uninstall]\r\ + \n" +add dont-require-permissions=no name=amneziawg-mikrotik-c owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global imagesPath \"amneziawg/img/\";\ + \n:local Image \"awg-proxy-amd64-7.20-Docker.tar.gz\";\ + \n\ + \n:global DstDir \"sata1/dst/\";\ + \n\ + \n:local Url=(\$GlobalScriptsUrl . \$ImagesPath . \$Image);\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n" +add comment=Generator dont-require-permissions=no name=awg-VDSina owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# ============================================================\ + \n# AWG Proxy -- MikroTik RouterOS (protocol: v2)\ + \n# 2026-06-30 22:08:12\ + \n# ============================================================\ + \n\ + \n# 0. Check prerequisites\ + \n:if ([:len [/system/package/find where name=\"container\" disabled=no]] \ + = 0) do={\ + \n :put \"Container package is not installed or disabled. Install it and \ + reboot.\"\ + \n :error \"Usage: /system/device-mode/update container=yes\"\ + \n}\ + \n\ + \n# Auto-detect storage\ + \n:global awgDisk \"disk1\"\ + \n{\ + \n :local usbFree 0\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] free] \ + } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n :put (\"Using USB: usb1 (\" . (\$usbFree / 1048576) . \" MB free)\")\ + \n } else={\ + \n :if ([:len [/disk/find where slot=\"usb1\"]] > 0) do={\ + \n :put \"USB found but not mounted. Format as ext4\?\"\ + \n :put \"Press 'y' to confirm:\"\ + \n :local key [/terminal/inkey timeout=30]\ + \n :if (\$key = 121 || \$key = 89) do={\ + \n /disk/format-drive usb1 file-system=ext4 label=usb1\ + \n :delay 3s\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] \ + free] } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n } else={ :put \"Format failed, using disk1\" }\ + \n } else={ :put \"Using disk1\" }\ + \n } else={ :put \"No USB, using disk1\" }\ + \n }\ + \n}\ + \n\ + \n# 1. Uninstall script\ + \n/system/script/add name=awg-VDSina-uninstall comment=awg-VDSina source={\ + \n :put \"Uninstallimg AmneziaWG...\"\ + \n :log info \"Uninstallimg AmneziaWG...\"\ + \n :local prevDNS \"\"\ + \n :do { :set prevDNS [/container/envs/get [find where list=\"awg-VDSina-\ + env\" key=\"AWG_PREV_DNS\"] value] } on-error={}\ + \n :local storageDisk \"disk1\"\ + \n :do { :set storageDisk [/container/envs/get [find where list=\"awg-VDS\ + ina-env\" key=\"AWG_STORAGE\"] value] } on-error={}\ + \n :local prevTmpdir \"\"\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { :set prevTmpdir [/container/envs/get [find where list=\"awg-VD\ + Sina-env\" key=\"AWG_PREV_TMPDIR\"] value] } on-error={}\ + \n }\ + \n /ip/route/remove [find where comment=awg-VDSina-tunnel]\ + \n /ip/route/remove [find where comment=awg-VDSina-dns]\ + \n /container/stop [find where interface=veth-awg-VDSina]\ + \n :delay 7s\ + \n /container/remove [find where interface=veth-awg-VDSina]\ + \n /container/envs/remove [find where list=\"awg-VDSina-env\"]\ + \n :if (\$prevDNS != \"\") do={\ + \n :do { /ip/dns/set servers=\"\$prevDNS\" } on-error={}\ + \n :put (\"DNS restored to: \$prevDNS\")\ + \n }\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n /container/config set tmpdir=\$prevTmpdir\ + \n :put (\"Container tmpdir restored to: \$prevTmpdir\")\ + \n }\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg-VDSina\"]\ + \n /ip/firewall/nat/remove [find where src-address=\"172.19.75.208/30\"]\ + \n /ip/address/remove [find where address=\"172.19.75.209/30\"]\ + \n /interface/veth/remove [find where name=\"veth-awg-VDSina\"]\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg-VDSin\ + a\"]\ + \n /ip/address/remove [find where interface=\"wg-awg-VDSina\"]\ + \n /interface/wireguard/remove [find where name=\"wg-awg-VDSina\"]\ + \n :do { /file/remove [find where name~\"awg-VDSina.+tar\"] } on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/awg-VDSina\")]\ + \_} on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/ru_ranges_time\ + out.rsc\")] } on-error={}\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { /file/remove [find where name~(\$storageDisk . \"/pull\")] } o\ + n-error={}\ + \n }\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\ + \n /system/script/remove [find where name=awg-VDSina-uninstall]\ + \n}\ + \n\ + \n# 2. Network infrastructure\ + \n/interface/veth/add name=veth-awg-VDSina address=172.19.75.210/30 gatewa\ + y=172.19.75.209\ + \n/ip/address/add address=172.19.75.209/30 interface=veth-awg-VDSina\ + \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.19.7\ + 5.208/30\ + \n\ + \n# 3. WireGuard interface (MikroTik derives the public key automatically)\ + \n/interface/wireguard/add name=wg-awg-VDSina private-key=\"4CHyNhbOs923/E\ + yNDguMXJXdghL2I3UyzXPwrANVgHs=\" listen-port=14710 disabled=yes\ + \n/interface/wireguard/peers/add interface=wg-awg-VDSina public-key=\"o5Ig\ + Cl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\" preshared-key=\"RNvF7T1cg5tyXcY\ + QnD9N5BEp6e20vVJQTv0GMjyvHU0=\" endpoint-address=172.19.75.210 endpoint-po\ + rt=51820 allowed-address=0.0.0.0/0 persistent-keepalive=10\ + \n/ip/address/add address=10.9.0.3/32 interface=wg-awg-VDSina\ + \n\ + \n# 4. Container environment variables\ + \n/container/envs/add list=awg-VDSina-env key=AWG_LISTEN value=\":51820\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_REMOTE value=\"109.107.1\ + 77.79:55055\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H1 value=\"472437748-472\ + 438637\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H2 value=\"707808381-707\ + 809250\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H3 value=\"1609078552-16\ + 09079495\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H4 value=\"1012329484-10\ + 12329741\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_SERVER_PUB value=\"o5IgC\ + l1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_CLIENT_PUB value=[/inter\ + face/wireguard/get [find name=wg-awg-VDSina] public-key]\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I5 value=\"\"\ + \n\ + \n# 5. DNS\ + \n{ :local rawDNS [/ip/dns/get servers]; :local prevDNS \"\"; :foreach s i\ + n=[:toarray \$rawDNS] do={ :if ([:len \$prevDNS] > 0) do={ :set prevDNS \"\ + \$prevDNS,\$s\" } else={ :set prevDNS \$s } }; /container/envs/add list=aw\ + g-VDSina-env key=AWG_PREV_DNS value=\"\$prevDNS\" }\ + \n# NOTE: replaces existing DNS configuration\ + \n/ip/dns/set servers=109.107.177.79\ + \n/ip/route/add dst-address=109.107.177.79/32 gateway=wg-awg-VDSina distan\ + ce=1 comment=awg-VDSina-dns\ + \n\ + \n# 6. Download, create and start container\ + \n/container/envs/add list=awg-VDSina-env key=AWG_STORAGE value=\$awgDisk\ + \n:if (\$awgDisk != \"disk1\") do={\ + \n :local tmpPath (\$awgDisk . \"/pull\")\ + \n /container/envs/add list=awg-VDSina-env key=AWG_PREV_TMPDIR value=[/co\ + ntainer/config/get tmpdir]\ + \n /container/config set tmpdir=\$tmpPath memory-high=200M\ + \n}\ + \n{\ + \n :local arch [/system/resource/get architecture-name]\ + \n :local ver [/system/resource/get version]\ + \n :local dotPos [:find \$ver \".\"]\ + \n :local rest [:pick \$ver (\$dotPos + 1) [:len \$ver]]\ + \n :local endPos [:find \$rest \".\"]\ + \n :if ([:typeof \$endPos] = \"nil\") do={ :set endPos [:find \$rest \" \ + \"] }\ + \n :local minor [:tonum [:pick \$rest 0 \$endPos]]\ + \n :local suffix \"\"\ + \n :if (\$minor <= 20) do={ :set suffix \"-7.20-Docker\" }\ + \n :local file \"\"\ + \n :if (\$arch = \"arm64\") do={ :set file (\"awg-proxy-arm64\" . \$suffi\ + x . \".tar.gz\") }\ + \n :if (\$arch = \"arm\") do={ :set file (\"awg-proxy-arm\" . \$suffix . \ + \".tar.gz\") }\ + \n :if (\$arch ~ \"x86\") do={ :set file (\"awg-proxy-amd64\" . \$suffix \ + . \".tar.gz\") }\ + \n :if (\$file = \"\") do={ :error \"Unsupported architecture: \$arch\" }\ + \n :local url \"https://github.com/timbrs/amneziawg-mikrotik-c/releases/l\ + atest/download/\$file\"\ + \n :local filePath \$file\ + \n :if (\$awgDisk != \"disk1\") do={\ + \n :set filePath (\$awgDisk . \"/pull/\" . \$file)\ + \n :do { /file/make-directory (\$awgDisk . \"/pull\") } on-error={}\ + \n }\ + \n :if ([:len [/file/find where name=\$filePath]] = 0) do={\ + \n :local freeStorage 0\ + \n :if (\$awgDisk = \"disk1\") do={\ + \n :set freeStorage [/system/resource/get free-hdd-space]\ + \n } else={\ + \n :do { :set freeStorage [/disk/get [find where mount-point=\$awgDis\ + k] free] } on-error={}\ + \n }\ + \n :if (\$freeStorage < 262144) do={\ + \n :put (\"WARNING: Low disk space (\" . (\$freeStorage / 1024) . \"K\ + B free). Need at least 256KB.\")\ + \n :put \"See: https://github.com/timbrs/amneziawg-mikrotik-c#insuffi\ + cient-disk-space\"\ + \n :error \"Insufficient disk space\"\ + \n }\ + \n :put (\"Fetching: \$url -> \" . \$filePath)\ + \n /tool/fetch url=\$url dst-path=\$filePath http-max-redirect-count=10\ + \n } else={\ + \n :put (\"File already exists: \" . \$filePath)\ + \n }\ + \n :local rootDir (\$awgDisk . \"/awg-VDSina\")\ + \n /container/add file=\$filePath interface=veth-awg-VDSina envlist=awg-V\ + DSina-env hostname=awg-VDSina root-dir=\$rootDir logging=no start-on-boot=\ + yes comment=awg-VDSina\ + \n :if (\$minor > 20) do={ [:parse \"/container/set [find where interface\ + =veth-awg-VDSina] shm-size=4M\"] }\ + \n /file/remove \$filePath\ + \n :local freeMem [/system/resource/get free-memory]\ + \n :if (\$freeMem < 16777216) do={\ + \n :put (\"WARNING: Low memory (\" . (\$freeMem / 1048576) . \"MB free)\ + . 16MB+ recommended.\")\ + \n }\ + \n /container/start [find where interface=veth-awg-VDSina]\ + \n :do { /file/remove [find where name=\"console-dump.txt\"] } on-error={\ + }\ + \n :put \"Waiting for container to start...\"\ + \n :delay 5s\ + \n /interface/wireguard/enable wg-awg-VDSina\ + \n :put \"WireGuard interface enabled\"\ + \n :put \"Installation complete!\"\ + \n :put \"Ping test: 109.107.177.79 via AmneziaWG tunnel. repeat 10 times\ + \"\ + \n /ping 109.107.177.79 count=10 interval=1\ + \n :put \"\"\ + \n :put \"======= NEXT STEPS =======\"\ + \n :put \"\"\ + \n :put \"Route specific traffic through the AmneziaWG tunnel:\"\ + \n :put \"\"\ + \n :put \" Route a single host:\"\ + \n :put \" /ip/route/add dst-address=8.8.8.8/32 gateway=wg-awg-VDSina \ + comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Route a subnet:\"\ + \n :put \" /ip/route/add dst-address=100.0.0.0/8 gateway=wg-awg-VDSina\ + \_comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Remove a route:\"\ + \n :put \" /ip/route/remove [find where comment=awg-VDSina-tunnel dst-\ + address=8.8.8.8/32]\"\ + \n :put \"\"\ + \n :put \" Show all tunnel routes:\"\ + \n :put \" /ip/route/print where comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Uninstall:\"\ + \n :put \" /system/script/run awg-VDSina-uninstall\"\ + \n :put \"=========================\"\ + \n}\ + \n\ + \n# 7. Verification\ + \n# /container/print\ + \n# /interface/wireguard/print\ + \n# /interface/wireguard/peers/print\ + \n" +add comment="wg2awg GH repo in client mode" dont-require-permissions=no name=\ + "wg2awg client" owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:local Arch \"amd64\";\ + \n:local Version \"v0.0.1\";\ + \n:local Name wg2awg;\ + \n:local WorkDisk \"sata1\";\ + \n:local WorkDir (\$WorkDisk . \"/\" . \$Name);\ + \n:local Bridge (\"Bridge-\" . \$Name);\ + \n:local VetchMTU \"1280\";\ + \n:local Vetch (\"vetch-\" . \$Name);\ + \n:local VetchNet \"10.9.0.0\";\ + \n:local VetchGate \"10.9.0.1\";\ + \n:local VetchAddr \"10.9.0.3/32\";\ + \n:local Env (\$Name . \"-env\");\ + \n:local ConfDir (\"/etc/\" . \$Name . \"/\");\ + \n:local ConfFile (\$Name . \".conf\");\ + \n:local Mounts (\$WorkDisk . \"/mounts/\" . \$Name . \"/\");\ + \n:local RootDir (\$WorkDisk . \"/\" . \$Name);\ + \n:local Registry \"https://registry-1.docker.io\";\ + \n:local FetchFile (\$Name . \"-\" . \$Arch . \"-oci.tar\");\ + \n:local FetchUrl (\"https://github.com/vados-dev/wg2awg/releases/download\ + /\" . \$Version . \"/\" . \$FetchFile);\ + \n:local FetchDir (\$WorkDisk . \"/dst/\");\ + \n:local AwgListen \":44044\";\ + \n:local AwgRemote \"109.107.177.79\";\ + \n\ + \n#:put \"\"\ + \n#put \"Add ram disk tmpfs\"\ + \n#/disk add type=tmpfs tmpfs-max-size=100M slot=ram\ + \n\ + \n\ + \n:log warning \"[::::::::::::::: START :::::::::::::::]\"\ + \n:log warning \"Add veth and nat...\";\ + \n\ + \n/interface/veth/add name=\$Vetch address=\$VetchAddr gateway=\$VetchGate\ + ;\ + \n\ + \n:do {\ + \n:log warning (\"Remove interface: name=\" . \$Vetch . \", address=\" . \ + \$VetchAddr . \", gateway=\" . \$VetchGate);\ + \n/interface/veth/remove [find name=\$Vetch];\ + \n:log warning (\"Add interface: name=\" . \$Vetch . \", address=\" . \$Ve\ + tchAddr . \", gateway=\" . \$VetchGate);\ + \n/interface/veth/add name=\$Vetch address=\$VetchAddr gateway=\$VetchGate\ + ;\ + \n:log warning (\"Remove ip address: address=\" . \$VetchGate . \", interf\ + ace=\" . \$Vetch);\ + \n/ip/address/remove [find address=\$VetchGate interface=\$Vetch];\ + \n:log warning (\"Add ip address: address=\" . \$VetchGate . \", interface\ + =\" . \$Vetch);\ + \n/ip/address/add address=\$VetchGate interface=\$Vetch;\ + \n:log warning (\"Remove firewall nat rule: chain=srcnat action=masquerade\ + \_src-address=\" . \$VetchNet . \"/24\");\ + \n/ip/firewall/nat/remove [find chain=srcnat action=masquerade src-address\ + =(\$VetchNet . \"/24\")];\ + \n:log warning (\"Add firewall nat rule: chain=srcnat action=masquerade sr\ + c-address=\" . \$VetchNet . \"/24\");\ + \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=(\$VethN\ + et . \"/24\");\ + \n} on-error={}\ + \n\ + \n#:do {\ + \n#/file add type=directory name=\$Mounts\ + \n#} on-error={}\ + \n\ + \n\ + \n:do {\ + \n:log warning (\"Remove WorkDir: \" . \$WorkDir . \"...\");\ + \n/file remove [find name=\$WorkDir];\ + \n:log warning (\"Add WorkDir: \" . \$WorkDir . \"...\");\ + \n/file add type=directory name=\$WorkDir;\ + \n:log warning (\"Remove config file \" . \$Mounts . \$ConfFile . \"...\")\ + ;\ + \n/file remove [find name=(\$Mounts . \$ConfFile)];\ + \n:log warning (\"Add config file \" . \$Mounts . \$ConfFile . \"...\");\ + \n/file add type=file name=(\$Mounts . \$ConfFile) contents=\"[Interface]\ + \nPrivateKey = 4CHyNhbOs923/EyNDguMXJXdghL2I3UyzXPwrANVgHs=\ + \nAddress = \$VetchAddr\ + \nMTU = \$VetchMTU\ + \nDNS = 109.107.177.79\ + \nPreUp = ip route add 109.107.177.79/32 via \$VetchGate dev \$Vetch\ + \nPostDown = ip route del 109.107.177.79/32 via \$VetchGate dev \$Vetch\ + \nJc = 9\ + \nJmin = 105\ + \nJmax = 920\ + \nS1 = 90\ + \nS2 = 136\ + \nS3 = 45\ + \nS4 = 27\ + \nH1 = 472437748-472438637\ + \nH2 = 707808381-707809250\ + \nH3 = 1609078552-1609079495\ + \nH4 = 1012329484-1012329741\ + \nI1 = <\ + r 4>\ + \nI2 = \ + \nI3 = \ + \nI4 = \ + \nI5 = \ + \n\ + \n[Peer]\ + \nPublicKey = o5IgCl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\ + \nAllowedIPs = 0.0.0.0/0\ + \nEndpoint = \$AwgRemote\ + \nPersistentKeepalive = 10\ + \nPresharedKey = RNvF7T1cg5tyXcYQnD9N5BEp6e20vVJQTv0GMjyvHU0=\";\ + \n} on-error={}\ + \n\ + \n\ + \n:do {\ + \n:log warning (\"Remove mounts list \$Env...\");\ + \n/container/mounts/remove [find list=\$Env];\ + \n:log warning (\"Add mounts list \$Env...\");\ + \n/container/mounts/add src=(\$Mounts . \$ConfFile) dst=(\$ConfDir . \$Con\ + fFile) list=\$Env mode=ro;\ + \n:log warning (\"Remove Environment keys.\");\ + \n/container/envs/remove [find list=\$Env];\ + \n:log warning (\"Add Environment keys.\");\ + \n/container/envs/add list=\$Env key=AWG_CONFIG value=(\$ConfDir . \$ConfF\ + ile);\ + \n/container/envs/add list=\$Env key=AWG_LISTEN value=\$AwgListen\ + \n/container/envs/add list=\$Env key=AWG_REMOTE value=\$AwgRemote\ + \n/container/envs/add list=\$Env key=AWG_MODE value=client\ + \n} on-error={}\ + \n\ + \n:do {\ + \n:log warning (\"Remove \" . \$WorkDisk . \"/tmp\");\ + \n/file remove [find name=(\$WorkDisk . \"/tmp\")];\ + \n:log warning (\"Add \" . \$WorkDisk . \"/tmp\");\ + \n/file add type=directory name=(\$WorkDisk . \"/tmp\");\ + \n:log warning (\"Container add tmpdir \" . \$WorkDisk . \"/tmp\");\ + \n/container config set tmpdir=(\$WorkDisk . \"/tmp\");\ + \n} on-error={}\ + \n\ + \n:do {\ + \n:log warning (\"Remove \" . \$FetchDir . \$FetchFile . \".\");\ + \n/file remove [find name=(\$FetchDir . \$FetchFile)];\ + \n:log warning (\"Download image from \" . \$FetchUrl . \" and save him to\ + \_\" . \$FetchDir . \$FetchFile . \".\");\ + \n/tool/fetch url=\$FetchUrl dst-path=(\$FetchDir . \$FetchFile);\ + \n} on-error={}\ + \n\ + \n#:log warning (\"Container set registry \" . \$Registry . \" tmpdir= \" \ + . \$WorkDisk . \"/tmp\");\ + \n#/container/config/set registry-url=\$Registry tmpdir=(\$WorkDisk . \"/t\ + mp\");\ + \n\ + \n#:do {\ + \n:log warning (\"Container add width: file=\" . \$FetchDir . \$FetchFile \ + . \", interface=\" . \$Vetch . \", hostname=\" . \$Name . \", mountlists=\ + \" . \$Env . \", envlist=\" . \$Env . \", root-dir=\" . \$RootDir . \", wo\ + rkdir=\" . \$WorkDir . \", name=\" . \$Name . \", logging=yes, start-on-bo\ + ot=yes\");\ + \n/container/add file=(\$FetchDir . \$FetchFile) interface=\$Vetch hostnam\ + e=\$Name mountlists=\$Env envlist=\$Env root-dir=\$RootDir workdir=\$WorkD\ + ir name=\$Name logging=yes start-on-boot=yes;\ + \n#} on-error={}\ + \n\ + \n\ + \n#/container/start [find where interface=\$Vetch];\ + \n\ + \n#/interface/bridge add name=\$Bridge port-cost-mode=short;\ + \n#/ip/address/add address=192.168.100.1/24 interface=\$Bridge;\ + \n\ + \n#/interface/veth add address=192.168.100.3/24 gateway=192.168.100.1 name\ + =awg-proxy-go-client\ + \n#/interface/bridge/port add bridge=docker interface=awg-proxy-go-client\ + \n\ + \n#:put \"add config-client.json\"\ + \n#/file/add name=sata1/mounts/awg-proxy-go/config-client.json\ + \n#/container/mounts/add src=sata1/mounts/awg-proxy-go/config-client.json \ + dst=/app/config.json list=awgcfg-client\ + \n\ + \n#:put \"Download image, and save him to sata1/tmp/awgproxy-0.0.1-0034-am\ + d64.tar.gz\"\ + \n#/tool/fetch url=\"https://ros.vados.ru/amneziawg/img/awgproxy-0.0.1-003\ + 4-amd64.tar.gz\" dst-#path=\"tmp/awgproxy-0.0.1-0034-amd64.tar.gz\"\ + \n\ + \n#:put \"Add container\"\ + \n#/container/add file=\"usb1/dst/awgproxy-0.0.1-0036-amd64.tar\" interfac\ + e=awg-proxy-go-client hostname=awg-proxy-go-client root-dir=sata1/awg-prox\ + y-client logging=yes start-on-boot=yes workdir=sata1/docker/ name=\"awg-pr\ + oxy-go-client\" mountlists=awgcfg-client\ + \n\ + \n#:put \"Start container\"\ + \n#/container/start awg-proxy-go-client\ + \n\ + \n#:put \"Add user:\"\ + \n#/user/add address=192.168.100.2 group=write name=awg-proxy-go password=\ + peskar55\ + \n\ + \n#:put \"Add forwarding port web-ui\"\ + \n#/ip firewall nat add action=dst-nat chain=dstnat dst-port=8089 in-inter\ + face=ether1 protocol=tcp to-addresses=192.168.100.3 to-port=8088\ + \n\ + \n#:put \"Add native WireGuard-server wg-awg, add address.\"\ + \n#/interface/wireguard/add name=wg-awg-client\ + \n#/ip/address/add address=172.17.0.1/24 interface=wg-awg-client\ + \n\ + \n:put \"\"\ + \n:put \"[::::::::::::::: END :::::::::::::::]\"\ + \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" +add name=manager policy="local,ssh,ftp,read,write,policy,api,rest-api,!telnet,\ + !reboot,!test,!winbox,!password,!web,!sniff,!sensitive,!romon" +/app +set cinny firewall-redirects=8094:80:tcp:web +set goaway container-command-lines=goaway:none:docker.io/pommee/goaway:latest +set home-assistant container-command-lines=\ + home-assistant:none:lscr.io/linuxserver/homeassistant +set n8n firewall-redirects=5678:5678:tcp:web +set nextcloud container-command-lines="db:none:docker.io/postgres:17,redis:non\ + e:docker.io/valkey/valkey:/bin/sh -c 'valkey-server --port 6379 --appendon\ + ly yes --requirepass \$VALKEY_PASSWORD',server:none:docker.io/nextcloud:ap\ + ache" +set pihole environment="pihole:FTLCONF_dns_listeningMode=all,pihole:FTLCONF_we\ + bserver_api_password=password" +set redlib firewall-redirects=8087:8080:tcp:web +set solr container-command-lines=solr:none:docker.io/solr:latest +set uptime-kuma container-command-lines=\ + uptime-kuma:none:docker.io/louislam/uptime-kuma:1 +/app settings +set auto-update=yes disk=*7 lan-bridge=*3 registry-mirrors="https://reg.vados.\ + ru:5000/:https://reg.vados.ru/,https://registry-1.docker.io" +/caps-man aaa +set called-format=ssid +/caps-man access-list +add action=reject allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-120..-80 ssid-regexp="" +add action=accept allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-79..120 ssid-regexp="" +/caps-man configuration +add channel.band=2ghz-b/g/n country=no_country_set datapath=xs-DataPath mode=\ + ap name=xs-2G rx-chains=0,1,2,3 security=xs-Sec ssid=vados tx-chains=\ + 0,1,2,3 +add channel.band=5ghz-a/n/ac country=no_country_set datapath=xs-DataPath \ + installation=any mode=ap name=xs-5G rx-chains=0,1,2,3 security=xs-Sec \ + ssid=vados5g tx-chains=0,1,2,3 +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX .frequency=2422,2442,2462 .reselect-interval=20m country=belarus \ + datapath=DataPath datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes hw-protection-mode=rts-cts installation=any name=2G \ + rx-chains=0,1,2,3 security=WPA2 ssid=vados tx-chains=0,1,2,3 +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX .frequency=5180,5200,5220,5240,5260 .reselect-interval=20m \ + .skip-dfs-channels=yes country=belarus datapath=DataPath \ + datapath.client-to-client-forwarding=yes .local-forwarding=yes \ + hw-protection-mode=rts-cts installation=any name=5G security=WPA2 ssid=\ + vados5g +/caps-man datapath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + xs-DataPath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + DataPath +/caps-man manager +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes require-peer-certificate=yes +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=BridgeLAN +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=g,gn,b \ + master-configuration=2G name-format=prefix-identity name-prefix=2G +add action=create-dynamic-enabled hw-supported-modes=an,ac,a \ + master-configuration=5G name-format=prefix-identity name-prefix=5G +add action=create-dynamic-enabled disabled=yes hw-supported-modes=ac,an,a \ + master-configuration=2G name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled disabled=yes hw-supported-modes=an \ + master-configuration=5G name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set crl-store=system +/container config +set layer-dir=/sata1/docker/layers memory-high=200.0MiB memory-max=4096.0MiB \ + registry-url=https://registry-1.docker.io tmpdir=/sata1/tmp username=\ + amsternl +/container envs +add key=AWG_CONFIG list=wg2awg-env value=/etc/wg2awg/wg2awg.conf +add key=AWG_LISTEN list=wg2awg-env value=:44044 +add key=AWG_MODE list=wg2awg-env value=client +add key=AWG_REMOTE list=wg2awg-env value=109.107.177.79 +/container mounts +add dst=/etc/wg2awg/wg2awg.conf list=wg2awg-env mode=ro src=\ + /sata1/mounts/wg2awg/wg2awg.conf +/ip smb +set enabled=no +/interface bridge port +add bridge=BridgeLAN interface=*136 +add bridge=BridgeLAN interface=*137 +add bridge=bridge1 interface=ether1 +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface list member +add interface=ether1 list=WAN +add interface=BridgeLAN list=LAN +/interface wifi cap +set discovery-interfaces=*DF +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 comment=\ + "Peer for MikroMaster connection" endpoint-address=10.30.30.81 \ + endpoint-port=33033 interface=MASTER name=MASTER persistent-keepalive=10s \ + public-key="zuRsO+dL/j6awaBWZ/NgnHR+bCNUjRWbaHFpdzkNnw4=" +/ip address +add address=10.30.30.10/24 interface=ether1 network=10.30.30.0 +add address=10.10.0.2 interface=MASTER network=10.10.0.0 +/ip dhcp-client +add disabled=yes interface=ether1 name=client1 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set disabled=yes interface=*3 lease-script=\ + lease-script lease-time=10m name=nucDHCP server-address=10.30.30.10 +/ip dns +set allow-remote-requests=yes doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=10.30.30.33,109.107.177.79 \ + verify-doh-cert=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip route +add check-gateway=none disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + 10.30.30.81 routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set reverse-proxy disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api-ssl disabled=yes +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=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=*3 type=external +add interface=*B5 type=internal +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/special-login +add port=serial0 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +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 +/system scheduler +add comment="Every Day Set Global Environment Variables" disabled=yes 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" disabled=yes 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" disabled=yes 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="Telegram Chat Bot" disabled=yes interval=30s name=mod/AM-TG-Bot \ + on-event="/system/script/run mod/AM-TG-Bot;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + disabled=yes interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-06-25 start-time=03:41:27 +/tool e-mail +set certificate-verification=no from=MikroNUC port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260703/20260703070001-Diff-Config.rsc b/MikroNUC/history/20260703/20260703070001-Diff-Config.rsc new file mode 100644 index 0000000..1862c8e --- /dev/null +++ b/MikroNUC/history/20260703/20260703070001-Diff-Config.rsc @@ -0,0 +1,37 @@ +5055d5054 +< \n:local Name wg2awg;\ +5057c5056 +< \n:local WorkDir (\$WorkDisk . \"/\" . \$Name);\ +--- +> \n:local Name wg2awg;\ +5084,5087d5082 +< \n\ +< \n/interface/veth/add name=\$Vetch address=\$VetchAddr gateway=\$VetchGate\ +< ;\ +< \n\ +5118,5121d5112 +< \n:log warning (\"Remove WorkDir: \" . \$WorkDir . \"...\");\ +< \n/file remove [find name=\$WorkDir];\ +< \n:log warning (\"Add WorkDir: \" . \$WorkDir . \"...\");\ +< \n/file add type=directory name=\$WorkDir;\ +5198,5207c5189,5197 +< \n#:do {\ +< \n:log warning (\"Container add width: file=\" . \$FetchDir . \$FetchFile \ +< . \", interface=\" . \$Vetch . \", hostname=\" . \$Name . \", mountlists=\ +< \" . \$Env . \", envlist=\" . \$Env . \", root-dir=\" . \$RootDir . \", wo\ +< rkdir=\" . \$WorkDir . \", name=\" . \$Name . \", logging=yes, start-on-bo\ +< ot=yes\");\ +< \n/container/add file=(\$FetchDir . \$FetchFile) interface=\$Vetch hostnam\ +< e=\$Name mountlists=\$Env envlist=\$Env root-dir=\$RootDir workdir=\$WorkD\ +< ir name=\$Name logging=yes start-on-boot=yes;\ +< \n#} on-error={}\ +--- +> \n:do {\ +> \n:log warning (\"Container add width: hostname=\" . \$Name . \", mountlis\ +> ts=\" . \$Env . \", file=\" . \$FetchDir . \$FetchFile . \", envlist=\" .\ +> \_\$Env . \", root-dir=\" . \$RootDir . \", logging=yes, start-on-boot=yes\ +> \");\ +> \n/container/add hostname=\$Name mountlists=\$Env file=(\$FetchDir . \$Fet\ +> chFile) interface=\$Vetch envlist=\$Env root-dir=\$RootDir logging=yes sta\ +> rt-on-boot=yes;\ +> \n} on-error={}\ -- 2.52.0