From 00d18b5dcdafd9bc0736403b1550d28ac1167085 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 31 Mar 2026 22:00:05 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Mar 31 22:00:04. --- MikroGig/tmp/Config.rsc | 0 MikroMaster/tmp/Config.rsc | 0 .../20260331/20260331220002-Binary.backup | Bin 0 -> 381664 bytes MikroNUC/20260331/20260331220002-Config.rsc | 4776 +++++++++++++++++ .../20260331/20260331220002-Diff-Config.rsc | 3 + 5 files changed, 4779 insertions(+) create mode 100644 MikroGig/tmp/Config.rsc create mode 100644 MikroMaster/tmp/Config.rsc create mode 100644 MikroNUC/20260331/20260331220002-Binary.backup create mode 100644 MikroNUC/20260331/20260331220002-Config.rsc create mode 100644 MikroNUC/history/20260331/20260331220002-Diff-Config.rsc diff --git a/MikroGig/tmp/Config.rsc b/MikroGig/tmp/Config.rsc new file mode 100644 index 0000000..e69de29 diff --git a/MikroMaster/tmp/Config.rsc b/MikroMaster/tmp/Config.rsc new file mode 100644 index 0000000..e69de29 diff --git a/MikroNUC/20260331/20260331220002-Binary.backup b/MikroNUC/20260331/20260331220002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..2810504efc60b20ef6a74ab587bb4dbc45b5a2a5 GIT binary patch literal 381664 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 Fn`Ri5qc;Em literal 0 HcmV?d00001 diff --git a/MikroNUC/20260331/20260331220002-Config.rsc b/MikroNUC/20260331/20260331220002-Config.rsc new file mode 100644 index 0000000..fa0b16a --- /dev/null +++ b/MikroNUC/20260331/20260331220002-Config.rsc @@ -0,0 +1,4776 @@ +# 2026-03-31 22:00:02 by RouterOS 7.22.1 +# system id = NmJcEM+8XAP +# +/caps-man channel +add band=2ghz-g/n extension-channel=disabled frequency=2422 name=2G-3 \ + reselect-interval=20m save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXX frequency=5660 name=5G-5660 \ + save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXXXXXX frequency=5160,5200,5280 \ + name=5G-5160-5280 reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5180 name=5G-36 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5200 name=5G-40 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5220 name=5G-44 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5240 name=5G-48 \ + reselect-interval=30m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2442 name=2G-7 \ + reselect-interval=20m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2462 name=2G-11 \ + reselect-interval=20m save-selected=yes +/interface bridge +add name=Bridge-DOC +add name=Bridge-LAN port-cost-mode=short +/interface ethernet +set [ find default-name=ether1 ] disable-running-check=no name=ether2 +/interface veth +add address=172.18.20.6/30 container-mac-address=00:00:00:00:00:00 dhcp=no \ + gateway=172.18.20.5 gateway6="" name=docker-xray-vless-veth +add address=10.10.10.10/24 container-mac-address=5C:26:FE:05:6F:12 dhcp=no \ + gateway=10.10.10.1 gateway6="" mac-address=5C:26:FE:05:6F:11 name=veth1 +/caps-man datapath +add bridge=Bridge-LAN client-to-client-forwarding=yes local-forwarding=yes \ + name=xs-DataPath +add bridge=Bridge-LAN client-to-client-forwarding=yes local-forwarding=yes \ + name=DataPath +/caps-man security +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=xs-Sec +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=WPA2 +/caps-man configuration +add channel.band=2ghz-b/g/n country=no_country_set datapath=xs-DataPath mode=\ + ap name=xs-2G rx-chains=0,1,2,3 security=xs-Sec ssid=vados tx-chains=\ + 0,1,2,3 +add channel.band=5ghz-a/n/ac country=no_country_set datapath=xs-DataPath \ + installation=any mode=ap name=xs-5G rx-chains=0,1,2,3 security=xs-Sec \ + ssid=vados5g tx-chains=0,1,2,3 +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX .frequency=2422,2442,2462 .reselect-interval=20m country=belarus \ + datapath=DataPath datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes hw-protection-mode=rts-cts installation=any name=2G \ + rx-chains=0,1,2,3 security=WPA2 ssid=vados tx-chains=0,1,2,3 +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX .frequency=5180,5200,5220,5240,5260 .reselect-interval=20m \ + .skip-dfs-channels=yes country=belarus datapath=DataPath \ + datapath.client-to-client-forwarding=yes .local-forwarding=yes \ + hw-protection-mode=rts-cts installation=any name=5G security=WPA2 ssid=\ + vados5g +/disk +add slot=tmpfs tmpfs-max-size=715827882 type=tmpfs +/interface list +add include=dynamic,static name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroMIC +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=P1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=test owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#:local ScriptName [ :jobname ];\r\ + \n:local expSrc;\r\ + \n:local FileName;\r\ + \n:local FilePath;\r\ + \n:local DirPath \"tmpfs/\";\r\ + \n:global WaitForFile;\r\ + \n:global IfThenElse;\r\ + \n\r\ + \n:foreach Script in=([ /system/script find where name~\"Amster-GlobalConf\ + *\" ]) do={\r\ + \n:local ScriptVal [ /system/script/get \$Script ];\r\ + \n\r\ + \n:local expName [ (\$ScriptVal->\"name\") ];\r\ + \n#[/system/script get \$expScript name];\r\ + \n:delay 2s;\r\ + \n\r\ + \n:set expSrc [/system/script print where name=\$expName];\r\ + \n/system/script print where name=\$expName;\r\ + \n#[:put [/system/script get \$expScript source]];\r\ + \n:put [\$expSrc];\r\ + \n:delay 2s;\r\ + \n:set FileName \$expName;\r\ + \n:set FilePath (\$DirPath . \$FileName);\r\ + \n\r\ + \n#:log warning \"\\n----------------------\\n\\\$expSrc = \$expSrc\\n____\ + ______________________________\";\r\ + \n:log info \"\\n\\\$FileName = '\$FileName'\";\r\ + \n:log info \"\\n\\\$FilePath = \$FilePath\";\r\ + \n#:log warning {/system/script/get source=[/system/script/get \$expScript\ + \_source];};\r\ + \n\r\ + \n#\$[/system script get [/system script find name=\"\$FileName\"] source]\ + \r\ + \n\r\ + \n#:local gettingScript \"\$FileName\";\r\ + \n#:execute script=\"[[:parse \\\"[:parse { :put (\"\$[/system script get \ + [/system script find name=\$FileName] source]\"); } \\\"]]\"; \\\r\ + \n\r\ + \n#:execute script={:put \"[:parse \\\"[:parse [/system/script get [/syste\ + m/script find name=\$gettingScript] source];\\\"]]\";} \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n:do {\r\ + \n:local fName (\$FilePath . \".rsc\");\r\ + \n#:delay 3s;\r\ + \n#/file add name=\$fName;\r\ + \n:put [:tostr [\$expSrc]];\r\ + \n/file set \$fName contents=[:put [\$expSrc]];\r\ + \n:delay 3s;\r\ + \n\$WaitForFile \$fName;\r\ + \n(\$FilePath . \".rsc\");\r\ + \n#:delay 2s;\r\ + \n\r\ + \n} on-error={\r\ + \n:log error \"\\nERROR \\\$FilePath = \$FilePath\";\r\ + \n}\r\ + \n#\$WaitForFile (\$FilePath . \".rsc\");\r\ + \n#:execute script={ :put [/system/script get [:put \$FileName] source]; }\ + ;\r\ + \n#/system/script export \$Sscript file=\$FilePath;\r\ + \n#/system/script/export [:put [/system/script/get \$expScript source]] fi\ + le=\$FilePath;\r\ + \n#:execute script={ :put [/system/script/get \$expScript source]; } \\\r\ + \n\r\ + \n#:log warning \"\\n\\\$expScript = \$expScript\";\r\ + \n# \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n#script={:put [/system/script/get \$FileName source];} file=(\$FilePath\ + \_. \".rsc\\00\");\r\ + \n#/system script export \$src file=(\$FilePath . \$FileName);\r\ + \n}\r\ + \n\r\ + \n:log warning \"\\nComplete!\";\r\ + \n\r\ + \n # :execute script={ :put [ /system/script/get Amster-GlobalConfig sou\ + rce ]; } \\\r\ + \n # file=(\$FilePath . \".conf\\00\");\r\ + \n # \$WaitForFile (\$FilePath . \".conf\");\r\ + \n # :onerror Err {\r\ + \n # /tool/fetch upload=yes url=(\$BackupUploadUrl . \"/\" . \$FileName\ + \_. \".conf\") \\\r\ + \n # user=\$BackupUploadUser password=\$BackupUploadPass src-path=(\ + \$FilePath . \".conf\");\r\ + \n # :set ConfigFile [ /file/get (\$FilePath . \".conf\") ];\r\ + \n # :set (\$ConfigFile->\"name\") (\$FileName . \".conf\");\r\ + \n " +add dont-require-permissions=no name=test1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n#:local runningVer [:find [/system/resource/get version] \"(\"];\r\ + \n\r\ + \n:local runningChannel;\r\ + \n:local runningVersion;\r\ + \n:local ParseCustom;\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n \r\ + \n:global runningChannel [\$ParseCustom [/system/resource/get version] \"(\ + \" \")\" 1];\r\ + \n:log warning [\$runningChannel];\r\ + \n:set runningVersion [\$ParseCustom [/system/resource/get version] \" \" \ + \")\" 2];\r\ + \n:log warning [\$runningVersion];\r\ + \n\r\ + \n\r\ + \n\r\ + \n# :if ([:len \$open] = 0) do={\r\ + \n# :log error \"\$SMP Could not extract installed OS channel from vers\ + ion string: `\$runningOsAndChannel`.\";\r\ + \n# :error \"\$SMP error, check logs\";\r\ + \n# }\r\ + \n# :local rest [:pick \$runningOsAndChannel (\$open+1) [:len \$runningOs\ + AndChannel]];\r\ + \n# :local close [:find \$rest \")\"];\r\ + \n# :local channel [:pick \$rest 0 \$close];\r\ + \n# :return \$channel;\r\ + \n#}" +add dont-require-permissions=no name=01-Amster-Init-Script owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# Amster Initial Script\r\ + \n#\r\ + \n#:global GlobalEnvRemove true; /system/script {run Amster-GlobalEnvRemov\ + e; };\r\ + \n#:delay 1s;\r\ + \n:#global ReloadGlobal true; \r\ + \n\r\ + \n:global AmScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global defOwner \"vados\";\r\ + \n:global AmFirstRun;\r\ + \n\r\ + \n:set AmFirstRun do={\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n #:global ParseKeyValueStore;\r\ + \n #:local AmUpdCRLF true;\r\ + \n #:local IfThenElse;\r\ + \n #:set IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1\ + \_] = true) do={:return \$2}; :return \$3}\r\ + \n #/certificate/settings/set builtin-trust-store=fetch;\r\ + \n #/tool/fetch \"\$scriptsUrl/certs/Root-YE.pem\" dst-path=\"root-ye.p\ + em\";\r\ + \n #/certificate/import file-name=\"root-ye.pem\" passphrase=\"\";\r\ + \n # For basic verification we rename the certificate and print it by f\ + ingerprint. Make sure exactly this one certificate (\"Root-YE\") is shown.\ + \r\ + \n #/certificate/set name=\"Root-YE\" [ find where common-name=\"Root Y\ + E\" ];\r\ + \n #/certificate/print proplist=name,fingerprint where fingerprint=\"e1\ + 4ffcad5b0025731006caa43a121a22d8e9700f4fb9cf852f02a708aa5d5666\";\r\ + \n #:log info \"\\nAmScriptsUrl = \$AmScriptsUrl\";\r\ + \n :local Scripts {\r\ + \n \"Amster-GlobalConfig\"\r\ + \n \"Amster-GlobalFunc\";\r\ + \n# \"Amster-SFTP-backup\"\r\ + \n# \"Amster-BkpEmail-and-upd\";\r\ + \n };\r\ + \n# /system/script/set owner=(\$ScriptVal->\"name\") \\\r\ + \n# source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRLF \$S\ + ourceNew ] \$Script;\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n /system/script { run Amster-GlobalConfig; run Amster-GlobalFunc; }\r\ + \n}\r\ + \n:global AmUpdRun;\r\ + \n:set AmUpdRun do={\r\ + \n #:local UpdScript [ :tostr \$1 ];\r\ + \n #:global ParseKeyValueStore;\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n :local Scripts {\r\ + \n# \"Amster-GlobalConfig\"\r\ + \n# \"Amster-GlobalFunc\"\r\ + \n# \"Amster-GlobalRemove\"\r\ + \n \"Amster-backup-SFTP\"\r\ + \n \"Amster-SFTP-backup\"\r\ + \n \"Amster-BkpEmail-and-upd\"\r\ + \n \"Amster-TG-Bot\"\r\ + \n \"Amster-TG-Notification\";\r\ + \n };\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"updating \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n# /system/script/add name=\$Script owner=\$AmOwner source=([ /tool/fe\ + tch check-certificate=yes-without-crl (\"\$AmScriptsUrl\" . \$Script . \".\ + rsc\") output=user as-value ]->\"data\"); };\r\ + \n}\r\ + \n\r\ + \n\$AmFirstRun;\r\ + \n#\$AmUpdRun;\r\ + \n\r\ + \n#\$setUpdExist;\r\ + \n#:global setUpdExist;\r\ + \n#:global ParseKeyValueStore;\r\ + \n#:set setUpdExist do={\r\ + \n#:do {\r\ + \n#:global ParseKeyValueStore;\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\\r\?\\n#comment=*\" ] do={\r\ + \n# :local ScriptVal [ /system/script/get \$Script ];\r\ + \n# :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"#comment\"\ + ) ];\r\ + \n# :local scriptName (\$ScriptVal->\"name\");\r\ + \n#:log warning (\"\\n\\\$scriptName = \". \$scriptName);\r\ + \n#: log warning (\"\\n\\\$ScriptInfo = \". \$ScriptInfo);\r\ + \n# }\r\ + \n#} on-error={}\r\ + \n#}\r\ + \n#\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run\ + -count;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;\r\ + \n#;(evl / (evl /docommand=;(evl / (evl /foreachcounter=\$Script;do=;(evl \ + / (evl /localname=\$ScriptVal;value=(evl (evl /system/script/getnumber=\$S\ + cript))) (evl /localname=\$ScriptInfo;value=(evl (<%% \$ParseKeyValueStore\ + \_(> \$ParseKeyValueStore);(-> \$ScriptVal comment)))) (evl /localname=\$s\ + criptName) (evl /setname=\$scriptName;value=(-> #\$ScriptVal name)) (evl /\ + log/errormessage=(. \r\ + \n# \$ ScriptInfo = \$ScriptInfo)));in=(evl (evl /system/script/findwhere\ + =\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run-c\ + ount;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;(~ \$so\ + urce (. ^#!rsc by Vados \r\ + \n# \? \r\ + \n#));5))));on-error=;(evl /)))\r\ + \n" +add dont-require-permissions=no name="Download cAP's Packages" owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# +------------------------------+\r\ + \n# | |\r\ + \n# | Mikrotik RouterOS Scripts |\r\ + \n# | _Download cAP's Packages_ |\r\ + \n# | |\r\ + \n# +------------------------------+\r\ + \n# https://github.com/sebastian13/mikrotik-routeros-scripts\r\ + \n#\r\ + \n\r\ + \n# Set a directory path providing the required space\r\ + \n# Add a microSD card https://wiki.mikrotik.com/wiki/Manual:System/Disks\ + \r\ + \n# or setup a RAM-Disk via '/disk/add type=tmpfs tmpfs-max-size=20M slot=\ + ram'\r\ + \n:local dir \"/tmpfs/capsman-packages\";\r\ + \n\r\ + \n\r\ + \n# Set Package Path if required, set policy to none if using 'upgrade-cap\ + s' script\r\ + \n/interface/wifi/capsman/set package-path=\$dir upgrade-policy=none;\r\ + \n/caps-man/manager/set package-path=\$dir upgrade-policy=none;\r\ + \n#require-same-version;\r\ + \n\r\ + \n:local installed [/system package get value-name=version [find where nam\ + e=\"routeros\"]]\r\ + \n\r\ + \n# Delete old downloads\r\ + \n# /file/remove [ find type=package name~\"capsman*\" ]\r\ + \n\r\ + \n# Starting from RouterOS version 7.13, drivers for older wireless and 60\ + GHz interfaces are\r\ + \n# part of the separate \"wireless\" package. The existing \"wifiwave2\" \ + package has been divided\r\ + \n# into distinct packages: \"wifi-qcom\" and \"wifi-qcom-ac\".\r\ + \n# RouterOS >=7.12 is required to upgrade to 7.13.\r\ + \n# https://forum.mikrotik.com/viewtopic.php\?t=202423\r\ + \n\r\ + \n:foreach architecture in={ \"arm\";\r\ + \n# \"arm64\";\r\ + \n \"x86_64\";\r\ + \n \"mipsbe\"} do={\r\ + \n :foreach package in={ \"routeros\";\r\ + \n# \"wifi-qcom-ac\";\r\ + \n# \"wifi-qcom\";\r\ + \n \"container\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } 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 :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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.05.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 WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global 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 upgrade-policy=require-same-version +/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 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-05-07 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/20260331/20260331220002-Diff-Config.rsc b/MikroNUC/history/20260331/20260331220002-Diff-Config.rsc new file mode 100644 index 0000000..84e1ac0 --- /dev/null +++ b/MikroNUC/history/20260331/20260331220002-Diff-Config.rsc @@ -0,0 +1,3 @@ +4726a4727,4728 +> /system gps +> set set-system-time=yes -- 2.52.0