#!rsc # RouterOS script: capsman-download-packages # Copyright (c) 2018-2019 Christian Hesse <mail@eworm.de> # Michael Gisbers <michael@gisbers.de> # # requires: dont-require-permissions=yes # # download and cleanup packages for CAP installation from CAPsMAN :global DownloadPackage; :local PackagePath [ / caps-man manager get package-path ]; :if ([ :pick $PackagePath 0 ] = "/") do={ :set PackagePath [ :pick $PackagePath 1 [ :len $PackagePath ] ]; } :local InstalledVersion [ / system package update get installed-version ]; :local Updated false; :foreach Package in=[ / file find where type=package \ package-version!=$InstalledVersion name~("^" . $PackagePath) ] do={ :local PackageName [ / file get $Package package-name ]; :local PackageArchitecture [ / file get $Package package-architecture ]; :if ($PackageArchitecture = "mips") do={ :set PackageArchitecture "mipsbe"; } :if ($PackageName = "wireless@") do={ :set PackageName "wireless"; } :if ([ $DownloadPackage $PackageName $InstalledVersion $PackageArchitecture $PackagePath ] = true) do={ :set Updated true; / file remove $Package; } } :local RemoteCapCount [ /caps-man remote-cap print count-only ]; :if ($Updated = true && $RemoteCapCount > 0) do={ :local Delay (600 / $RemoteCapCount); :if ($Delay > 120) do={ :set Delay 120; } :foreach RemoteCap in=[ / caps-man remote-cap find where version!=$InstalledVersion ] do={ :log debug ("Starting upgrade for CAP " . [ / caps-man remote-cap get $RemoteCap name ] . "..."); / caps-man remote-cap upgrade $RemoteCap; :delay ($Delay . "s"); } }