mirror of
https://github.com/eworm-de/routeros-scripts
synced 2024-05-14 10:04:19 +02:00
capsman-download-packages: support new wifi package
This commit is contained in:
parent
ba406ae0fe
commit
5eb130f0fc
|
@ -25,6 +25,7 @@ $ScriptLock $0;
|
|||
$WaitFullyConnected;
|
||||
|
||||
:local PackagePath [ $CleanFilePath [ /caps-man/manager/get package-path ] ];
|
||||
:local PackagePath [ $CleanFilePath [ /interface/wifi/capsman/get package-path ] ];
|
||||
:local PackagePath [ $CleanFilePath [ /interface/wifiwave2/capsman/get package-path ] ];
|
||||
:local InstalledVersion [ /system/package/update/get installed-version ];
|
||||
:local Updated false;
|
||||
|
@ -55,6 +56,7 @@ $WaitFullyConnected;
|
|||
}
|
||||
}
|
||||
|
||||
# NOT /interface/wifi/ #
|
||||
# NOT /interface/wifiwave2/ #
|
||||
:if ([ :len [ /system/logging/find where topics~"error" !(topics~"!error") \
|
||||
!(topics~"!caps") action=memory !disabled !invalid ] ] < 1) do={
|
||||
|
@ -82,11 +84,17 @@ $WaitFullyConnected;
|
|||
}
|
||||
}
|
||||
# NOT /interface/wifiwave2/ #
|
||||
# NOT /interface/wifi/ #
|
||||
# NOT /caps-man/ #
|
||||
:if ([ :len [ /file/find where type=package name~("^" . $PackagePath) ] ] = 0) do={
|
||||
$LogPrintExit2 info $0 ("No packages available, downloading default set.") false;
|
||||
:foreach Arch in={ "arm"; "arm64" } do={
|
||||
# NOT /interface/wifi/ #
|
||||
:foreach Package in={ "routeros"; "wifiwave2" } do={
|
||||
# NOT /interface/wifi/ #
|
||||
# NOT /interface/wifiwave2/ #
|
||||
:foreach Package in={ "routeros"; "wifi-qcom"; "wifi-qcom-ac" } do={
|
||||
# NOT /interface/wifiwave2/ #
|
||||
:if ([ $DownloadPackage $Package $InstalledVersion $Arch $PackagePath ] = true) do={
|
||||
:set Updated true;
|
||||
}
|
||||
|
@ -101,6 +109,7 @@ $WaitFullyConnected;
|
|||
/system/script/run $Script;
|
||||
} else={
|
||||
/caps-man/remote-cap/upgrade [ find where version!=$InstalledVersion ];
|
||||
/interface/wifi/capsman/remote-cap/upgrade [ find where version!=$InstalledVersion ];
|
||||
/interface/wifiwave2/capsman/remote-cap/upgrade [ find where version!=$InstalledVersion ];
|
||||
}
|
||||
}
|
||||
|
|
74
capsman-download-packages.wifi.rsc
Normal file
74
capsman-download-packages.wifi.rsc
Normal file
|
@ -0,0 +1,74 @@
|
|||
#!rsc by RouterOS
|
||||
# RouterOS script: capsman-download-packages.wifi
|
||||
# Copyright (c) 2018-2023 Christian Hesse <mail@eworm.de>
|
||||
# Michael Gisbers <michael@gisbers.de>
|
||||
# https://git.eworm.de/cgit/routeros-scripts/about/COPYING.md
|
||||
#
|
||||
# download and cleanup packages for CAP installation from CAPsMAN
|
||||
# https://git.eworm.de/cgit/routeros-scripts/about/doc/capsman-download-packages.md
|
||||
#
|
||||
# !! Do not edit this file, it is generated from template!
|
||||
|
||||
:local 0 "capsman-download-packages.wifi";
|
||||
:global GlobalFunctionsReady;
|
||||
:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
|
||||
|
||||
:global CleanFilePath;
|
||||
:global DownloadPackage;
|
||||
:global LogPrintExit2;
|
||||
:global MkDir;
|
||||
:global ScriptLock;
|
||||
:global WaitFullyConnected;
|
||||
|
||||
$ScriptLock $0;
|
||||
$WaitFullyConnected;
|
||||
|
||||
:local PackagePath [ $CleanFilePath [ /interface/wifi/capsman/get package-path ] ];
|
||||
:local InstalledVersion [ /system/package/update/get installed-version ];
|
||||
:local Updated false;
|
||||
|
||||
:if ([ :len $PackagePath ] = 0) do={
|
||||
$LogPrintExit2 warning $0 ("The CAPsMAN package path is not defined, can not download packages.") true;
|
||||
}
|
||||
|
||||
:if ([ :len [ /file/find where name=$PackagePath type="directory" ] ] = 0) do={
|
||||
:if ([ $MkDir $PackagePath ] = false) do={
|
||||
$LogPrintExit2 warning $0 ("Creating directory at CAPsMAN package path (" . \
|
||||
$PackagePath . ") failed!") true;
|
||||
}
|
||||
$LogPrintExit2 info $0 ("Created directory at CAPsMAN package path (" . $PackagePath . \
|
||||
"). Please place your packages!") false;
|
||||
}
|
||||
|
||||
:foreach Package in=[ /file/find where type=package \
|
||||
package-version!=$InstalledVersion name~("^" . $PackagePath) ] do={
|
||||
:local File [ /file/get $Package ];
|
||||
:if ($File->"package-architecture" = "mips") do={
|
||||
:set ($File->"package-architecture") "mipsbe";
|
||||
}
|
||||
:if ([ $DownloadPackage ($File->"package-name") $InstalledVersion \
|
||||
($File->"package-architecture") $PackagePath ] = true) do={
|
||||
:set Updated true;
|
||||
/file/remove $Package;
|
||||
}
|
||||
}
|
||||
|
||||
:if ([ :len [ /file/find where type=package name~("^" . $PackagePath) ] ] = 0) do={
|
||||
$LogPrintExit2 info $0 ("No packages available, downloading default set.") false;
|
||||
:foreach Arch in={ "arm"; "arm64" } do={
|
||||
:foreach Package in={ "routeros"; "wifi-qcom"; "wifi-qcom-ac" } do={
|
||||
:if ([ $DownloadPackage $Package $InstalledVersion $Arch $PackagePath ] = true) do={
|
||||
:set Updated true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
:if ($Updated = true) do={
|
||||
:local Script ([ /system/script/find where source~"\n# provides: capsman-rolling-upgrade\n" ]->0);
|
||||
:if ([ :len $Script ] > 0) do={
|
||||
/system/script/run $Script;
|
||||
} else={
|
||||
/interface/wifi/capsman/remote-cap/upgrade [ find where version!=$InstalledVersion ];
|
||||
}
|
||||
}
|
|
@ -18,11 +18,16 @@ This script automatically downloads these packages.
|
|||
Requirements and installation
|
||||
-----------------------------
|
||||
|
||||
Just install the script on CAPsMAN device. Depending on whether you use
|
||||
`wifiwave2` package (`/interface/wifiwave2`) or legacy wifi with CAPsMAN
|
||||
(`/caps-man`) you need to install a different script.
|
||||
Just install the script on CAPsMAN device.
|
||||
Depending on whether you use `wifi` package (`/interface/wifi`), `wifiwave2`
|
||||
package (`/interface/wifiwave2`) or legacy wifi with CAPsMAN (`/caps-man`)
|
||||
you need to install a different script.
|
||||
|
||||
For `wifiwave2`:
|
||||
For `wifi` (RouterOS 7.13 and later):
|
||||
|
||||
$ScriptInstallUpdate capsman-download-packages.wifi;
|
||||
|
||||
For `wifiwave2` (up to RouterOS 7.12):
|
||||
|
||||
$ScriptInstallUpdate capsman-download-packages.wifiwave2;
|
||||
|
||||
|
@ -30,7 +35,12 @@ For legacy CAPsMAN:
|
|||
|
||||
$ScriptInstallUpdate capsman-download-packages.capsman;
|
||||
|
||||
Optionally add a scheduler to run after startup. For `wifiwave2`:
|
||||
Optionally add a scheduler to run after startup. For `wifi` (RouterOS 7.13
|
||||
and later):
|
||||
|
||||
/system/scheduler/add name=capsman-download-packages on-event="/system/script/run capsman-download-packages.wifi;" start-time=startup;
|
||||
|
||||
For `wifiwave2` (up to RouterOS 7.12):
|
||||
|
||||
/system/scheduler/add name=capsman-download-packages on-event="/system/script/run capsman-download-packages.wifiwave2;" start-time=startup;
|
||||
|
||||
|
@ -42,8 +52,11 @@ Packages available in local storage in older version are downloaded
|
|||
unconditionally.
|
||||
|
||||
If no packages are found the script tries to download missing packages for
|
||||
legacy CAPsMAN by guessing from system log. For `wifiwave2` a default set
|
||||
of packages (`routeros` and `wifiwave2` for *arm* and *arm64*) is downloaded.
|
||||
legacy CAPsMAN by guessing from system log. For `wifi` and `wifiwave2` a
|
||||
default set of packages is downloaded.
|
||||
|
||||
* `wifi`: `routeros`, `wifi-qcom` and `wifi-qcom-ac` for *arm* and *arm64*
|
||||
* `wifiwave2`: `routeros` and `wifiwave2` for *arm* and *arm64*
|
||||
|
||||
> ℹ️ **Info**: If you have packages in the directory and things go wrong for
|
||||
> what ever unknown reason: Remove **all** packages and start over.
|
||||
|
@ -53,7 +66,7 @@ Usage and invocation
|
|||
|
||||
Run the script manually:
|
||||
|
||||
/system/script/run capsman-download-packages.wifiwave2;
|
||||
/system/script/run capsman-download-packages.wifi;
|
||||
|
||||
... or from scheduler.
|
||||
|
||||
|
|
Loading…
Reference in a new issue