mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-11-23 04:04:36 +08:00
obexd: Add system bus support for obexd
Currently obexd uses session bus. Distros where session bus is not supported and still obex profiles are required in that case use system bus instead of session bus which can be configured at run time. An Command line option has been added to achieve it. { "system-bus", 's', 0, G_OPTION_ARG_NONE, &option_system_bus, "Use System bus "} we can use option obexd -s to use system bus.
This commit is contained in:
parent
bae6c32940
commit
002ee180b1
@ -39,6 +39,10 @@ if DATAFILES
|
||||
dbusdir = $(DBUS_CONFDIR)/dbus-1/system.d
|
||||
dbus_DATA = src/bluetooth.conf
|
||||
|
||||
if OBEX
|
||||
dbus_DATA += obexd/src/obex.conf
|
||||
endif
|
||||
|
||||
conf_DATA = src/main.conf
|
||||
conf_DATA += profiles/input/input.conf
|
||||
conf_DATA += profiles/network/network.conf
|
||||
@ -421,7 +425,7 @@ manual_pages += doc/org.bluez.obex.Client.5 doc/org.bluez.obex.Session.5 \
|
||||
|
||||
EXTRA_DIST += src/genbuiltin src/bluetooth.conf \
|
||||
src/main.conf profiles/network/network.conf \
|
||||
profiles/input/input.conf
|
||||
profiles/input/input.conf obexd/src/obex.conf
|
||||
|
||||
test_scripts =
|
||||
unit_tests =
|
||||
|
@ -17,6 +17,8 @@
|
||||
#include "gobex/gobex.h"
|
||||
|
||||
#include "obexd/src/log.h"
|
||||
#include "obexd/src/obexd.h"
|
||||
|
||||
#include "transfer.h"
|
||||
#include "session.h"
|
||||
#include "driver.h"
|
||||
@ -413,7 +415,7 @@ int bip_init(void)
|
||||
|
||||
DBG("");
|
||||
|
||||
conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
|
||||
conn = obex_get_dbus_connection();
|
||||
if (!conn)
|
||||
return -EIO;
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "gdbus/gdbus.h"
|
||||
|
||||
#include "obexd/src/log.h"
|
||||
#include "obexd/src/obexd.h"
|
||||
#include "transfer.h"
|
||||
#include "session.h"
|
||||
#include "driver.h"
|
||||
@ -463,7 +464,7 @@ int ftp_init(void)
|
||||
|
||||
DBG("");
|
||||
|
||||
conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
|
||||
conn = obex_get_dbus_connection();
|
||||
if (!conn)
|
||||
return -EIO;
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "gdbus/gdbus.h"
|
||||
|
||||
#include "obexd/src/log.h"
|
||||
#include "obexd/src/obexd.h"
|
||||
#include "obexd/src/map_ap.h"
|
||||
#include "map-event.h"
|
||||
|
||||
@ -2063,7 +2064,7 @@ int map_init(void)
|
||||
|
||||
DBG("");
|
||||
|
||||
conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
|
||||
conn = obex_get_dbus_connection();
|
||||
if (!conn)
|
||||
return -EIO;
|
||||
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "gdbus/gdbus.h"
|
||||
|
||||
#include "obexd/src/log.h"
|
||||
#include "obexd/src/obexd.h"
|
||||
|
||||
#include "transfer.h"
|
||||
#include "session.h"
|
||||
@ -178,7 +179,7 @@ int opp_init(void)
|
||||
|
||||
DBG("");
|
||||
|
||||
conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
|
||||
conn = obex_get_dbus_connection();
|
||||
if (!conn)
|
||||
return -EIO;
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "gdbus/gdbus.h"
|
||||
|
||||
#include "obexd/src/log.h"
|
||||
#include "obexd/src/obexd.h"
|
||||
|
||||
#include "transfer.h"
|
||||
#include "session.h"
|
||||
@ -1303,7 +1304,7 @@ int pbap_init(void)
|
||||
|
||||
DBG("");
|
||||
|
||||
conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
|
||||
conn = obex_get_dbus_connection();
|
||||
if (!conn)
|
||||
return -EIO;
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "gobex/gobex.h"
|
||||
|
||||
#include "obexd/src/log.h"
|
||||
#include "obexd/src/obexd.h"
|
||||
#include "transfer.h"
|
||||
#include "session.h"
|
||||
#include "driver.h"
|
||||
@ -591,7 +592,7 @@ struct obc_session *obc_session_create(const char *source,
|
||||
if (driver == NULL)
|
||||
return NULL;
|
||||
|
||||
conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
|
||||
conn = obex_get_dbus_connection();
|
||||
if (conn == NULL)
|
||||
return NULL;
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "gdbus/gdbus.h"
|
||||
|
||||
#include "obexd/src/log.h"
|
||||
#include "obexd/src/obexd.h"
|
||||
|
||||
#include "transfer.h"
|
||||
#include "session.h"
|
||||
@ -224,7 +225,7 @@ int sync_init(void)
|
||||
|
||||
DBG("");
|
||||
|
||||
conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
|
||||
conn = obex_get_dbus_connection();
|
||||
if (!conn)
|
||||
return -EIO;
|
||||
|
||||
|
@ -322,7 +322,7 @@ static gboolean send_backup_dbus_message(const char *oper,
|
||||
|
||||
file_size = size ? *size : 0;
|
||||
|
||||
conn = g_dbus_setup_bus(DBUS_BUS_SESSION, NULL, NULL);
|
||||
conn = obex_setup_dbus_connection(NULL, NULL);
|
||||
|
||||
if (conn == NULL)
|
||||
return FALSE;
|
||||
|
@ -41,6 +41,8 @@
|
||||
#define DEFAULT_CAP_FILE CONFIGDIR "/capability.xml"
|
||||
|
||||
static GMainLoop *main_loop = NULL;
|
||||
static DBusConnection *connection;
|
||||
|
||||
|
||||
static gboolean signal_handler(GIOChannel *channel, GIOCondition cond,
|
||||
gpointer user_data)
|
||||
@ -126,6 +128,7 @@ static char *option_noplugin = NULL;
|
||||
|
||||
static gboolean option_autoaccept = FALSE;
|
||||
static gboolean option_symlinks = FALSE;
|
||||
static gboolean option_system_bus = FALSE;
|
||||
|
||||
static gboolean parse_debug(const char *key, const char *value,
|
||||
gpointer user_data, GError **error)
|
||||
@ -164,6 +167,8 @@ static const GOptionEntry options[] = {
|
||||
"scripts", "FILE" },
|
||||
{ "auto-accept", 'a', 0, G_OPTION_ARG_NONE, &option_autoaccept,
|
||||
"Automatically accept push requests" },
|
||||
{ "system-bus", 's', 0, G_OPTION_ARG_NONE, &option_system_bus,
|
||||
"Use System bus "},
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
@ -227,6 +232,27 @@ static gboolean root_folder_setup(char *root, char *root_setup)
|
||||
return is_dir(root);
|
||||
}
|
||||
|
||||
DBusConnection *obex_get_dbus_connection(void)
|
||||
{
|
||||
if (connection)
|
||||
return dbus_connection_ref(connection);
|
||||
|
||||
connection = dbus_bus_get(option_system_bus ?
|
||||
DBUS_BUS_SYSTEM : DBUS_BUS_SESSION, NULL);
|
||||
|
||||
return connection;
|
||||
}
|
||||
|
||||
DBusConnection *obex_setup_dbus_connection(const char *name,
|
||||
DBusError *error)
|
||||
{
|
||||
connection = g_dbus_setup_bus(option_system_bus ?
|
||||
DBUS_BUS_SYSTEM : DBUS_BUS_SESSION,
|
||||
name, error);
|
||||
|
||||
return connection;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
GOptionContext *context;
|
||||
|
@ -488,7 +488,7 @@ gboolean manager_init(void)
|
||||
|
||||
dbus_error_init(&err);
|
||||
|
||||
connection = g_dbus_setup_bus(DBUS_BUS_SESSION, OBEXD_SERVICE, &err);
|
||||
connection = obex_setup_dbus_connection(OBEXD_SERVICE, &err);
|
||||
if (connection == NULL) {
|
||||
if (dbus_error_is_set(&err) == TRUE) {
|
||||
fprintf(stderr, "%s\n", err.message);
|
||||
|
28
obexd/src/obex.conf
Normal file
28
obexd/src/obex.conf
Normal file
@ -0,0 +1,28 @@
|
||||
<!-- This configuration file specifies the required security policies
|
||||
for Bluetooth core daemon to work. -->
|
||||
|
||||
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
|
||||
<busconfig>
|
||||
|
||||
<!-- ../system.conf have denied everything, so we just punch some holes -->
|
||||
|
||||
<policy user="root">
|
||||
<allow own="org.bluez.obex"/>
|
||||
<allow send_destination="org.bluez.obex"/>
|
||||
<allow send_interface="org.bluez.obex.Agent1"/>
|
||||
<allow send_interface="org.bluez.obex.Client1"/>
|
||||
<allow send_interface="org.bluez.obex.Session1"/>
|
||||
<allow send_interface="org.bluez.obex.Transfer1"/>
|
||||
<allow send_interface="org.bluez.obex.ObjectPush1"/>
|
||||
<allow send_interface="org.bluez.obex.PhonebookAccess1"/>
|
||||
<allow send_interface="org.bluez.obex.Synchronization1"/>
|
||||
<allow send_interface="org.bluez.obex.MessageAccess1"/>
|
||||
<allow send_interface="org.bluez.obex.Message1"/>
|
||||
</policy>
|
||||
|
||||
<policy context="default">
|
||||
<allow send_destination="org.bluez.obex"/>
|
||||
</policy>
|
||||
|
||||
</busconfig>
|
@ -8,6 +8,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <dbus/dbus.h>
|
||||
|
||||
#define OBEX_OPP (1 << 1)
|
||||
#define OBEX_FTP (1 << 2)
|
||||
#define OBEX_BIP (1 << 3)
|
||||
@ -28,3 +30,6 @@ gboolean obex_option_auto_accept(void);
|
||||
const char *obex_option_root_folder(void);
|
||||
gboolean obex_option_symlinks(void);
|
||||
const char *obex_option_capability(void);
|
||||
DBusConnection *obex_get_dbus_connection(void);
|
||||
DBusConnection *obex_setup_dbus_connection(const char *name,
|
||||
DBusError *error);
|
||||
|
Loading…
Reference in New Issue
Block a user