diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2008-05-01 13:52:26 +0000 |
---|---|---|
committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2008-05-01 13:52:26 +0000 |
commit | 9491a544f622e40453265c30f24ce44a61440cc1 (patch) | |
tree | 2c00a3c63c9f021444a6b89f6f22369bf3a3073f /hcid/plugin.c | |
parent | 3f8860031e5241fbb145fdd71e1a46c2c28f393e (diff) |
Moving authorization code to dbus-service.c
Diffstat (limited to 'hcid/plugin.c')
-rw-r--r-- | hcid/plugin.c | 116 |
1 files changed, 3 insertions, 113 deletions
diff --git a/hcid/plugin.c b/hcid/plugin.c index 6cc54de1..2a8f4375 100644 --- a/hcid/plugin.c +++ b/hcid/plugin.c @@ -33,18 +33,12 @@ #include <errno.h> #include <bluetooth/bluetooth.h> -#include <bluetooth/hci.h> -#include <bluetooth/hci_lib.h> -#include <dbus/dbus.h> -#include "dbus-helper.h" +#include "dbus.h" +#include "logging.h" + #include "dbus-service.h" -#include "adapter.h" -#include "dbus-hci.h" -#include "agent.h" #include "plugin.h" -#include "device.h" -#include "logging.h" static GSList *plugins = NULL; @@ -53,11 +47,6 @@ struct bluetooth_plugin { struct bluetooth_plugin_desc *desc; }; -struct plugin_auth { - plugin_auth_cb cb; - void *user_data; -}; - static gboolean add_plugin(GModule *module, struct bluetooth_plugin_desc *desc) { struct bluetooth_plugin *plugin; @@ -162,102 +151,3 @@ void plugin_cleanup(void) g_slist_free(plugins); } - -static struct adapter *ba2adapter(bdaddr_t *src) -{ - DBusConnection *conn = get_dbus_connection(); - struct adapter *adapter = NULL; - char address[18], path[6]; - int dev_id; - - ba2str(src, address); - dev_id = hci_devid(address); - if (dev_id < 0) - return NULL; - - /* FIXME: id2adapter? Create a list of adapters? */ - snprintf(path, sizeof(path), "/hci%d", dev_id); - if (dbus_connection_get_object_user_data(conn, - path, (void *) &adapter) == FALSE) - return NULL; - - return adapter; -} - -static void agent_auth_cb(struct agent *agent, DBusError *derr, void *user_data) -{ - struct plugin_auth *auth = user_data; - - auth->cb(derr, auth->user_data); - - g_free(auth); -} - -int plugin_req_auth(bdaddr_t *src, bdaddr_t *dst, - const char *uuid, plugin_auth_cb cb, void *user_data) -{ - struct plugin_auth *auth; - struct adapter *adapter; - struct device *device; - struct agent *agent; - char address[18]; - - adapter = ba2adapter(src); - if (!adapter) - return -EPERM; - - /* Device connected? */ - if (!g_slist_find_custom(adapter->active_conn, - dst, active_conn_find_by_bdaddr)) - return -ENOTCONN; - - ba2str(dst, address); - device = adapter_find_device(adapter, address); - if (!device) - return -EPERM; - - if (!search_service_by_uuid(uuid)) - return -EPERM; - - /* FIXME: Missing check trusted file entries */ - - agent = (device->agent ? : adapter->agent); - if (!agent) - return -EPERM; - - auth = g_try_new0(struct plugin_auth, 1); - if (!auth) - return -ENOMEM; - - auth->cb = cb; - auth->user_data = user_data; - - return agent_authorize(agent, device->path, uuid, agent_auth_cb, auth); -} - -int plugin_cancel_auth(bdaddr_t *src) -{ - struct adapter *adapter = ba2adapter(src); - struct device *device; - struct agent *agent; - char address[18]; - - if (!adapter) - return -EPERM; - - ba2str(src, address); - device = adapter_find_device(adapter, address); - if (!device) - return -EPERM; - - /* - * FIXME: Cancel fails if authorization is requested to adapter's - * agent and in the meanwhile CreatePairedDevice is called. - */ - - agent = (device->agent ? : adapter->agent); - if (!agent) - return -EPERM; - - return agent_cancel(agent); -} |