Prevent NULL-pointer on older versions of OpenWrt.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
(cherry picked from commit f1969ab584)
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Request root filesystem type to since it is possible now after
9d8467a748
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
(cherry picked from commit 6c9ab0e426)
Show error message instead of segfaulting in case of an invalid URL
being read from UCI config.
Fixes: #17971
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Fallback to use 'sdcard' image in case there is neither 'sysupgrade'
nor 'combined' image available.
This allows using 'auc' on targets where 'sdcard' image is also used
for sysupgrade (such as some mvebu-based devices with eMMC).
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Accept both 'y' and 'Y' as positive confirmation when asking the user
if auc should proceed with requesting and installing an upgrade.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Remove parsing of data which is not used within `auc`. Later iterations
may use these but they can be gradually added whenever needed.
Also remove HTTP code handling of error codes no longer used by the
backend. Early iterations of the server where infinitely complex to
figure out created images and announce them to clients but ever since
everything is stored in JSON, things got better (aka simpler).
If a package is missing on the upstream server, color it in red.
Signed-off-by: Paul Spooren <mail@aparcar.org>
A stray ')' made auc skip the check if all mandatory fields of a
branch are present. Fix paranthesis in that if-clause to actually
check for all fields.
Don't even fetch package lists if checking only for release.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* use regular verrevcmp for branch names, fixes update indication
* break out usage() from main() function
* require '-f' in case installed package is missing in remote lists
* don't use ENETUNREACH for unlrelated error
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
The server API was unified and therefore the servers response is now
`detail` rather than `message`, all found under the new endpoint
/api/v1/build.
Signed-off-by: Paul Spooren <mail@aparcar.org>
Make sure '-rcX' suffix is recognized as being a lower version than
the release.
Detect per-branch snapshot version by matching the version name string.
Clean up here and there.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Automatically select image root filesystem type and allow the user
to override that choice using the new '-F' command line option.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Follow the @aparcar's withlist:
- [x] Print URL of used server when searching for an update
- [x] Implement `-y` option which automatically accepts changes
- [x] Implement `-r` option which doesn't check for package upgrades but only new releases
- [x] Print link or created image to be downloadable by the user from a browser/curl.
Also allow selecting branch and version manually.
Fixes: #16324
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This fixes support for x86, auc now selects the right combined image
depending on the system being booted in EFI mode or not.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
No longer fail in case a package is part of multiple lists (which may
happen temporarily in case it becomes 'nonshared').
Bump version to prepare for sync accross branches.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* don't segfault if server reply is incomplete
* always request 'generic' image on x86/generic and x86/64
* make SNAPSHOT branches sticky, eg. stay on 21.02-SNAPSHOT and do
not 'upgrade' to 21.02.0-rc2.
* output requested server URL when debugging
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Using strcmp() to compare a version string doesn't work well.
Use verrevcmp() function from opkg instead.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* include version_code in request
* include versions of selected packages in request
* add SHA256 verification via busybox sha256sum
* sort attributes in policies alphabetically
* move all API-specific string constants to precompiler macros
* set correct MIME type for JSON post request (application/json)
* output string error message if something goes wrong
* auto-generate version string
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This updates auc to use the new API of the sysupgrade image server.
Package version updates now need to be evaluated locally.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Drop pre-ucert signature verification.
HTTPS is optional now as integrity can also be provided using ucert.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* use full package list when checking for upgrades
* verify sha256sums and usign signature of sha256sums.sig
* introduce '-c' option to only check if system is up-to-date
* introduce '-F' option to ignore the signature verification result
* return -1 on locally caused and -2 on server-side errors
* don't include locally appended attributes in debug output of a
server reply
* output bug report note on 412 target not found
* use content-length header instead of filesize field in JSON content
* suppress duplicate error messages
* drop unused attributes
* make debug messages optional at compile-time
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* fix multiple read_data_cb calls from uclient, otherwise hickups
happend when receiving a large JSON reply
* add minimal help message (-h)
* pretify package update output
* fix infinite retry of upgrade-check which happened in some cases
* add sleep in case of check-request retry
* lots of cosmetics
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* use HTTP headers to know ImageBuilder status and queue position
* use pretty (ie. indented) JSON output for debugging
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* implement '-d' cmdline option to output json requests
* switch to new server API
* implement upgrade_packages
Read upgrade_packages UCI option and ask for either only release
upgrades or also builds based on updated packages depending on whether
upgrade_packages is '0' or '1'.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Detect if calling rpc-sys packagelist fails due to the method not
being provided by rpcd.
Mark package as experimental.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
The Attended sysUpgrade CLI is a full-featured client for the
attended-sysupgrade service which works directly on the target device.
It requires libustream-ssl as well as at least the CA certificate
needed to contact the sysupgrade server.
It has only been tested briefly and is by no means ready for
production!
Signed-off-by: Daniel Golle <daniel@makrotopia.org>