Commit Graph

618 Commits

Author SHA1 Message Date
Mario Limonciello
5ded4f44fe Add support for reading and writing firmware attributes
This support is comprehensive:
 * Client library support
 * Daemon support
 * plugin support
 * Client tool support (with new commands)
2022-07-28 17:30:57 -05:00
Mario Limonciello
17c636686d trivial: libfwupd: move some duplicated code to fwupd-common
Several of the string/integer/time functions are duplicated in multiple
source files for no discernable reason.  Move them into fwupd-common
as private symbols instead.
2022-07-26 20:11:23 +01:00
Richard Hughes
74e9b04b39 trivial: Return a more invalid value if FWUPD_IS_DEVICE() fails
We don't want to return something that's actually the initial value.
2022-07-21 21:27:24 +01:00
Richard Hughes
ac3f7f5521 trivial: Add some checks when adding children and setting the parent 2022-07-21 21:27:24 +01:00
Richard Hughes
62fc515714 Allow loading in emulated host profiles for debugging
This allows us to load sets of different host security attributes
for testing the various front end tools we have now. e.g.

    sudo FWUPD_HOST_EMULATE=thinkpad-p1-iommu.json.gz fwupd

or, using a non-compressed absolute path:

    sudo FWUPD_HOST_EMULATE=/tmp/test/thinkpad-p1-iommu.json fwupd

Data can be created with `./contrib/generate-emulation.py file.json`
and then can be manually modified if required. Running the script on
a file that already exists will just strip out any unneeded data, as
well as piping content into it using stdin.

As a precaution, the org.fwupd.hsi.HostEmulation attribute is added
so we do not ask the user to upload the HSI report. It also allows
the LVFS to ignore any HSI reports with this attribute for clients
that upload HSI reports regardless.

See https://github.com/fwupd/fwupd/discussions/4832
2022-07-18 16:27:59 +01:00
Richard Hughes
7566e56fb5 Add fwupd_device_from_json() for future use 2022-07-18 16:27:59 +01:00
Richard Hughes
62a62f8f0f trivial: Clarify the FwupdRelease::checksum is for the container
In one place we were accidentally setting the contents checksum,
because the LVFS was setting the artifact type of 'binary' for metainfo
export -- which was never going to match on the LVFS.
2022-07-18 16:12:43 +01:00
Richard Hughes
9b9799f9c6 Use the correct protocol member when converting to JSON 2022-07-16 21:43:01 +01:00
Richard Hughes
a5749f4d23 Set the HSI levels in a central place
This means we don't need to worry about changing multiple
implementations if the HSI levels change for a specific ID.

It also means we can fake HSI results in the future without having
to also store the 'correct' level in the input file.
2022-07-15 20:21:22 +01:00
Richard Hughes
7b1204bce0 trivial: Fix outputting the new security attr flags to JSON 2022-07-14 15:43:19 +01:00
Richard Hughes
26e5ecb567 trivial: Add fwupd_security_attr_remove_flag() for future use 2022-07-14 14:48:51 +01:00
Richard Hughes
ae0c3fe38a Add 'action' resolution flags to each FwupdSecurityAttr
We tried to solve this by matching the org.fwupd.hsi AppStream ID, but
in some cases the resolution depends on what actually failed.

Add "the action the user is supposed to do" as flags so that the
front-end can translate this in the appropriate way, for instance,
using a different string for log events and HSI dialogs.
2022-07-14 14:47:44 +01:00
Richard Hughes
1ef23d1006 Add some FwupdSecurityAttr API for future use 2022-07-09 20:58:19 +01:00
Richard Hughes
60a34af164 Upload the report data using the SHA256 hash, falling back to SHA1
The LVFS can match either value.
2022-07-09 14:56:28 +01:00
Richard Hughes
1e6d75a47e Add the HostVendor to the D-Bus interface
This allows us to show it in the same places as the host product.
2022-07-06 16:10:43 +01:00
Richard Hughes
5cf63a0741 trivial: Add some more coverage tests for FwupdRelease 2022-07-01 13:57:18 +01:00
Richard Hughes
5971783634 trivial: Add a missing FwupdDeviceFlags string converter 2022-07-01 13:57:18 +01:00
Richard Hughes
6243e9f62a Add some coverage tests for FwupdRemote 2022-07-01 13:57:18 +01:00
Richard Hughes
358b1e0229 trivial: Add some more tests for FwupdPlugin 2022-07-01 11:25:26 +01:00
Richard Hughes
b1a31dbfae Include the plugin name in the FwupdSecurityAttr GVariant 2022-07-01 10:55:56 +01:00
Richard Hughes
92107e55cd trivial: Allow the device-id property to be set on a FwupdRequest 2022-07-01 10:55:56 +01:00
Richard Hughes
2dc029aa6a Fix setting the device ID on the FwupdRequest 2022-07-01 10:55:56 +01:00
Richard Hughes
b2284bf99e Increase the coverage of the self tests 2022-07-01 10:55:56 +01:00
Gaël PORTAY
299b42fe96 trivial: Make meson.build indentation consistent 2022-06-21 03:27:38 -04:00
Gaël PORTAY
9b969de718 Save serial number and instance-ids when trusted
See commit e3016602f8.
2022-06-20 12:57:40 -04:00
Richard Hughes
8b3f7a1a52 trivial: Add some self tests for fwupd_device_incorporate()
This was based on a hunch that was proved wrong, but the tests still
seem useful anyway.
2022-06-14 21:01:57 +01:00
Richard Hughes
3e0a4dc1c3 Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
Richard Hughes
ac03f02f4c trivial: gi-docgenize some of the function comments 2022-06-11 21:26:46 +01:00
Richard Hughes
15add57746 Do not run some tests using -Db_sanitize=address 2022-05-24 08:24:24 +01:00
Gaël PORTAY
f862b8c9f3 trivial: Fix typos 2022-05-21 13:49:36 -04:00
Richard Hughes
519e80b1ee Allow clients to opt-in to showing updates with user-solvable problems
When typing 'fwupdmgr get-updates' show the updates that *could* be
installed if the problem was resolved.

Do not unconditionally do this, as some clients such as gnome-software
assume that all updates returned by GetUpdates() are updatable with
Install() -- and in a GUI we only want to show the updates we can apply
*right now*. When the problem is removed (e.g. AC power is connected)
the GUI client will notify the user as required, unlike a CLI tool.

Fixes https://github.com/fwupd/fwupd/issues/4629
2022-05-20 13:20:33 +01:00
Richard Hughes
8ebad4ea75 Specify an enumerated problem when inhibiting devices
This allows us to make smarter policy decisions in the future on when
to show unavailable updates. It also means we can show translated
text in the frond-end clients.

Only problems the user can "fix" are enumerated. For example, opening
the laptop lid, or charging the device battery.
2022-05-19 13:09:03 -05:00
Richard Hughes
c9dd8cb256 trivial: Make the FwupdClient host properties RW
We'll need this for future functionality when using client in fwupdtool.
2022-05-18 15:03:00 -05:00
Richard Hughes
31c1d03ebc trivial: Fix a gi-docgen warning with the latest version 2022-05-18 13:20:47 +01:00
Richard Hughes
91f23d67ab Export the system battery levels on the D-Bus interface 2022-05-18 07:16:07 +01:00
Richard Hughes
679628c091 Move the battery attributes down into libfwupd
This allows us to show the current value and the threshold on the CLI
and in tools like gnome-firmware.
2022-05-18 07:16:07 +01:00
Richard Hughes
7b806dbb2a Pass the socket address when setting up the daemon 2022-05-14 20:47:50 +01:00
Richard Hughes
a489ec13bb trivial: Automatically set the socket address on Windows 2022-05-11 10:11:06 -05:00
Richard Hughes
418d883ea7 Allow specifying a non-file D-Bus transport
e.g. on Windows you can do:

    FWUPD_DBUS_SOCKET=tcp:host=localhost,port=12345
2022-05-11 10:11:06 -05:00
Mario Limonciello
53e3ae340b trivial: libfwupd: fix an unused variable in Win32 2022-05-10 14:52:24 -05:00
Richard Hughes
c56e0ba4cc Use the native CA store on Windows when possible 2022-05-10 13:09:44 +01:00
Richard Hughes
47f887f100 trivial: Do not connect the daemon to download files
There's nothing we need as all the useragent data is client-side.
2022-05-10 12:56:43 +01:00
Robert Ancell
a8dd34c711 Fix more copy-paste documentation errors 2022-05-08 20:16:37 -05:00
Robert Ancell
cd437175b4 Fix copy-paste error in documentation for FwupdDevice::version_format 2022-05-08 16:44:41 -05:00
Mario Limonciello
a9f92dcb5e trivial: libfwupd: don't try to read /etc/os-release on windows 2022-05-05 15:38:43 -05:00
Richard Hughes
31907e6863 Add a sanity check when trying to refresh a non-download remote 2022-04-25 15:47:20 +01:00
Richard Hughes
7eca2b2b16 Export the version_lowest_raw value correctly 2022-04-23 10:28:16 +01:00
Richard Hughes
3b0d1a6c6b trivial: Ignore the return value of curl_easy_setopt() in most cases
This makes Coverity happy.
2022-04-13 15:08:12 +01:00
Richard Hughes
0b7af7d54b trivial: Ignore the return value of setenv() in most cases
This makes Coverity happy.
2022-04-13 15:08:12 +01:00
Mario Limonciello
7526d1b183 Add a new attribute for fused platform
Fused parts are unable to be tampered with.
2022-04-12 10:39:02 -05:00