mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-13 21:35:02 +00:00
Export the salted machine ID as a daemon property
This commit is contained in:
parent
a45994cb4a
commit
0917fb6aec
@ -41,6 +41,7 @@ typedef struct {
|
|||||||
guint percentage;
|
guint percentage;
|
||||||
gchar *daemon_version;
|
gchar *daemon_version;
|
||||||
gchar *host_product;
|
gchar *host_product;
|
||||||
|
gchar *host_machine_id;
|
||||||
GDBusConnection *conn;
|
GDBusConnection *conn;
|
||||||
GDBusProxy *proxy;
|
GDBusProxy *proxy;
|
||||||
} FwupdClientPrivate;
|
} FwupdClientPrivate;
|
||||||
@ -61,6 +62,7 @@ enum {
|
|||||||
PROP_DAEMON_VERSION,
|
PROP_DAEMON_VERSION,
|
||||||
PROP_TAINTED,
|
PROP_TAINTED,
|
||||||
PROP_HOST_PRODUCT,
|
PROP_HOST_PRODUCT,
|
||||||
|
PROP_HOST_MACHINE_ID,
|
||||||
PROP_LAST
|
PROP_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -113,6 +115,15 @@ fwupd_client_set_host_product (FwupdClient *client, const gchar *host_product)
|
|||||||
g_object_notify (G_OBJECT (client), "host-product");
|
g_object_notify (G_OBJECT (client), "host-product");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
fwupd_client_set_host_machine_id (FwupdClient *client, const gchar *host_machine_id)
|
||||||
|
{
|
||||||
|
FwupdClientPrivate *priv = GET_PRIVATE (client);
|
||||||
|
g_free (priv->host_machine_id);
|
||||||
|
priv->host_machine_id = g_strdup (host_machine_id);
|
||||||
|
g_object_notify (G_OBJECT (client), "host-machine-id");
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
fwupd_client_set_daemon_version (FwupdClient *client, const gchar *daemon_version)
|
fwupd_client_set_daemon_version (FwupdClient *client, const gchar *daemon_version)
|
||||||
{
|
{
|
||||||
@ -172,6 +183,12 @@ fwupd_client_properties_changed_cb (GDBusProxy *proxy,
|
|||||||
if (val != NULL)
|
if (val != NULL)
|
||||||
fwupd_client_set_host_product (client, g_variant_get_string (val, NULL));
|
fwupd_client_set_host_product (client, g_variant_get_string (val, NULL));
|
||||||
}
|
}
|
||||||
|
if (g_variant_dict_contains (dict, "HostMachineId")) {
|
||||||
|
g_autoptr(GVariant) val = NULL;
|
||||||
|
val = g_dbus_proxy_get_cached_property (proxy, "HostMachineId");
|
||||||
|
if (val != NULL)
|
||||||
|
fwupd_client_set_host_machine_id (client, g_variant_get_string (val, NULL));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -269,6 +286,9 @@ fwupd_client_connect (FwupdClient *client, GCancellable *cancellable, GError **e
|
|||||||
val = g_dbus_proxy_get_cached_property (priv->proxy, "HostProduct");
|
val = g_dbus_proxy_get_cached_property (priv->proxy, "HostProduct");
|
||||||
if (val != NULL)
|
if (val != NULL)
|
||||||
fwupd_client_set_host_product (client, g_variant_get_string (val, NULL));
|
fwupd_client_set_host_product (client, g_variant_get_string (val, NULL));
|
||||||
|
val = g_dbus_proxy_get_cached_property (priv->proxy, "HostMachineId");
|
||||||
|
if (val != NULL)
|
||||||
|
fwupd_client_set_host_machine_id (client, g_variant_get_string (val, NULL));
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -1189,6 +1209,24 @@ fwupd_client_get_host_product (FwupdClient *client)
|
|||||||
return priv->host_product;
|
return priv->host_product;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fwupd_client_get_host_machine_id:
|
||||||
|
* @client: A #FwupdClient
|
||||||
|
*
|
||||||
|
* Gets the string that represents the host machine ID
|
||||||
|
*
|
||||||
|
* Returns: a string, or %NULL for unknown.
|
||||||
|
*
|
||||||
|
* Since: 1.3.2
|
||||||
|
**/
|
||||||
|
const gchar *
|
||||||
|
fwupd_client_get_host_machine_id (FwupdClient *client)
|
||||||
|
{
|
||||||
|
FwupdClientPrivate *priv = GET_PRIVATE (client);
|
||||||
|
g_return_val_if_fail (FWUPD_IS_CLIENT (client), FALSE);
|
||||||
|
return priv->host_machine_id;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fwupd_client_get_status:
|
* fwupd_client_get_status:
|
||||||
* @client: A #FwupdClient
|
* @client: A #FwupdClient
|
||||||
@ -1714,6 +1752,9 @@ fwupd_client_get_property (GObject *object, guint prop_id,
|
|||||||
case PROP_HOST_PRODUCT:
|
case PROP_HOST_PRODUCT:
|
||||||
g_value_set_string (value, priv->host_product);
|
g_value_set_string (value, priv->host_product);
|
||||||
break;
|
break;
|
||||||
|
case PROP_HOST_MACHINE_ID:
|
||||||
|
g_value_set_string (value, priv->host_machine_id);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -1890,6 +1931,16 @@ fwupd_client_class_init (FwupdClientClass *klass)
|
|||||||
NULL, G_PARAM_READABLE | G_PARAM_STATIC_NAME);
|
NULL, G_PARAM_READABLE | G_PARAM_STATIC_NAME);
|
||||||
g_object_class_install_property (object_class, PROP_HOST_PRODUCT, pspec);
|
g_object_class_install_property (object_class, PROP_HOST_PRODUCT, pspec);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FwupdClient:host-machine-id:
|
||||||
|
*
|
||||||
|
* The host machine-id string
|
||||||
|
*
|
||||||
|
* Since: 1.3.2
|
||||||
|
*/
|
||||||
|
pspec = g_param_spec_string ("host-machine-id", NULL, NULL,
|
||||||
|
NULL, G_PARAM_READABLE | G_PARAM_STATIC_NAME);
|
||||||
|
g_object_class_install_property (object_class, PROP_HOST_MACHINE_ID, pspec);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1905,6 +1956,7 @@ fwupd_client_finalize (GObject *object)
|
|||||||
|
|
||||||
g_free (priv->daemon_version);
|
g_free (priv->daemon_version);
|
||||||
g_free (priv->host_product);
|
g_free (priv->host_product);
|
||||||
|
g_free (priv->host_machine_id);
|
||||||
if (priv->conn != NULL)
|
if (priv->conn != NULL)
|
||||||
g_object_unref (priv->conn);
|
g_object_unref (priv->conn);
|
||||||
if (priv->proxy != NULL)
|
if (priv->proxy != NULL)
|
||||||
|
@ -128,6 +128,7 @@ gboolean fwupd_client_get_tainted (FwupdClient *client);
|
|||||||
guint fwupd_client_get_percentage (FwupdClient *client);
|
guint fwupd_client_get_percentage (FwupdClient *client);
|
||||||
const gchar *fwupd_client_get_daemon_version (FwupdClient *client);
|
const gchar *fwupd_client_get_daemon_version (FwupdClient *client);
|
||||||
const gchar *fwupd_client_get_host_product (FwupdClient *client);
|
const gchar *fwupd_client_get_host_product (FwupdClient *client);
|
||||||
|
const gchar *fwupd_client_get_host_machine_id (FwupdClient *client);
|
||||||
|
|
||||||
GPtrArray *fwupd_client_get_remotes (FwupdClient *client,
|
GPtrArray *fwupd_client_get_remotes (FwupdClient *client,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
|
@ -382,6 +382,7 @@ LIBFWUPD_1.3.1 {
|
|||||||
|
|
||||||
LIBFWUPD_1.3.2 {
|
LIBFWUPD_1.3.2 {
|
||||||
global:
|
global:
|
||||||
|
fwupd_client_get_host_machine_id;
|
||||||
fwupd_release_add_issue;
|
fwupd_release_add_issue;
|
||||||
fwupd_release_get_issues;
|
fwupd_release_get_issues;
|
||||||
local: *;
|
local: *;
|
||||||
|
@ -77,6 +77,7 @@ struct _FuEngine
|
|||||||
GHashTable *runtime_versions;
|
GHashTable *runtime_versions;
|
||||||
GHashTable *compile_versions;
|
GHashTable *compile_versions;
|
||||||
GHashTable *approved_firmware;
|
GHashTable *approved_firmware;
|
||||||
|
gchar *host_machine_id;
|
||||||
gboolean loaded;
|
gboolean loaded;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4160,6 +4161,13 @@ fu_engine_get_host_product (FuEngine *self)
|
|||||||
return fu_hwids_get_value (self->hwids, FU_HWIDS_KEY_PRODUCT_NAME);
|
return fu_hwids_get_value (self->hwids, FU_HWIDS_KEY_PRODUCT_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const gchar *
|
||||||
|
fu_engine_get_host_machine_id (FuEngine *self)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (FU_IS_ENGINE (self), NULL);
|
||||||
|
return self->host_machine_id;
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
fu_engine_load_plugins (FuEngine *self, GError **error)
|
fu_engine_load_plugins (FuEngine *self, GError **error)
|
||||||
{
|
{
|
||||||
@ -4573,6 +4581,11 @@ fu_engine_load (FuEngine *self, FuEngineLoadFlags flags, GError **error)
|
|||||||
if (self->loaded)
|
if (self->loaded)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
/* cache machine ID so we can use it from a sandboxed app */
|
||||||
|
self->host_machine_id = fwupd_build_machine_id ("fwupd", error);
|
||||||
|
if (self->host_machine_id == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
/* read config file */
|
/* read config file */
|
||||||
if (flags & FU_ENGINE_LOAD_FLAG_READONLY_FS)
|
if (flags & FU_ENGINE_LOAD_FLAG_READONLY_FS)
|
||||||
config_flags |= FU_CONFIG_LOAD_FLAG_READONLY_FS;
|
config_flags |= FU_CONFIG_LOAD_FLAG_READONLY_FS;
|
||||||
@ -4820,6 +4833,7 @@ fu_engine_finalize (GObject *obj)
|
|||||||
if (self->coldplug_id != 0)
|
if (self->coldplug_id != 0)
|
||||||
g_source_remove (self->coldplug_id);
|
g_source_remove (self->coldplug_id);
|
||||||
|
|
||||||
|
g_free (self->host_machine_id);
|
||||||
g_object_unref (self->idle);
|
g_object_unref (self->idle);
|
||||||
g_object_unref (self->config);
|
g_object_unref (self->config);
|
||||||
g_object_unref (self->smbios);
|
g_object_unref (self->smbios);
|
||||||
|
@ -49,6 +49,7 @@ gboolean fu_engine_load_plugins (FuEngine *self,
|
|||||||
GError **error);
|
GError **error);
|
||||||
gboolean fu_engine_get_tainted (FuEngine *self);
|
gboolean fu_engine_get_tainted (FuEngine *self);
|
||||||
const gchar *fu_engine_get_host_product (FuEngine *self);
|
const gchar *fu_engine_get_host_product (FuEngine *self);
|
||||||
|
const gchar *fu_engine_get_host_machine_id (FuEngine *self);
|
||||||
FwupdStatus fu_engine_get_status (FuEngine *self);
|
FwupdStatus fu_engine_get_status (FuEngine *self);
|
||||||
XbSilo *fu_engine_get_silo_from_blob (FuEngine *self,
|
XbSilo *fu_engine_get_silo_from_blob (FuEngine *self,
|
||||||
GBytes *blob_cab,
|
GBytes *blob_cab,
|
||||||
|
@ -1366,6 +1366,9 @@ fu_main_daemon_get_property (GDBusConnection *connection_, const gchar *sender,
|
|||||||
if (g_strcmp0 (property_name, "HostProduct") == 0)
|
if (g_strcmp0 (property_name, "HostProduct") == 0)
|
||||||
return g_variant_new_string (fu_engine_get_host_product (priv->engine));
|
return g_variant_new_string (fu_engine_get_host_product (priv->engine));
|
||||||
|
|
||||||
|
if (g_strcmp0 (property_name, "HostMachineId") == 0)
|
||||||
|
return g_variant_new_string (fu_engine_get_host_machine_id (priv->engine));
|
||||||
|
|
||||||
/* return an error */
|
/* return an error */
|
||||||
g_set_error (error,
|
g_set_error (error,
|
||||||
G_DBUS_ERROR,
|
G_DBUS_ERROR,
|
||||||
|
@ -33,6 +33,17 @@
|
|||||||
</doc:doc>
|
</doc:doc>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
<!--***********************************************************-->
|
||||||
|
<property name='HostMachineId' type='s' access='read'>
|
||||||
|
<doc:doc>
|
||||||
|
<doc:description>
|
||||||
|
<doc:para>
|
||||||
|
The machine ID for the host.
|
||||||
|
</doc:para>
|
||||||
|
</doc:description>
|
||||||
|
</doc:doc>
|
||||||
|
</property>
|
||||||
|
|
||||||
<!--***********************************************************-->
|
<!--***********************************************************-->
|
||||||
<property name='Tainted' type='b' access='read'>
|
<property name='Tainted' type='b' access='read'>
|
||||||
<doc:doc>
|
<doc:doc>
|
||||||
|
Loading…
Reference in New Issue
Block a user