From 7c61b3e29dd0d421590a07829e399119768d733f Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 4 Jun 2026 04:00:04 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jun 04 04:00:04. --- .../20260604/20260604040002-Binary.backup | Bin 0 -> 380167 bytes MikroNUC/20260604/20260604040002-Config.rsc | 4790 +++++++++++++++++ .../20260604/20260604040002-Diff-Config.rsc | 4 + 3 files changed, 4794 insertions(+) create mode 100644 MikroNUC/20260604/20260604040002-Binary.backup create mode 100644 MikroNUC/20260604/20260604040002-Config.rsc create mode 100644 MikroNUC/history/20260604/20260604040002-Diff-Config.rsc diff --git a/MikroNUC/20260604/20260604040002-Binary.backup b/MikroNUC/20260604/20260604040002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..38b6924e75edde06e63449d639814d62ea1fc34e GIT binary patch literal 380167 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%0AF`rwy!!=Ws+$#6Z&h&!A;nIjEcjo+pT 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�M2wHu#^RX+mzGKd5c z;<&L?5+$P$Z75G1qoD)(ZXIwTs^uB6uAy;%(FadR`fXZ|e?_67mrW)^S`8EWx7a+C z^%iXcXYdOHOv04$njEI5R5oEF?Mtr!}5&4}!R8W?n(>!`6*Nx9z_P(|QNnyIi8e;EiZB<;o4h(RZQp{=HlcSrz! z!IJoTj`SH_uXqNG&lX{_K^~wic#uM}FILH2agiY{atcZ! zc!3@$M!7XH*4ODbe7_T3V$=lD&g=J7bKC|t!C*@&tIKsN3|@KJ8g+~>5zREYk;o>! zH%sw}V2u>pGoMF_bJ&A91()4y*i*%i65HB0sgzpNxG|j230%OcpJ3m}WCO%#;vQn1IE(Tuyd@Gw4*34R5FC5T%;U-_KH^slRh-7!3P5jPV#H-HLU`;m6-u;c$gm4h8i5maXH7q9UI=6!rE=( z(#GKw+!$eaC8aju1WtuL%Hi_mlYT-L@<%md3dk@(Z*3>fdV*f{pL~ zqxmlQf;ysrdNBSA(9T3hLM()UT%(grJvnD3EG^Amo3)$|WS-fNT14C186RDRzP(7D z=p*Y%k^c=Tv)vI&A}W@wjm~2kM&Ix zHT*si)b&im?zt%~P!dEUirZT2=$8uF=@phEGSdnG6WN(~4LAl*h>0Y223?NeYc7%g zTTNesHK={Md;=UsTChkxt=&W;a|^E|?Y}iUE}XAPZK+==-8aQMa+w8svlu;XW3?q~ zA{C>(_Jz+dHzF=JB$ByqV_7=Hx^7YZs^kcwX2Z0`L^Y~GGAW{b+Ed|XdkhRT7&7FD zZcp~>P*AMR<1|eb$556f1BG`0>GckClTnHz5)h+XCkN1e#aX)k!I@x@2r=hIS-14KBGSIEU> zF`$+)$RZgC(5I!Gw~c7S_t$a&@Xw83W7m^eVlCz|9M{uH^TTI{zEg1zI5)%|Q~=Z} zu6F=MzG+++C-`DKI+U>y;ZuMtgt{7%p&u6t)t%H9;=N*Fjal@+jS0Nwc_mCMDNdL_ z69i&0_(kuc4~_4kL&Vt?GQP#Ayd>!I4{$7AR3%kDmHT^tsRf8A;}`@;$!KbrC6`=SU1aRlfsI z9z4;jr&Z66^9+Xj2P9TKzwN$>LS3czNF7vLu4dn(0~DLK+;lK?{;`NY3vQO616OU!I99 zrh;SRWvs7rZ}w5xyTq$Sj^Mu*j~a2JCErVa6I~xUKTRP6;+z@9P6q72_rN(9+0Ko6 zi)t`$iuQni2I9*Xg18P;C#hT}E+{HcGU?0M-wCsd#A&~vnS;*eY9~P|;9rf~^PA)% z6OP2u5h_mmf+IhGC~CJqw&7M5+gKmrA*uoPQ5xIBFK$>vL(gfljwrOh;bBV7%Dpk( z75!9Dr#YFfUzuTIT(uXoPi*3!QbQ2#0SmG0-18CyEK;P=zoMT55+zfTsy!41Cr?mG zEuWBD^Ra)N!O~}x6K)w=+9uHTQ~*>&&Ugw9l1g`VYeZo&7=JZ^0+9IrFYu^zDFlNY z%QL7L@38bxhM*y+8e_F!7hy$P@@!DwDx??x6g>b4D^ZXCXJwKE)EOrJ=Jb-s%e=9a z3#=C30WEV(qSeH@@jOm=G3qCCFp%NAPa)_sc{Gb3D=kvs+@#KeU6l~%TSs8d2V9x; z92vN${lG1iSy#peZ$i@Bt;>MWxe{6T9AaGKjI2>bCcg45Rgpm|Ils2ct2qUhR%Ku< z>u>ztFHj>BeMlUgS#(#~nns2h!frNau$3h62p|biAmSR58nJLI$QO%32p>hgoC|d< z`VP@ZE(x??!W^F~*iWL>r+-6}NBz6H)IJwe`AD&4@L@qD;^LYcJmX}3!0WsaiCFZF z1c5@-+Gw1*tj8-}nG0TZ(pnmGpMEjR69h+V#Ro#913?C}xV)qXGFM+=HHU!U!i3xM zaZm@3j#mvAf?f-55fWmsQ}WASww-CG`V5Fvu4b!oFSdEq{3S^Z`k9Wc?iNENxB=N5 zkwZafcLpN*6=QzE0BLko^G^-1w008=e>wkY**c{jDh5pIaBEz^N1p{9OHO57R(w78 z-e6aGPU}1BJ~E-u$Vq#wxclLP)bW6SVRJlK6!Ziak?FP>m86m|tj0~It)Hrx z{0=3XomvCkA4tv-as_b(MyeTzsEgz0NOq>PFonF>{G)sH_qK0OyE3Rs$CXra{Z1PE za&l!{h6))1$P-F6Cd+fxvr2#|~pF z_83nEd|etd`?*b?0I z)<@jOs+KY~UwO8z%( zZCCkbciTFM!X8TCJnAIqB+s9;(U!6hY+Z2d0x349vDtPmWrW|1G6`+NemPJGMiDi22@MHp{6jbyeo6EFWd2)Hz-iLtE&EgVC`!`(6 zvg)<(7IjHAJYt6iDS^$I0p1%)iLT=76fz==``HH+e32yxs=*7mPuKOoRNDIOJ#hwP z-QdNUc60kN*My2e8?E^AMq6%fx*08*<=V|s`H2yR`u&drnO2o`rp>7DCC6t6W(Sv> z$8(NI4opm+%%mKqVZ}%9w2=D29!omQdpWpgVx$Lx8X)@zntkxs()7uWP@ztpS;u=Q zpM+j5I%TlWOqy9(0*&85M9le0mw8>f9jN&0fp;*CAxcZID5V5HqeKp5YxyNl7Y@Lc zn9{JUeP2PS%0De&4OY)C?fZ$FFw@}n~5dS2d(zyAKAGlUbV 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\"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/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.06.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="#\ + \r\ + \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\";\r\ + \n#\r\ + \n#root.mnuc.backuper\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n#:local FetchFile AM-DOHCert.rsc\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\r\ + \n:global MkDir;\r\ + \n\r\ + \n:local FetchFile Binary.backup\r\ + \n:local localDir \"[usb1]/scripts/\";\r\ + \n\r\ + \n\$MkDir \$localDir;\r\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \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" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/app settings +set auto-update=yes disk=sata1 lan-bridge=Bridge-LAN 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 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=Bridge-LAN +/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 builtin-trust-store=fetch crl-store=system +/container config +set layer-dir=/sata1 registry-url=https://reg.vados.ru tmpdir=/ramstorage \ + username=amster-dev +/container envs +add key=ENV list=carkeeperbot_envs value=/root/.ashrc +add key=PATH list=carkeeperbot_envs value=\ + /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +add key=PORT list=carkeeperbot_envs value="\${SSH_PORT}" +add key=SSH_PORT list=carkeeperbot_envs value=8222 +/container mounts +add dst=/app list=carkeeper_app src=/sata1/carkeeper/app +add dst=/configs list=carkeeper_configs src=/sata1/carkeeper/configs +add dst=/root/.ashrc list=carkeeper_configs/.profile src=\ + /sata1/carkeeper/configs/.profile +add dst=/etc/php82/php.ini list=carkeeper_configs/php.ini src=\ + /sata1/carkeeper/configs/php.ini +add dst=/etc/ssh/sshd_config list=carkeeper_configs/sshd_config src=\ + /sata1/carkeeper/configs/sshd_config +add dst=/scripts list=carkeeper_scripts src=/sata1/carkeeper/scripts +add dst=/var/sync list=carkeeper_sync src=/sata1/carkeeper/sync +add dst=/var/tmp list=carkeeper_tmp src=/sata1/carkeeper/tmp +/interface bridge port +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-DOC interface=veth1 +add bridge=Bridge-LAN interface=LAN +add bridge=Bridge-LAN interface=dynamic +/ipv6 settings +set disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=LAN internet-interface-list=LAN lan-interface-list=\ + LAN wan-interface-list=LAN +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.10.10.1/24 disabled=yes interface=Bridge-DOC network=\ + 10.10.10.0 +add address=172.18.20.5/30 disabled=yes interface=docker-xray-vless-veth \ + network=172.18.20.4 +/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=Bridge-LAN \ + 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.81 verify-doh-cert=yes +/ip firewall filter +add action=accept chain=input +add action=accept chain=output +add action=accept chain=forward comment="Comment of the rule" disabled=yes +/ip firewall mangle +# docker-xray-vless-veth not ready +add action=change-mss chain=forward new-mss=1360 out-interface=\ + docker-xray-vless-veth protocol=tcp tcp-flags=syn tcp-mss=1420-65535 +/ip firewall nat +# docker-xray-vless-veth not ready +add action=masquerade chain=srcnat out-interface=docker-xray-vless-veth +/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 disabled=no dst-address=0.0.0.0/0 gateway=10.30.30.81 routing-table=main +/ip service +set ftp disabled=yes +set www disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api disabled=yes +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-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both password-authentication=no \ + publickey-authentication-options=verify-required strong-crypto=yes +/ip upnp +set allow-disable-external-interface=yes enabled=yes +/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 +/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" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Telegram Chat Bot" 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." \ + 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-04 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 +/tool netwatch +add disabled=yes down-script=\ + ":local msg \"Host MikroYellow is DOWN\";\r\ + \n\$TGSendMessage \$msg;" host=10.30.30.86 http-codes="" interval=10s \ + test-script="" type=simple up-script=\ + ":global TGSendMessage;\r\ + \n\$TGSendMessage \"Host MikroYellow is UP\";" +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260604/20260604040002-Diff-Config.rsc b/MikroNUC/history/20260604/20260604040002-Diff-Config.rsc new file mode 100644 index 0000000..7906874 --- /dev/null +++ b/MikroNUC/history/20260604/20260604040002-Diff-Config.rsc @@ -0,0 +1,4 @@ +4778c4778 +< start-date=2026-06-04 start-time=03:41:27 +--- +> start-date=2026-05-28 start-time=03:41:27 -- 2.52.0