From 72f09d4389ac32530961f7bc00277ca2cbc32354 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 28 Jun 2026 00:00:04 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jun 28 00:00:04. --- .../20260628/20260628000002-Binary.backup | Bin 0 -> 364758 bytes MikroNUC/20260628/20260628000002-Config.rsc | 4843 +++++++++++++++++ .../20260628/20260628000002-Diff-Config.rsc | 43 + 3 files changed, 4886 insertions(+) create mode 100644 MikroNUC/20260628/20260628000002-Binary.backup create mode 100644 MikroNUC/20260628/20260628000002-Config.rsc create mode 100644 MikroNUC/history/20260628/20260628000002-Diff-Config.rsc diff --git a/MikroNUC/20260628/20260628000002-Binary.backup b/MikroNUC/20260628/20260628000002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..808ab36c696eece553c3931500bf26f11ab0bd90 GIT binary patch literal 364758 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

U4SNO1D2UKBoTgoU@zCn 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 literal 0 HcmV?d00001 diff --git a/MikroNUC/20260628/20260628000002-Config.rsc b/MikroNUC/20260628/20260628000002-Config.rsc new file mode 100644 index 0000000..5fd6db5 --- /dev/null +++ b/MikroNUC/20260628/20260628000002-Config.rsc @@ -0,0 +1,4843 @@ +# 2026-06-28 00:00:03 by RouterOS 7.23.1 +# system id = NmJcEM+8XAP +# +/caps-man channel +add band=2ghz-g/n extension-channel=disabled frequency=2422 name=2G-3 \ + reselect-interval=20m save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXX frequency=5660 name=5G-5660 \ + save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXXXXXX frequency=5160,5200,5280 \ + name=5G-5160-5280 reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5180 name=5G-36 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5200 name=5G-40 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5220 name=5G-44 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5240 name=5G-48 \ + reselect-interval=30m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2442 name=2G-7 \ + reselect-interval=20m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2462 name=2G-11 \ + reselect-interval=20m save-selected=yes +/interface bridge +add name=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.2/30 container-mac-address=44:F2:90:E8:88:95 dhcp=no \ + gateway=172.18.20.1 gateway6="" mac-address=44:F2:90:E8:88:94 name=\ + docker-awg-veth +/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 +/container +add hostname=amnezia interface=docker-awg-veth layer-dir=/sata1 logging=yes \ + mountlists=awg_conf name=awg-mikrotik-amd64:latest remote-image=\ + catesin/awg-mikrotik-amd64:latest root-dir=/amnezia start-on-boot=yes +/disk +add slot=ram tmpfs-max-size=100000000 type=tmpfs +/interface list +add include=dynamic,static name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroMIC +/iot wiliot servers +set *1 address=mqtt.us-east-2.prod.wiliot.cloud name="Wiliot US East" +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=P1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/routing table +add disabled=no fib name=r_to_vpn +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=test owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#:local ScriptName [ :jobname ];\r\ + \n:local expSrc;\r\ + \n:local FileName;\r\ + \n:local FilePath;\r\ + \n:local DirPath \"tmpfs/\";\r\ + \n:global WaitForFile;\r\ + \n:global IfThenElse;\r\ + \n\r\ + \n:foreach Script in=([ /system/script find where name~\"Amster-GlobalConf\ + *\" ]) do={\r\ + \n:local ScriptVal [ /system/script/get \$Script ];\r\ + \n\r\ + \n:local expName [ (\$ScriptVal->\"name\") ];\r\ + \n#[/system/script get \$expScript name];\r\ + \n:delay 2s;\r\ + \n\r\ + \n:set expSrc [/system/script print where name=\$expName];\r\ + \n/system/script print where name=\$expName;\r\ + \n#[:put [/system/script get \$expScript source]];\r\ + \n:put [\$expSrc];\r\ + \n:delay 2s;\r\ + \n:set FileName \$expName;\r\ + \n:set FilePath (\$DirPath . \$FileName);\r\ + \n\r\ + \n#:log warning \"\\n----------------------\\n\\\$expSrc = \$expSrc\\n____\ + ______________________________\";\r\ + \n:log info \"\\n\\\$FileName = '\$FileName'\";\r\ + \n:log info \"\\n\\\$FilePath = \$FilePath\";\r\ + \n#:log warning {/system/script/get source=[/system/script/get \$expScript\ + \_source];};\r\ + \n\r\ + \n#\$[/system script get [/system script find name=\"\$FileName\"] source]\ + \r\ + \n\r\ + \n#:local gettingScript \"\$FileName\";\r\ + \n#:execute script=\"[[:parse \\\"[:parse { :put (\"\$[/system script get \ + [/system script find name=\$FileName] source]\"); } \\\"]]\"; \\\r\ + \n\r\ + \n#:execute script={:put \"[:parse \\\"[:parse [/system/script get [/syste\ + m/script find name=\$gettingScript] source];\\\"]]\";} \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n:do {\r\ + \n:local fName (\$FilePath . \".rsc\");\r\ + \n#:delay 3s;\r\ + \n#/file add name=\$fName;\r\ + \n:put [:tostr [\$expSrc]];\r\ + \n/file set \$fName contents=[:put [\$expSrc]];\r\ + \n:delay 3s;\r\ + \n\$WaitForFile \$fName;\r\ + \n(\$FilePath . \".rsc\");\r\ + \n#:delay 2s;\r\ + \n\r\ + \n} on-error={\r\ + \n:log error \"\\nERROR \\\$FilePath = \$FilePath\";\r\ + \n}\r\ + \n#\$WaitForFile (\$FilePath . \".rsc\");\r\ + \n#:execute script={ :put [/system/script get [:put \$FileName] source]; }\ + ;\r\ + \n#/system/script export \$Sscript file=\$FilePath;\r\ + \n#/system/script/export [:put [/system/script/get \$expScript source]] fi\ + le=\$FilePath;\r\ + \n#:execute script={ :put [/system/script/get \$expScript source]; } \\\r\ + \n\r\ + \n#:log warning \"\\n\\\$expScript = \$expScript\";\r\ + \n# \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n#script={:put [/system/script/get \$FileName source];} file=(\$FilePath\ + \_. \".rsc\\00\");\r\ + \n#/system script export \$src file=(\$FilePath . \$FileName);\r\ + \n}\r\ + \n\r\ + \n:log warning \"\\nComplete!\";\r\ + \n\r\ + \n # :execute script={ :put [ /system/script/get Amster-GlobalConfig sou\ + rce ]; } \\\r\ + \n # file=(\$FilePath . \".conf\\00\");\r\ + \n # \$WaitForFile (\$FilePath . \".conf\");\r\ + \n # :onerror Err {\r\ + \n # /tool/fetch upload=yes url=(\$BackupUploadUrl . \"/\" . \$FileName\ + \_. \".conf\") \\\r\ + \n # user=\$BackupUploadUser password=\$BackupUploadPass src-path=(\ + \$FilePath . \".conf\");\r\ + \n # :set ConfigFile [ /file/get (\$FilePath . \".conf\") ];\r\ + \n # :set (\$ConfigFile->\"name\") (\$FileName . \".conf\");\r\ + \n " +add dont-require-permissions=no name=test1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n#:local runningVer [:find [/system/resource/get version] \"(\"];\r\ + \n\r\ + \n:local runningChannel;\r\ + \n:local runningVersion;\r\ + \n:local ParseCustom;\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n \r\ + \n:global runningChannel [\$ParseCustom [/system/resource/get version] \"(\ + \" \")\" 1];\r\ + \n:log warning [\$runningChannel];\r\ + \n:set runningVersion [\$ParseCustom [/system/resource/get version] \" \" \ + \")\" 2];\r\ + \n:log warning [\$runningVersion];\r\ + \n\r\ + \n\r\ + \n\r\ + \n# :if ([:len \$open] = 0) do={\r\ + \n# :log error \"\$SMP Could not extract installed OS channel from vers\ + ion string: `\$runningOsAndChannel`.\";\r\ + \n# :error \"\$SMP error, check logs\";\r\ + \n# }\r\ + \n# :local rest [:pick \$runningOsAndChannel (\$open+1) [:len \$runningOs\ + AndChannel]];\r\ + \n# :local close [:find \$rest \")\"];\r\ + \n# :local channel [:pick \$rest 0 \$close];\r\ + \n# :return \$channel;\r\ + \n#}" +add dont-require-permissions=no name=01-Amster-Init-Script owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# Amster Initial Script\r\ + \n#\r\ + \n#:global GlobalEnvRemove true; /system/script {run Amster-GlobalEnvRemov\ + e; };\r\ + \n#:delay 1s;\r\ + \n:#global ReloadGlobal true; \r\ + \n\r\ + \n:global AmScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global defOwner \"vados\";\r\ + \n:global AmFirstRun;\r\ + \n\r\ + \n:set AmFirstRun do={\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n #:global ParseKeyValueStore;\r\ + \n #:local AmUpdCRLF true;\r\ + \n #:local IfThenElse;\r\ + \n #:set IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1\ + \_] = true) do={:return \$2}; :return \$3}\r\ + \n #/certificate/settings/set builtin-trust-store=fetch;\r\ + \n #/tool/fetch \"\$scriptsUrl/certs/Root-YE.pem\" dst-path=\"root-ye.p\ + em\";\r\ + \n #/certificate/import file-name=\"root-ye.pem\" passphrase=\"\";\r\ + \n # For basic verification we rename the certificate and print it by f\ + ingerprint. Make sure exactly this one certificate (\"Root-YE\") is shown.\ + \r\ + \n #/certificate/set name=\"Root-YE\" [ find where common-name=\"Root Y\ + E\" ];\r\ + \n #/certificate/print proplist=name,fingerprint where fingerprint=\"e1\ + 4ffcad5b0025731006caa43a121a22d8e9700f4fb9cf852f02a708aa5d5666\";\r\ + \n #:log info \"\\nAmScriptsUrl = \$AmScriptsUrl\";\r\ + \n :local Scripts {\r\ + \n \"Amster-GlobalConfig\"\r\ + \n \"Amster-GlobalFunc\";\r\ + \n# \"Amster-SFTP-backup\"\r\ + \n# \"Amster-BkpEmail-and-upd\";\r\ + \n };\r\ + \n# /system/script/set owner=(\$ScriptVal->\"name\") \\\r\ + \n# source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRLF \$S\ + ourceNew ] \$Script;\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n /system/script { run Amster-GlobalConfig; run Amster-GlobalFunc; }\r\ + \n}\r\ + \n:global AmUpdRun;\r\ + \n:set AmUpdRun do={\r\ + \n #:local UpdScript [ :tostr \$1 ];\r\ + \n #:global ParseKeyValueStore;\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n :local Scripts {\r\ + \n# \"Amster-GlobalConfig\"\r\ + \n# \"Amster-GlobalFunc\"\r\ + \n# \"Amster-GlobalRemove\"\r\ + \n \"Amster-backup-SFTP\"\r\ + \n \"Amster-SFTP-backup\"\r\ + \n \"Amster-BkpEmail-and-upd\"\r\ + \n \"Amster-TG-Bot\"\r\ + \n \"Amster-TG-Notification\";\r\ + \n };\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"updating \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n# /system/script/add name=\$Script owner=\$AmOwner source=([ /tool/fe\ + tch check-certificate=yes-without-crl (\"\$AmScriptsUrl\" . \$Script . \".\ + rsc\") output=user as-value ]->\"data\"); };\r\ + \n}\r\ + \n\r\ + \n\$AmFirstRun;\r\ + \n#\$AmUpdRun;\r\ + \n\r\ + \n#\$setUpdExist;\r\ + \n#:global setUpdExist;\r\ + \n#:global ParseKeyValueStore;\r\ + \n#:set setUpdExist do={\r\ + \n#:do {\r\ + \n#:global ParseKeyValueStore;\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\\r\?\\n#comment=*\" ] do={\r\ + \n# :local ScriptVal [ /system/script/get \$Script ];\r\ + \n# :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"#comment\"\ + ) ];\r\ + \n# :local scriptName (\$ScriptVal->\"name\");\r\ + \n#:log warning (\"\\n\\\$scriptName = \". \$scriptName);\r\ + \n#: log warning (\"\\n\\\$ScriptInfo = \". \$ScriptInfo);\r\ + \n# }\r\ + \n#} on-error={}\r\ + \n#}\r\ + \n#\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run\ + -count;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;\r\ + \n#;(evl / (evl /docommand=;(evl / (evl /foreachcounter=\$Script;do=;(evl \ + / (evl /localname=\$ScriptVal;value=(evl (evl /system/script/getnumber=\$S\ + cript))) (evl /localname=\$ScriptInfo;value=(evl (<%% \$ParseKeyValueStore\ + \_(> \$ParseKeyValueStore);(-> \$ScriptVal comment)))) (evl /localname=\$s\ + criptName) (evl /setname=\$scriptName;value=(-> #\$ScriptVal name)) (evl /\ + log/errormessage=(. \r\ + \n# \$ ScriptInfo = \$ScriptInfo)));in=(evl (evl /system/script/findwhere\ + =\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run-c\ + ount;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;(~ \$so\ + urce (. ^#!rsc by Vados \r\ + \n# \? \r\ + \n#));5))));on-error=;(evl /)))\r\ + \n" +add dont-require-permissions=no name="Download cAP's Packages" owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# +------------------------------+\r\ + \n# | |\r\ + \n# | Mikrotik RouterOS Scripts |\r\ + \n# | _Download cAP's Packages_ |\r\ + \n# | |\r\ + \n# +------------------------------+\r\ + \n# https://github.com/sebastian13/mikrotik-routeros-scripts\r\ + \n#\r\ + \n\r\ + \n# Set a directory path providing the required space\r\ + \n# Add a microSD card https://wiki.mikrotik.com/wiki/Manual:System/Disks\ + \r\ + \n# or setup a RAM-Disk via '/disk/add type=tmpfs tmpfs-max-size=20M slot=\ + ram'\r\ + \n:local dir \"/tmpfs/capsman-packages\";\r\ + \n\r\ + \n\r\ + \n# Set Package Path if required, set policy to none if using 'upgrade-cap\ + s' script\r\ + \n/interface/wifi/capsman/set package-path=\$dir upgrade-policy=none;\r\ + \n/caps-man/manager/set package-path=\$dir upgrade-policy=none;\r\ + \n#require-same-version;\r\ + \n\r\ + \n:local installed [/system package get value-name=version [find where nam\ + e=\"routeros\"]]\r\ + \n\r\ + \n# Delete old downloads\r\ + \n# /file/remove [ find type=package name~\"capsman*\" ]\r\ + \n\r\ + \n# Starting from RouterOS version 7.13, drivers for older wireless and 60\ + GHz interfaces are\r\ + \n# part of the separate \"wireless\" package. The existing \"wifiwave2\" \ + package has been divided\r\ + \n# into distinct packages: \"wifi-qcom\" and \"wifi-qcom-ac\".\r\ + \n# RouterOS >=7.12 is required to upgrade to 7.13.\r\ + \n# https://forum.mikrotik.com/viewtopic.php\?t=202423\r\ + \n\r\ + \n:foreach architecture in={ \"arm\";\r\ + \n# \"arm64\";\r\ + \n \"x86_64\";\r\ + \n \"mipsbe\"} do={\r\ + \n :foreach package in={ \"routeros\";\r\ + \n# \"wifi-qcom-ac\";\r\ + \n# \"wifi-qcom\";\r\ + \n \"container\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/700/f14f095d\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 22.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\r\ + \n#\r\ + \n#root.mnuc.backuper\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n#:local FetchFile AM-DOHCert.rsc\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\r\ + \n:global MkDir;\r\ + \n\r\ + \n:local FetchFile Binary.backup\r\ + \n:local localDir \"[usb1]/scripts/\";\r\ + \n\r\ + \n\$MkDir \$localDir;\r\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add dont-require-permissions=yes name=MkTmpfs owner=vados policy=\ + ftp,read,write,policy,test,sniff,sensitive source=\ + ":global MkDir;\r\ + \n\r\ + \n\$MkDir /usb1/tmpfs;" +add dont-require-permissions=no name=CreateContainer owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local contIF \"veth1\";\r\ + \n:local contIP \"10.10.10.10/24\";\r\ + \n:local contGW \"10.10.10.1\";\r\ + \n#/interface/veth/add name=\$contIF address=\$contIP gateway=\$contGW;\r\ + \n:local contBridgeIF \"Bridge-DOC\";\r\ + \n:local contBridgeIP \"10.10.10.1/24\";\r\ + \n/interface/bridge/add name=\$contBridgeIF;\r\ + \n/ip/address/add address=\$contBridgeIP interface=\$contBridgeIF;\r\ + \n/interface/bridge/port/add bridge=\$contBridgeIF interface=\$contIF;\r\ + \n/container/config/set ram-high=768M registry-url=https://registry-1.dock\ + er.io tmpdir=sata1/tmp\r\ + \n" +add dont-require-permissions=no name=carkeeperbot owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/mounts/add list=carkeeper_configs/.profile src=sata1/carkeeper/c\ + onfigs/.profile dst=/root/.ashrc;\r\ + \n/container/mounts/add list=carkeeper_configs/php.ini src=sata1/carkeeper\ + /configs/php.ini dst=/etc/php82/php.ini;\r\ + \n#/container/mounts/add list=carkeeper_configs src=sata1/carkeeper/config\ + s dst=/configs;\r\ + \n/container/mounts/add list=carkeeper_app src=sata1/carkeeper/app dst=/ap\ + p;\r\ + \n/container/mounts/add list=carkeeper_scripts src=sata1/carkeeper/scripts\ + \_dst=/scripts;\r\ + \n/container/mounts/add list=carkeeper_configs/sshd_config src=sata1/carke\ + eper/configs/sshd_config dst=/etc/ssh/sshd_config;\r\ + \n\r\ + \n/container/mounts/add list=carkeeper_tmp src=sata1/carkeeper/tmp dst=/va\ + r/tmp;\r\ + \n/container/mounts/add list=carkeeper_sync src=sata1/carkeeper/sync dst=/\ + var/sync;\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=mod/AM-IPbridge \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Use Telegram to chat with your Router and send commands" \ + dont-require-permissions=no name=mod/AM-TG-Bot owner=mod/AM-TG-Bot \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Bot\r\ + \n# Script comment: Use Telegram to chat with your Router and send command\ + s\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global Identity;\r\ + \n :global TelegramChatActive;\r\ + \n :global TelegramChatGroups;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdsTrusted;\r\ + \n :global TelegramChatOffset;\r\ + \n :global TelegramChatRunTime;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramRandomDelay;\r\ + \n :global TelegramTokenId;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FileExists;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global LogPrintVerbose;\r\ + \n :global MAX;\r\ + \n :global MIN;\r\ + \n :global MkDir;\r\ + \n :global RandomDelay;\r\ + \n :global RmDir;\r\ + \n :global ScriptLock;\r\ + \n :global SendTelegram2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global WaitForFile;\r\ + \n :global WaitFullyConnected;\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$WaitFullyConnected;\r\ + \n\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) \ + do={\r\ + \n /system/scheduler/add start-time=startup interval=30s name=\$ScriptN\ + ame on-event=\"/system/script/run \$ScriptName;\" comment=\"Telegram Chat \ + Bot\";\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramChatOffset ] != \"array\") do={\r\ + \n :set TelegramChatOffset { 0; 0; 0 };\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramRandomDelay ] != \"num\") do={\r\ + \n :set TelegramRandomDelay 0;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certificate \ + failed.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$RandomDelay \$TelegramRandomDelay;\r\ + \n\r\ + \n :local Data false;\r\ + \n :for I from=1 to=4 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl outpu\ + t=user \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") as-value ]->\"data\");\r\ + \n :set TelegramRandomDelay [ \$MAX 0 (\$TelegramRandomDelay - 1) ]\ + ;\r\ + \n } do={\r\ + \n :if (\$I < 4) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Fetch failed, \" . \$I . \". \ + try: \" . \$Err);\r\ + \n :set TelegramRandomDelay [ \$MIN 15 (\$TelegramRandomDelay + 5\ + ) ];\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed getting updates.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local UpdateID 0;\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :foreach Update in=(\$JSON->\"result\") do={\r\ + \n :set UpdateID (\$Update->\"update_id\");\r\ + \n \$LogPrintVerbose debug \$ScriptName (\"Update \" . \$UpdateID . \":\ + \_\" . [ :serialize to=json \$Update ]);\r\ + \n\r\ + \n :local Message (\$Update->\"message\");\r\ + \n :local IsAnyReply ([ :typeof (\$Message->\"reply_to_message\") ] = \ + \"array\");\r\ + \n :local IsMyReply (\$TelegramMessageIDs->[ :tostr (\$Message->\"reply\ + _to_message\"->\"message_id\") ]);\r\ + \n :if ((\$IsMyReply = 1 || \$TelegramChatOffset->0 > 0 || \$Uptime > 5\ + m) && \$UpdateID >= \$TelegramChatOffset->2) do={\r\ + \n :local Trusted false;\r\ + \n :local Chat (\$Message->\"chat\");\r\ + \n :local From (\$Message->\"from\");\r\ + \n :local Command (\$Message->\"text\");\r\ + \n :local ThreadId [ \$IfThenElse (\$Message->\"is_topic_message\") (\ + \$Message->\"message_thread_id\") \"\" ];\r\ + \n\r\ + \n :foreach IdsTrusted in=(\$TelegramChatId, \$TelegramChatIdsTrusted\ + ) do={\r\ + \n :if (\$From->\"id\" = \$IdsTrusted || \\\r\ + \n \$From->\"username\" = \$IdsTrusted || \\\r\ + \n \$Chat->\"id\" = \$IdsTrusted) do={\r\ + \n :set Trusted true;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Trusted = true) do={\r\ + \n :local Done false;\r\ + \n :if (\$Command = \"\?\") do={\r\ + \n \$LogPrint info \$ScriptName (\"Sending notice for update \" .\ + \_\$UpdateID . \".\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=([ \$IfThenElse ([ :len (\$From->\"first_name\") ] >\ + \_0) (\"Hello \" . (\$From->\"first_name\") . \"!\\n\\n\") ] . \\\r\ + \n \"Online\" . [ \$IfThenElse \$TelegramChatActive \" (and a\ + ctive!)\" ] . \", awaiting your commands!\") });\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && [ :pick \$Command 0 1 ] = \"!\") do={\r\ + \n :if (\$Command ~ (\"^! *(\" . [ \$EscapeForRegEx \$Identity ] \ + . \"|@\" . \$TelegramChatGroups . \")\\\$\")) do={\r\ + \n :set TelegramChatActive true;\r\ + \n } else={\r\ + \n :set TelegramChatActive false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Now \" . [ \$IfThenElse \$Tele\ + gramChatActive \"active\" \"passive\" ] . \\\r\ + \n \" from update \" . \$UpdateID . \"!\");\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && (\$IsMyReply = 1 || (\$IsAnyReply = false\ + \_&& \\\r\ + \n \$TelegramChatActive = true)) && [ :len \$Command ] > 0) do\ + ={\r\ + \n :if ([ \$ValidateSyntax \$Command ] = true) do={\r\ + \n :local State \"\";\r\ + \n :local File (\"tmpfs/telegram-chat/\" . [ \$GetRandom20CharA\ + lNum 6 ]);\r\ + \n :if ([ \$MkDir \"tmpfs/telegram-chat\" ] = false) do={\r\ + \n \$LogPrint error \$ScriptName (\"Failed creating directory\ + !\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Running command from update \ + \" . \$UpdateID . \": \" . \$Command);\r\ + \n :execute script=(\":do {\\n\" . \$Command . \"\\n} on-error=\ + { /file/add name=\\\"\" . \$File . \".failed\\\" };\" . \\\r\ + \n \"/file/add name=\\\"\" . \$File . \".done\\\"\") file=(\$\ + File . \"\\00\");\r\ + \n :if ([ \$WaitForFile (\$File . \".done\") [ \$EitherOr \$Tel\ + egramChatRunTime 20s ] ] = false) do={\r\ + \n :set State ([ \$SymbolForNotification \"warning-sign\" ] .\ + \_\"The command did not finish, still running in background.\\n\\n\");\r\ + \n }\r\ + \n :if ([ \$FileExists (\$File . \".failed\") ] = true) do={\r\ + \n :set State ([ \$SymbolForNotification \"cross-mark\" ] . \ + \"The command failed with an error!\\n\\n\");\r\ + \n }\r\ + \n :local Content ([ /file/read chunk-size=32768 file=\$File as\ + -value ]->\"data\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n \$State . [ \$IfThenElse ([ :len \$Content ] > 0) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"Output:\\n\" .\ + \_\$Content) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"No output.\") \ + ]) });\r\ + \n \$RmDir \"tmpfs/telegram-chat\";\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"The command from update \" .\ + \_\$UpdateID . \" failed syntax validation!\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n [ \$SymbolForNotification \"cross-mark\" ] . \"The comma\ + nd failed syntax validation!\") });\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n :local MessageText (\"Received a message from untrusted contact \ + \" . \\\r\ + \n [ \$IfThenElse ([ :len (\$From->\"username\") ] = 0) \"without\ + \_username\" (\"'\" . \$From->\"username\" . \"'\") ] . \\\r\ + \n \" (ID \" . \$From->\"id\" . \") in update \" . \$UpdateID . \ + \"!\");\r\ + \n :if (\$Command ~ (\"^! *\" . [ \$EscapeForRegEx \$Identity ] . \ + \"\\\$\")) do={\r\ + \n \$LogPrint warning \$ScriptName \$MessageText;\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=(\"You are not trusted.\") });\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName \$MessageText;\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ + ateID . \".\");\r\ + \n }\r\ + \n }\r\ + \n :set TelegramChatOffset ([ :pick \$TelegramChatOffset 1 3 ], \\\r\ + \n [ \$IfThenElse (\$UpdateID >= \$TelegramChatOffset->2) (\$UpdateID +\ + \_1) (\$TelegramChatOffset->2) ]);\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Script send Notifications in Telegram" dont-require-permissions=\ + no name=mod/AM-TG-Notifications owner=mod/AM-TG-Notifications policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Notifications\r\ + \n# Script comment: Script send Notifications in Telegram\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:global FlushTelegramQueue;\r\ + \n:global GetTelegramChatId;\r\ + \n:global NotificationFunctions;\r\ + \n:global PurgeTelegramQueue;\r\ + \n:global SendTelegram;\r\ + \n:global SendTelegram2;\r\ + \n# flush telegram queue\r\ + \n:set FlushTelegramQueue do={ :onerror Err {\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global CertificateAvailable;\r\ + \n :global IsFullyConnected;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$IsFullyConnected ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"System is not fully connected, not flushing.\ + \");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local AllDone true;\r\ + \n :local QueueLen [ :len \$TelegramQueue ];\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueue\ + \" ] ] > 0 && \$QueueLen = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Flushing Telegram messages from scheduler,\ + \_but queue is empty.\");\r\ + \n }\r\ + \n :foreach Id,Message in=\$TelegramQueue do={\r\ + \n :if ([ :typeof \$Message ] = \"array\" ) do={\r\ + \n :onerror Err {\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl out\ + put=user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . (\$Message->\"tokenid\") .\ + \_\"/sendMessage\") \\\r\ + \n http-data=(\$Message->\"http-data\") as-value ]->\"data\");\r\ + \n :set (\$TelegramQueue->\$Id);\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json v\ + alue=\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Sending queued Telegram message failed: \ + \" . \$Err);\r\ + \n :set AllDone false;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$AllDone = true && \$QueueLen = [ :len \$TelegramQueue ]) do={\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ]\ + ;\r\ + \n :set TelegramQueue;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# get the chat id\r\ + \n:set GetTelegramChatId do={ :onerror Err {\r\ + \n :global TelegramTokenId;\r\ + \n :global CertificateAvailable;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local Data;\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl output=us\ + er \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/getUpd\ + ates\?offset=0\" . \\\r\ + \n \"&allowed_updates=%5B%22message%22%5D\") as-value ]->\"data\");\ + \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Fetching data failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local Count [ :len (\$JSON->\"result\") ];\r\ + \n :if (\$Count = 0) do={\r\ + \n \$LogPrint info \$0 (\"No message received.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Message (\$JSON->\"result\"->(\$Count - 1)->\"message\");\r\ + \n \$LogPrint info \$0 (\"The chat id is: \" . (\$Message->\"chat\"->\"id\ + \"));\r\ + \n :if ((\$Message->\"is_topic_message\") = true) do={\r\ + \n \$LogPrint info \$0 (\"The thread id is: \" . (\$Message->\"message_\ + thread_id\"));\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set (\$NotificationFunctions->\"telegram\") do={\r\ + \n :local Notification \$1;\r\ + \n :global Identity;\r\ + \n :global IdentityExtra;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdOverride;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramThreadId;\r\ + \n :global TelegramThreadIdOverride;\r\ + \n :global TelegramTokenId;\r\ + \n :global TelegramTokenIdOverride;\r\ + \n :global CertificateAvailable;\r\ + \n :global CharacterReplace;\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ProtocolStrip;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n :local EscapeMD do={\r\ + \n :local Text [ :tostr \$1 ];\r\ + \n :local Mode [ :tostr \$2 ];\r\ + \n :local Excl [ :tostr \$3 ];\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :local Chars {\r\ + \n \"body\"={ \"\\\\\"; \"`\" };\r\ + \n \"plain\"={ \"_\"; \"*\"; \"[\"; \"]\"; \"(\"; \")\"; \"~\"; \"`\"\ + ; \">\";\r\ + \n \"#\"; \"+\"; \"-\"; \"=\"; \"|\"; \"{\"; \"}\"; \".\"; \ + \"!\" };\r\ + \n }\r\ + \n :foreach Char in=(\$Chars->\$Mode) do={\r\ + \n :if ([ :typeof [ :find \$Excl \$Char ] ] = \"nil\") do={\r\ + \n :set Text [ \$CharacterReplace \$Text \$Char (\"\\\\\" . \$Char)\ + \_];\r\ + \n }\r\ + \n }\r\ + \n :if (\$Mode = \"body\") do={:return (\"```\\n\" . \$Text . \"\\n```\ + \")}\r\ + \n :return \$Text;\r\ + \n }\r\ + \n :local ChatId [ \$EitherOr (\$Notification->\"chatid\") \\\r\ + \n [ \$EitherOr (\$TelegramChatIdOverride->(\$Notification->\"origin\")\ + ) \$TelegramChatId ] ];\r\ + \n :local ThreadId [ \$EitherOr (\$Notification->\"threadid\") \\\r\ + \n [ \$EitherOr (\$TelegramThreadIdOverride->(\$Notification->\"origin\ + \")) \\\r\ + \n [ \$IfThenElse ([ :len (\$TelegramChatIdOverride->(\$Notification->\ + \"origin\")) ] = 0) \$TelegramThreadId ] ] ];\r\ + \n :local TokenId [ \$EitherOr (\$TelegramTokenIdOverride->(\$Notificatio\ + n->\"origin\")) \$TelegramTokenId ];\r\ + \n :if ([ :len \$TokenId ] = 0 || [ :len \$ChatId ] = 0) do={:return fals\ + e}\r\ + \n :if ([ :typeof \$TelegramMessageIDs ] = \"nothing\") do={:set Telegram\ + MessageIDs ({})}\r\ + \n :local Truncated false;\r\ + \n :local Text (\"*__\" . [ \$EscapeMD (\"[\" . \$IdentityExtra . \$Ident\ + ity . \"] \" . \\\r\ + \n (\$Notification->\"subject\")) \"plain\" ] . \"__*\\n\\n\");\r\ + \n :local LenSubject [ :len \$Text ];\r\ + \n :local LenMessage [ :len (\$Notification->\"message\") ];\r\ + \n :local LenLink ([ :len (\$Notification->\"link\") ] * 2);\r\ + \n :local LenSum (\$LenSubject + \$LenMessage + \$LenLink);\r\ + \n :if (\$LenSum > 3968) do={\r\ + \n :set Text (\$Text . [ \$EscapeMD ([ :pick (\$Notification->\"message\ + \") 0 (3840 - \$LenSubject - \$LenLink) ] . \"...\") \"body\" ]);\r\ + \n :set Truncated true;\r\ + \n } else={:set Text (\$Text . [ \$EscapeMD (\$Notification->\"message\")\ + \_\"body\" ])}\r\ + \n :if (\$LenLink > 0) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"link\" ] .\ + \_\\\r\ + \n \"[\" . [ \$EscapeMD [ \$ProtocolStrip (\$Notification->\"link\") \ + ] \"plain\" ] . \"]\" . \\\r\ + \n \"(\" . [ \$EscapeMD (\$Notification->\"link\") \"plain\" ] . \")\ + \");\r\ + \n }\r\ + \n :if (\$Truncated = true) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"scissors\"\ + \_] . \\\r\ + \n [ \$EscapeMD (\"The message was too long and has been truncated, c\ + ut off _\" . \\\r\ + \n ((\$LenSum - [ :len \$Text ]) * 100 / \$LenSum) . \"%_!\") \"plain\ + \" \"_\" ]);\r\ + \n }\r\ + \n :local HTTPData (\"chat_id=\" . \$ChatId . \"&disable_notification=\" \ + . (\$Notification->\"silent\") . \\\r\ + \n \"&reply_to_message_id=\" . (\$Notification->\"replyto\") . \"&mes\ + sage_thread_id=\" . \$ThreadId . \\\r\ + \n \"&disable_web_page_preview=true&parse_mode=MarkdownV2\");\r\ + \n :onerror Err {\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority \ + - G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl output=\ + user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TokenId . \"/sendMessage\") \ + \\\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) as-va\ + lue ]->\"data\");\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json value\ + =\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint info \$0 (\"Failed sending Telegram notification: \" . \$\ + Err . \" - Queuing...\");\r\ + \n :if ([ :typeof \$TelegramQueue ] = \"nothing\") do={:set TelegramQue\ + ue ({})}\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"alarm-cloc\ + k\" ] . \\\r\ + \n [ \$EscapeMD (\"This message was queued since _\" . [ /system/cloc\ + k/get date ] . \\\r\ + \n \" \" . [ /system/clock/get time ] . \"_ and may be obsolete.\") \ + \"plain\" \"_\" ]);\r\ + \n :set (\$TelegramQueue->[ :len \$TelegramQueue ]) { tokenid=\$TokenId\ + ;\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) };\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueu\ + e\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"_FlushTelegramQueue\" interval=1m sta\ + rt-time=startup \\\r\ + \n on-event=(\":global FlushTelegramQueue; \\\$FlushTelegramQueue;\ + \");\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n# purge the Telegram queue\r\ + \n:set PurgeTelegramQueue do={\r\ + \n :global TelegramQueue;\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ];\ + \r\ + \n :set TelegramQueue;\r\ + \n}\r\ + \n# send notification via telegram - expects at least two string arguments\ + \r\ + \n:set SendTelegram do={ :onerror Err {\r\ + \n :global SendTelegram2;\r\ + \n \$SendTelegram2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3; sil\ + ent=\$4 });\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set SendTelegram2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n (\$NotificationFunctions->\"telegram\") (\"\\\$NotificationFunctions->\ + \\\"telegram\\\"\") \$Notification;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=testIfThenElseAndEitherOr owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source=":local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local ExitError;\r\ + \n#:local IfThenElse;\r\ + \n#:local EitherOr;\r\ + \n\r\ + \n:local one 11;\r\ + \n:local two 8;\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n:local Test; # [ :totime \"22s\" ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n\r\ + \n:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set Test [ \$EitherOr \$Test \"\" ];\r\ + \n:log warning (\"\\\$ Test = \" . \$Test);\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :local IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set ExitOK true;\r\ + \n\$ExitError \$ExitOK \$ScriptName \"Err test custom\";" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$Name 0 1 ] = \"\\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);}\r\ + \n}\r\ + \n\r\ + \n:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add dont-require-permissions=no name=testGetPubIP owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global DevInfoIncludeIP;\r\ + \n:global CharacterReplace;\r\ + \n:global EscapeForRegEx;\r\ + \n:global UrlEncode;\r\ + \n\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local Char (\"\\n\\r\");\r\ + \n :local PublicIpAddress [\$GetPubIp];\r\ + \n# :if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 2) ] = \ + \"\\n\") do={:error true}; :set error falseon-error={:set PublicIpAddress \ + (\$PublicIpAddress . Char)};\r\ + \n#:if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 1) ] = \"/\ + n\") do={\r\ + \n#:log warning \"N is = //n\"; \r\ + \n# :set PublicIpAddress [ \$CharacterReplace \$PublicIpAddress \$Char \"\ + \" ];\r\ + \n#}\r\ + \n# :set PublicIpAddress [ \$UrlEncode \$PublicIpAddress ];\r\ + \n#:local IpLen ([ :len \$PublicIpAddress ] -1);\r\ + \n#:set PublicIpAddress [:pick \$PublicIpAddress 0 \$IpLen];\r\ + \n :log warning \"Public IP address detected: \$PublicIpAddress , len = \ + \$IpLen\";\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=AmneziaWG owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /routing table \ + \n#add disabled=no fib name=r_to_vpn\ + \n#/ip firewall address-list\ + \n#add address=8.8.4.4 list=to_vpn\ + \n#/ip firewall address-list\ + \n#add address=10.0.0.0/8 list=RFC1918\ + \n#add address=172.16.0.0/12 list=RFC1918\ + \n#add address=192.168.0.0/16 list=RFC1918\ + \n#/interface/list/add name=WAN\ + \n#/interface/list/member/add list=WAN interface=ether1\ + \n\ + \n/ip firewall mangle\ + \nadd action=accept chain=prerouting dst-address-list=RFC1918 in-interface\ + -list=!WAN\ + \n/ip firewall mangle\ + \nadd action=mark-connection chain=prerouting connection-mark=no-mark dst-\ + address-list=to_vpn in-interface-list=!WAN \\\ + \n new-connection-mark=to-vpn-conn passthrough=yes\ + \n/ip firewall mangle\ + \nadd action=mark-routing chain=prerouting connection-mark=to-vpn-conn in-\ + interface-list=!WAN new-routing-mark=r_to_vpn \\\ + \n passthrough=yes\ + \n/ip firewall mangle\ + \nadd action=mark-connection chain=output connection-mark=no-mark \\\ + \n dst-address-list=to_vpn new-connection-mark=to-vpn-conn-local \\\ + \n passthrough=yes\ + \nadd action=mark-routing chain=output connection-mark=to-vpn-conn-local \ + \\\ + \n new-routing-mark=r_to_vpn passthrough=yes\ + \n\ + \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 +set cinny firewall-redirects=8094:80:tcp:web +set goaway container-command-lines=goaway:none:docker.io/pommee/goaway:latest +set home-assistant container-command-lines=\ + home-assistant:none:lscr.io/linuxserver/homeassistant +set n8n firewall-redirects=5678:5678:tcp:web +set nextcloud container-command-lines="db:none:docker.io/postgres:17,redis:non\ + e:docker.io/valkey/valkey:/bin/sh -c 'valkey-server --port 6379 --appendon\ + ly yes --requirepass \$VALKEY_PASSWORD',server:none:docker.io/nextcloud:ap\ + ache" +set pihole environment="pihole:FTLCONF_dns_listeningMode=all,pihole:FTLCONF_we\ + bserver_api_password=password" +set redlib firewall-redirects=8087:8080:tcp:web +set solr container-command-lines=solr:none:docker.io/solr:latest +set uptime-kuma container-command-lines=\ + uptime-kuma:none:docker.io/louislam/uptime-kuma:1 +/app settings +set auto-update=yes disk=*7 lan-bridge=Bridge-LAN registry-mirrors="https://re\ + g.vados.ru:5000/:https://reg.vados.ru/,https://registry-1.docker.io" +/caps-man aaa +set called-format=ssid +/caps-man access-list +add action=reject allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-120..-80 ssid-regexp="" +add action=accept allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-79..120 ssid-regexp="" +/caps-man manager +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes require-peer-certificate=yes +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=Bridge-LAN +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=g,gn,b \ + master-configuration=2G name-format=prefix-identity name-prefix=2G +add action=create-dynamic-enabled hw-supported-modes=an,ac,a \ + master-configuration=5G name-format=prefix-identity name-prefix=5G +add action=create-dynamic-enabled disabled=yes hw-supported-modes=ac,an,a \ + master-configuration=2G name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled disabled=yes hw-supported-modes=an \ + master-configuration=5G name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set crl-store=system +/container config +set layer-dir=/sata1 memory-high=4096.0MiB memory-max=4096.0MiB registry-url=\ + https://registry-1.docker.io tmpdir=/tmp username=amsternl +/container mounts +add dst=/etc/amnezia/amneziawg list=awg_conf src=/wg +/interface bridge port +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=2G-MikroGig-1 +add bridge=Bridge-LAN interface=2G-MikroMaster-1 +add bridge=Bridge-LAN interface=5G-MikroGig-1 +add bridge=Bridge-LAN interface=5G-MikroMaster-1 +/ipv6 settings +set disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=Internet internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface list member +add interface=lo list=LAN +add interface=Bridge-LAN list=LAN +add interface=ether2 list=Internet +add interface=docker-awg-veth list=WAN +/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=172.18.20.1/30 interface=docker-awg-veth network=172.18.20.0 +/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 address-list +add address=8.8.4.4 list=to_vpn +add address=10.0.0.0/8 list=RFC1918 +add address=172.16.0.0/12 list=RFC1918 +add address=192.168.0.0/16 list=RFC1918 +/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 +add action=change-mss chain=forward new-mss=1360 out-interface=\ + docker-awg-veth protocol=tcp tcp-flags=syn tcp-mss=1420-65535 +/ip firewall nat +add action=masquerade chain=srcnat out-interface=docker-awg-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 check-gateway=bfd disabled=no distance=2 dst-address=0.0.0.0/0 gateway=\ + 10.30.30.81 routing-table=main scope=30 target-scope=10 +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=docker-awg-veth \ + routing-table=r_to_vpn scope=30 target-scope=10 +/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 enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=external +add interface=*B5 type=internal +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Telegram Chat Bot" interval=30s name=mod/AM-TG-Bot on-event=\ + "/system/script/run mod/AM-TG-Bot;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-06-25 start-time=03:41:27 +/tool e-mail +set certificate-verification=no from=MikroNUC port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/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/20260628/20260628000002-Diff-Config.rsc b/MikroNUC/history/20260628/20260628000002-Diff-Config.rsc new file mode 100644 index 0000000..d1555a7 --- /dev/null +++ b/MikroNUC/history/20260628/20260628000002-Diff-Config.rsc @@ -0,0 +1,43 @@ +23a24 +> add name=Bridge-DOC +4711,4714c4712,4714 +< add bridge=Bridge-LAN interface=2G-MikroGig-1 +< add bridge=Bridge-LAN interface=2G-MikroMaster-1 +< add bridge=Bridge-LAN interface=5G-MikroGig-1 +< add bridge=Bridge-LAN interface=5G-MikroMaster-1 +--- +> add bridge=Bridge-DOC interface=*B4 +> add bridge=Bridge-LAN interface=LAN +> add bridge=Bridge-LAN interface=dynamic +4718,4719c4718,4719 +< set detect-interface-list=Internet internet-interface-list=Internet \ +< lan-interface-list=LAN wan-interface-list=WAN +--- +> set detect-interface-list=all internet-interface-list=WAN lan-interface-list=\ +> LAN wan-interface-list=WAN +4720a4721 +> add interface=Bridge-LAN list=WAN +4722,4724d4722 +< add interface=Bridge-LAN list=LAN +< add interface=ether2 list=Internet +< add interface=docker-awg-veth list=WAN +4747a4746 +> # in/out-interface matcher not possible when interface (docker-awg-veth) is slave - use master instead (Bridge-LAN) +4750a4750 +> # in/out-interface matcher not possible when interface (docker-awg-veth) is slave - use master instead (Bridge-LAN) +4759c4759 +< add check-gateway=bfd disabled=no distance=2 dst-address=0.0.0.0/0 gateway=\ +--- +> add check-gateway=bfd disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ +4761,4762c4761,4764 +< add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=docker-awg-veth \ +< routing-table=r_to_vpn scope=30 target-scope=10 +--- +> add distance=1 dst-address=0.0.0.0/0 gateway=172.18.20.2 routing-table=\ +> r_to_vpn +> add distance=1 dst-address=0.0.0.0/0 gateway=172.18.20.2 routing-table=\ +> r_to_vpn +4781c4783 +< add interface=*B5 type=internal +--- +> add interface=Bridge-DOC type=internal -- 2.52.0