Commit Graph

43 Commits

Author SHA1 Message Date
citronalco 83534952a5
autoupdater: Add HTTP-Header X-FIRMWARE-VERSION (#246)
X-FIRMWARE-VERSION gets set to the content of the file referenced by UCI setting "autoupdater.settings.version_file"
If "autoupdater.settings.version_file" is unset X-FIRMWARE-VERSION is
omitted
2021-07-16 19:25:06 +02:00
Jason 85af243158
autoupdater: Fixed segfault on wrong long option
If an autoupdater long option (prefixed with '--') are unknown then a segmentation fault occurs.
Example:
root@node:~# autoupdater --xyz
Segmentation fault

[Matthias Schiffer: changed sentinel syntax]
2020-01-10 00:34:44 +01:00
Ruben Barkow 71d0566b37 autoupdater: clarify usage of -n in help 2019-05-04 17:19:08 +02:00
Matthias Schiffer 30be52e03b
autoupdater: consider end of string smaller than all characters except for '~'
This fixes ordering for the following patterns:

* 1.0 < 1.0a
* 1.0a < 1.0ab
* 1.0a < 1.0a1

Note that trailing zeros are still ignored (1.0 == 1., 1test0 == 1test),
which matches the behaviour of dpkg and opkg.
2018-12-18 23:16:17 +01:00
Matthias Schiffer 688051cb21
autoupdater: fix regression in version compare
Version strings with the same prefix, e.g. "1.0" and "1.0~pre", or even
"1.0" and "1.0.1" were considered equal. This is a regression in the C
autoupdater rewrite.
2018-12-18 20:22:40 +01:00
lemoer ed7ed7dcba autoupdater: allow skipping the version check (#187)
this commit introduces a new cli flag "--force-version"
2018-06-03 12:13:50 +02:00
Matthias Schiffer 31e2000604
treewide: remove redundant definitions from package Makefiles 2018-03-07 20:51:48 +01:00
Tobias Schramm 5c6476ea58
autoupdater: use safe allocation functions
Give the user a better error message when allocations fail by using our
checked allocation functions.

Signed-off-by: Tobias Schramm <tobleminer@gmail.com>
[Matthias Schiffer: squash, use safe_realloc]
2018-02-22 02:39:48 +01:00
Tobias Schramm 3566cabef5
autoupdater: add safe allocation functions
safe_malloc() and safe_realloc() are wrappers around malloc() and realloc()
than abort the process if the memory allocation fails.

Signed-off-by: Tobias Schramm <tobleminer@gmail.com>
[Matthias Schiffer: add safe_realloc()]
2018-02-22 02:39:47 +01:00
Tobias Schramm 0b61fee98e
autoupdater: Check if allocation of uci contect was successfull
Previously the return value of uci_alloc_context was not checked leading
to a possible null ptr dereference

Signed-off-by: Tobias Schramm <tobleminer@gmail.com>
[Matthias Schiffer: use abort()]
2018-02-22 02:27:57 +01:00
Tobias c802276581 autoupdater: uclient: fix nullpointer dereference on invalid URL (#183)
Previously supplying an invalid url for download would result in
uclient_new returning NULL and crash the autoupdater as soon as
cl->priv is accessed.

Signed-off-by: Tobias Schramm <tobleminer@gmail.com>
2018-02-19 17:10:44 +01:00
Matthias Schiffer fc194bc7c8
autoupdater: uclient: add error handling in connection setup
Avoids a segfault when the connection fails early.
2018-01-22 10:57:35 +01:00
Jan-Philipp Litza 49cb4b3fdb
autoupdater: new implementation
This new version of the autoupdater is implemented in C instead of Lua,
allowing us to interface with libuclient (HTTP downloads) and libecdsautil
(signature checks) directly instead of spawning external processes,
saving RAM and making error handling more robust.

[Matthias Schiffer: add commit message]
2018-01-13 00:22:27 +01:00
Matthias Schiffer cae8f9c4ce
autoupdater: fix indentation 2017-02-25 18:09:39 +01:00
Matthias Schiffer 6a2d288006
autoupdater: use SHA256 checksums instead of SHA512
We already use SHA256 for the manifest signature, so we'll be able to unify
the implementations after some refactoring.
2017-02-25 01:05:32 +01:00
Matthias Schiffer ac55ad56b5
autoupdater: convert spaces to tabs 2017-02-24 23:04:05 +01:00
Jan-Philipp Litza 463f872844 autoupdater: add possibility to specify mirrors on commandline (#123) 2017-02-24 11:46:43 +01:00
Matthias Schiffer 485186ace2
autoupdater: handle wget hangs during manifest download
Make sure that the download is cancelled after the timeout even when wget
doesn't produce output at all.
2017-01-24 21:26:20 +01:00
Matthias Schiffer 90380414f1
autoupdater: add timeouts to wget calls
The -T parameter only seems to limit the maximum time between received
packets, but not the overall run time.

This adds simple timeouts to the wget calls (5 minutes for the manifest,
30 minutes for the image). The implementation is very simple, only checking
the manifest timeout each time a line was received, and the image timeout
once a second. A more elegent fix seems like overkill, as the Lua
autoupdater will be replaced with a new implementation after Gluon 2016.2
anyways.
2016-09-08 03:09:30 +02:00
Matthias Schiffer 1acb4b1d3a
autoupdater: add lockfile to prevent concurrent runs 2016-09-08 02:30:20 +02:00
@RubenKelevra 7327bfdde5 autoupdater: remove outdated list of hardware (#145) 2016-08-13 15:39:16 +02:00
Jan-Tarek Butt 6a618e61da
autoupdater: drop caches a second time after download
This is useful to free memory after stopping more services after the
download.

[Matthias Schiffer: improved commit message]
2016-07-19 02:42:18 +02:00
Matthias Schiffer f375cb7b30
autoupdate: remove potential trailing slash from mirror URL 2016-07-15 02:50:07 +02:00
lemoer 06f2a62b97 autoupdater: add upgrade.d directory. 2016-02-19 17:24:28 +01:00
Matthias Schiffer b7ce1a2002 autoupdater: add download.d and abort.d directories
All executables in download.d are executed before after the update manifest
has been verified, but before the image is downloaded. This can be used to
stop non-essential services to free RAM.

abort.d is run when the download has failed and should revert the actions
of download.d.
2016-01-11 22:03:55 +01:00
Matthias Schiffer 3d98695abc autoupdater: avoid unnessesary shell processes
Use functions that don't run commands though a shell where easily possible,
add 'exec' to remaining io.popen calls.
2016-01-11 21:53:19 +01:00
Matthias Schiffer 129b1146c3 autoupdater: fix indentation 2016-01-11 17:24:58 +01:00
Jan-Philipp Litza fc35a19d2a autoupdater: Remove dependencies on luci-base 2015-08-31 21:15:27 +02:00
Matthias Schiffer fd5e16160a autoupdater: fix usage of Gluon-specific package.mk 2015-07-01 22:09:39 +02:00
Matthias Schiffer dcc5a5ab74 autoupdater: fixes for the new LuCI version 2015-05-22 02:05:00 +02:00
Erik Tews ef6b4675d6 autoupdater: Timeout for wget.
Added a 120 second timeout for wget to prevent it from stalling forever.
2015-02-11 01:06:59 +01:00
Matthias Schiffer 1df94acf98 autoupdater: rework command line parsing, allow overriding branch
Unexpected command line arguments will now cause the updater to abort.
2015-01-27 00:33:41 +01:00
Matthias Schiffer c1068fef42 autoupdater: exit when the image name is not defined for a hardware model 2014-09-09 16:07:35 +02:00
Matthias Schiffer 02bc9f4e66 Dependency fixes for the new LuCi version 2014-08-06 12:06:49 +02:00
Matthias Schiffer a54d13eb31 autoupdater: rename oneshot updates to fallback, improve handling for frequent runs
The oneshot update now won't be considered until 24h after the priority delay
has passed (so regular updates should have at least one chance to do the updates
even for PRIORITY=0 updates)
2014-07-25 16:54:53 +02:00
Matthias Schiffer ea3d8703b4 autoupdater: all fallback for situations with no valid time available 2014-07-22 01:55:48 +02:00
Matthias Schiffer 514f46bfe0 autoupdater: add new fields to the sample manifest 2014-07-21 17:35:22 +02:00
Matthias Schiffer 7b9b3058de autoupdater: add -o (oneshot) switch
This switch is used for the fallback mode which ensures that updates are
performed even when a node is off when updates are usually done.
2014-07-21 17:27:47 +02:00
Matthias Schiffer aae7bf92ed autoupdater: implement new probablity logic 2014-07-21 17:27:47 +02:00
Matthias Schiffer 12fa328bca autoupdater: add a utility function to parse RFC3339 timestamps 2014-07-21 17:27:47 +02:00
Matthias Schiffer dc73c75810 autoupdater: convert to Lua
In addition, a new config field 'version_file' is added to remove the last
Gluon-specific part from the autoupdater package.
2014-07-21 17:27:47 +02:00
Matthias Schiffer d8054d8672 autoupdater: try URL ${BRANCH}.manifest before manifest
This will allow storing different manifests for multiple branches in a single
directory.
2014-07-14 23:12:44 +02:00
Matthias Schiffer 916bbae68e Split parts not Gluon-specific out of gluon-autoupdater 2014-07-11 14:06:42 +02:00