Commit Graph

168 Commits

Author SHA1 Message Date
Michael Tremer
d45c4768f9 pakfire: Don't give up mirror search on status code 500
The WWW library seems to report status code 500 for issues like DNS
resolving problems and connection timeouts. In that case, we won't go on
searching for another functioning mirror, which we should.

This patch removes that special break clause.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2023-08-25 09:44:38 +00:00
Michael Tremer
39f94ee8eb Drop support for armv6l (and armv7hl)
This removes support for building IPFire for 32 bit ARM architectures.

This has been decided in August 2022 with six months notice as there are
not very many users and hardware is generally not available any more.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2023-02-10 09:26:37 +00:00
Robin Roevens
2be67e3841 pakfire: Add getmetadata function
- Added new getmetadata function for easy access to all available
  metadata of a pak without knowledge about or need to parse
  pakfire internal db files.
- Added new 'pakfire info' functionality for displaying all available
  metadata of (a) pak(s) to the user, using the new getmetadata.

Signed-off-by: Robin Roevens <robin.roevens@disroot.org>
2022-07-28 13:44:29 +00:00
Robin Roevens
074b509724 pakfire: Refactor status seperating UI and logic
- Removed UI code from status function now returning hash with status
  properties.
- Removed function coreupdate_available as it is now not used anymore
- Added UI code to pakfire status routine
- Added meaningfull exitcode to status:
  - 2: Core update available
  - 3: Pak update available
  - 4: Reboot required
  - Error codes can be added together: 2+3 = 5 means both core update
    and pak update is available

Signed-off-by: Robin Roevens <robin.roevens@disroot.org>
2022-07-28 13:44:29 +00:00
Robin Roevens
2b921b796d pakfire: Add list upgrade functionality
- Added possibility to list available upgrades from commandline
  using 'pakfire list upgrade'.
- Added exitcode to 'pakfire list'
- Moved 'Pakfire has finished' log message inside END block to
  always log when pakfire exited.
- Fix: allow [options] between 'list' and [installed/notinstalled/
  upgrade] parameters (Partly fixes Bug #12868)

Signed-off-by: Robin Roevens <robin.roevens@disroot.org>
2022-07-28 13:44:29 +00:00
Robin Roevens
5e1dbc95f7 pakfire: Optimize upgradecore function
upgradecore function should just upgrade the core:
Moved check if upgrade is necessary to pakfire upgrade code, removing
code from upgradecore function duplicating codedbinfo workings.
Also adding more vebosity to pakfire upgrade.

Signed-off-by: Robin Roevens <robin.roevens@disroot.org>
2022-07-28 13:44:29 +00:00
Robin Roevens
c6d055a85b pakfire: Replace dbgetlist duplicate code
Replace dbgetlist code duplicating dblist and getmetafile
workings with call to actual dblist and getmetafile functions.

Signed-off-by: Robin Roevens <robin.roevens@disroot.org>
2022-07-28 13:44:29 +00:00
Robin Roevens
4bac9fdd12 pakfire: Replace duplicate code with dblist functioncall
Replace pakfire install code duplicating dblist working with call
to actual dblist function.

Signed-off-by: Robin Roevens <robin.roevens@disroot.org>
2022-07-28 13:44:29 +00:00
Robin Roevens
0bd5b13195 pakfire: Refactor dblist seperating UI and logic
- Removed UI code from dblist function and refactor it making it return
  a hash representing the pak db for easier handling of this data.
- Moved core update check in dblist to new seperate dbcoreinfo function
  making it return a hash with current and possibly available core
  version info.
- Update existing calls to dblist
- Bring UI parts previously in dblist to pakfire program itself,
  pakfire.cgi and index.cgi with a few small enhancements:
  - Translations for 'Core-Update', 'Release', 'Update' and 'Version'
  - Add currently installed version numbers to installed paks list in
    pakfire.cgi
  - Add 'Installed: yes/no' to pakfire list output so people not using
    colors have this information too. (Partly fixes Bug #12868)
  - Add update available details to pakfire list output if package has
    updates available.

Signed-off-by: Robin Roevens <robin.roevens@disroot.org>
2022-07-28 13:44:29 +00:00
Leo-Andres Hofmann
950d00b2c2 pakfire/functions.pl: Adjust log level
The informative pakfire message
"No new upgrades available. You are on release ..."
does not mean that an error has happened. This patch adjusts
the log level prefix to "info" accordingly.

Reported-by: Matthias Fischer <matthias.fischer@ipfire.org>
Signed-off-by: Leo-Andres Hofmann <hofmann@leo-andres.de>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2022-07-19 07:50:06 +00:00
Robin Roevens
8ce729457d pakfire: Better errorhandling on downloads
- Add true/false return codes to fetchfile, getmetafile and getmirrors
  indicating succes or failure.
- Check on those return codes and fail gracefully with clean
  error message(s) when downloads fail.
- Replace duplicate meta-file fetching code in dbgetlist with
  getmetafile function (fixing possibly missed cariage return
  conversion in meta-files).
- Remove pointless 5 retries to download server-list.db in
  selectmirror as fetchfile already retries 5 times.
2022-06-25 11:15:03 +00:00
Peter Müller
90f03efea5 Core Update 166: Introduce new 2022 Pakfire key
Cc: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
2022-03-22 17:34:30 +00:00
Peter Müller
219a998412 Core Update 166: Drop old 2007 Pakfire key, and remove it from existing installations
It is not necessary to have this key present on IPFire systems anymore,
since it has not been in use for years, and we can expect systems to be
sufficiently up-to-date, so they no longer need to rely on old updates
or add-ons signed with this key.

Also, given the current key was generated in 2018, we should consider a
Pakfire key rollover soon.

Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
Acked-by: Michael Tremer <michael.tremer@ipfire.org>
2022-03-21 11:46:36 +00:00
Peter Müller
66c3619872 Early spring clean: Remove trailing whitespaces, and correct licence headers
Bumping across one of our scripts with very long trailing whitespaces, I
thought it might be a good idea to clean these up. Doing so, some
missing or inconsistent licence headers were fixed.

There is no need in shipping all these files en bloc, as their
functionality won't change.

Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
2022-02-18 23:54:57 +00:00
Robin Roevens
a9d98b3491 buildprocess: Add extra metadata to meta-* files
* Add a Summary and Services field to the meta-* addon files.
* Add an INSTALL_INITSCRIPTS macro that takes a space seperated
  list of initscripts to install.
* I kept the original INSTALL_INITSCRIPT as a method to install
  individual initscripts for backwards compatibility and possible corner
  cases.

Signed-off-by: Robin Roevens <robin.roevens@disroot.org>
Reviewed-by: Peter Müller <peter.mueller@ipfire.org>
2022-02-11 15:08:57 +00:00
Stefan Schantl
53f7dc7620 pakfire: Adjust code to deal with new LWP::UserAgent.
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
Reviewed-by: Peter Müller <peter.mueller@ipfire.org>
2022-02-09 20:08:50 +00:00
Robin Roevens
847df41da7 pakfire: implement function to parse meta files
Removing a lot of duplicate code parsing meta files, now replaced by
simple function calls, resulting in all metadata in one hash.

Signed-off-by: Robin Roevens <robin.roevens@disroot.org>
Reviewed-by: Peter Müller <peter.mueller@ipfire.org>
2022-02-06 10:56:58 +00:00
Robin Roevens
a06a552ccf pakfire: Fix small bug: wrong pak count on list
Fixes pakfire list installed/notinstalled command displaying the
count of all available paks instead of the count of actual installed
respectively not installed paks.

Signed-off-by: Robin Roevens <robin.roevens@disroot.org>
Reviewed-by: Bernhard Bitsch <bbitsch@ipfire.org>
Tested-by: Bernhard Bitsch <bbitsch@ipfire.org>
Reviewed-by: Michael Tremer <michael.tremer@ipfire.org>
2022-01-31 17:36:04 +00:00
Michael Tremer
6cf219c427 Drop support for i586
This patch removes support for i586 according to the decision being
taken over a year ago.

It removes the architecture from the build system and removes all
required hacks and other quirks that have been necessary before.

There is no need to ship any changed files to the remaining
architectures as the removed code branches have not been used.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2021-12-04 23:27:26 +01:00
Michael Tremer
ec18a1ecae pakfire: Allow pinning Pakfire to one mirror server
This patch adds a new $mirror option to the configuration file which
will cause Pakfire to only use this one to download any files.

This feature is disabled by default but useful for development.

Fixes: #12706
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2021-10-19 11:28:39 +00:00
Arne Fitzenreiter
6a21e9646f Merge remote-tracking branch 'origin/master' into next 2021-07-10 17:51:41 +00:00
Peter Müller
d0ba077ed3 Pakfire: call "sync" in function.sh after having extracted archives
After upgrading to Core Update 157, a few number of users reported their
systems to be unworkable after a reboot. Most of them (the systems, not
the users) were apparently missing the new Linux kernel in their Grub
configuration, causing a non-functional bootloader written to disk.

While we seem to be able to rule out issues related to poor storage
(SDDs, flash cards, etc.) or very high I/O load, it occurred to me we
are not calling "sync" after having extracted a Core Update's .tar.gz
file.

This patch therefore proposes to do so. It is a somewhat homeopathic
approach, though, but might ensure all parts of the system to have
properly processed the contents of an extracted archive. While we cannot
even reasonably guess it will solve the problem(s) mentioned initially,
doing so cannot hurt either.

See also:
https://community.ipfire.org/t/after-update-ipfire-to-157-no-boot/5641/45

Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2021-07-09 13:54:39 +00:00
Michael Tremer
c639ab1d31 pakfire: Do not delay directory restore
https://www.gnu.org/software/tar/manual/tar.html#Directory-Modification-Times-and-Permissions

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2021-07-09 13:25:00 +00:00
Michael Tremer
b6cad4d231 pakfire: Put tar options into an array
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2021-07-09 13:23:56 +00:00
Arne Fitzenreiter
b16ac3ba76 pakfire: switch 32bit arm to armv6l
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2021-07-05 07:42:40 +02:00
Stefan Schantl
d6c2e67155 pakfire: Prevent from get launched multiple times.
When pakfire gets launched a check if a so called lockfile exists and
the process will be aborted, otherwise the file will be created which
prevents any other pakfire instance to perform any operations until the
first process gets finished and the lock will be released again.

Because the release of the lock is located in an END block, the lock
also will be released in case the pakfire process gets interuped or
gains an error.

This prevents from an lock loop and an unuseable pakfire.

Reference: #12621.

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2021-05-25 09:51:56 +00:00
Michael Tremer
b37678e922 Package extended attributes in distro.img and Core Updates
System capabilities are stored in extended file system attributes
which are by default not stored in tar balls.

This patch ensures that they are packaged and extracted.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2021-01-06 14:45:02 +00:00
Peter Müller
cf33650eb3 Pakfire: do not leak upstream proxy password in log messages
Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
Reviewed-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2020-04-30 15:11:54 +00:00
Peter Müller
d96d5db6e5 Pakfire: fix upstream proxy usage
This patch ensures Pakfire will download updates via the configured
upstream proxy (if any) for both HTTP and HTTPS.

Fixes: #12357

Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2020-04-30 15:11:42 +00:00
Arne Fitzenreiter
712425ff0b pakfire: Re-install previous core update when in testing mode
Fixes: #12302
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
Tested-by: Michael Tremer <michael.tremer@ipfire.org>
Reviewed-by: Peter Müller <peter.mueller@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2020-02-24 19:21:01 +00:00
Michael Tremer
152378c674 pakfire: Add version suffix when in a certain tree
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2020-02-15 11:09:02 +00:00
Michael Tremer
e6f4991be2 pakfire: Automatically compose $version
The tree in which pakfire is looking for packages and Core Updates
has been hardcoded into /opt/pakfire/etc/pakfire.conf.

This patch adds a new function which reads the system release
from /etc/system-release.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2020-02-15 11:07:55 +00:00
Arne Fitzenreiter
c846ed1616 pakfire: use HTTPS if no protocol is specified
also use HTTPS on fallback to mainserver if no mirror was left

Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2020-01-02 16:17:54 +00:00
Alexander Koch
8c072c5c43 Pakfire: Add Core-Version to "status"
Add the IPFire-Core-Version to the status message.

Signed-off-by: Alexander Koch <ipfire@starkstromkonsument.de>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-05-10 04:25:45 +01:00
Alexander Koch
090af02e07 Pakfire: Add new command line argument "status"
This enables Pakfire to return a Status-Summary for the Current Core-Update-Level, time since last updates, the availability of a core-/packet-update and if a reboot is required to complete an update. This can be used by monitoring agents (e.g. zabbix_agentd) to monitor the update status of the IPFire device.

Signed-off-by: Alexander Koch <ipfire@starkstromkonsument.de>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2019-05-07 23:51:20 +01:00
Arne Fitzenreiter
44b0afe029 core130: ship pakfire version update
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2019-04-07 17:13:43 +02:00
Michael Tremer
06d55142e5 pakfire: Remove any reference to counter.py
The concept has been retired a very log time ago
and the web service only responds with 200 what ever
it is being sent.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2018-08-27 07:29:19 +01:00
Michael Tremer
e32591e7bf pakfire: Remove mirror health check
This is not really necessary because pakfire will automatically
failover to the next mirror anyways and that a mirror responds
to an ICMP echo request doesn't necessarily mean that it can
deliver the requested file.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2018-08-27 07:23:03 +01:00
Michael Tremer
9a507db2cb pakfire: Store key material in own directory
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2018-04-03 17:31:50 +01:00
Michael Tremer
74e715a5a2 pakfire: Import old key, too
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2018-04-02 15:46:40 +01:00
Michael Tremer
397d3a8e15 pakfire: Rename new key to pakfire-2018.key
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2018-04-02 15:46:40 +01:00
Michael Tremer
3e29608f82 pakfire: Validate signatures when multiple are available
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2018-04-02 15:45:48 +01:00
Michael Tremer
4b072d640e pakfire: Use upstream proxy for HTTPS, too
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2018-03-28 16:55:18 +01:00
Peter Müller
66a0f3646a use protocol defined in server-list.db for mirror communication
For each mirror server, a protocol can be specified in the
server-list.db database. However, it was not used for the
actual URL query to a mirror before.

This might be useful for deploy HTTPS pinning for Pakfire.
If a mirror is known to support HTTPS, all queries to it
will be made with this protocol.

This saves some overhead if HTTPS is enforced on a mirror
via 301 redirects. To enable this, the server-list.db
needs to be adjusted.

The second version of this patch only handles protocols
HTTP and HTTPS, since we do not expect anything else here
at the moment.

Partially fixes #11661.

Signed-off-by: Peter Müller <peter.mueller@link38.eu>
Cc: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2018-03-28 16:42:21 +01:00
Michael Tremer
35b892b0dd pakfire: Drop old key import mechanism
This was error-prone and allowed to potentially inject another
key.

Fixes: #11539
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2018-03-16 14:37:21 +00:00
Michael Tremer
5e5c2e5413 Import new Pakfire Signing Key
We will swap the key that we use to sign Pakfire packages
since the current one is considered outdated cryptography.

Fixes: #11539

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2018-03-16 14:26:07 +00:00
Michael Tremer
396ff12342 pakfire: Properly check if we have our key with our fingerprint
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2017-12-12 19:40:01 +00:00
Michael Tremer
73b2988ae4 pakfire: Drop importing CACert's PGP key
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2017-12-12 19:28:16 +00:00
Matthias Fischer
db9f57143f pakfire - 'functions.pl': fixed typo
Just read this typo in a forum posting. Couldn't resist...

Signed-off-by: Matthias Fischer <matthias.fischer@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2017-12-05 17:03:36 +00:00
Peter Müller
bb6481a820 validate GPG keys by fingerprint
Validate GPG keys by fingerprint and not by 8-bit key-ID.

This makes exploiting bug #11539 harder, but not impossible
and does not affect existing installations.

Signed-off-by: Peter Müller <peter.mueller@link38.eu>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2017-11-13 22:41:21 +00:00