@@ -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,11 @@ int ftp_init(void)
DBG("");
- conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
+ if (obex_option_system_bus())
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ else
+ conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
+
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,11 @@ int map_init(void)
DBG("");
- conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
+ if (obex_option_system_bus())
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ else
+ conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
+
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,11 @@ int opp_init(void)
DBG("");
- conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
+ if (obex_option_system_bus())
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ else
+ conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
+
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,11 @@ int pbap_init(void)
DBG("");
- conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
+ if (obex_option_system_bus())
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ else
+ conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
+
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,11 @@ struct obc_session *obc_session_create(const char *source,
if (driver == NULL)
return NULL;
- conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
+ if (obex_option_system_bus())
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ else
+ conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
+
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,11 @@ int sync_init(void)
DBG("");
- conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
+ if (obex_option_system_bus())
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ else
+ conn = dbus_bus_get(DBUS_BUS_SESSION, NULL);
+
if (!conn)
return -EIO;
@@ -322,7 +322,10 @@ static gboolean send_backup_dbus_message(const char *oper,
file_size = size ? *size : 0;
- conn = g_dbus_setup_bus(DBUS_BUS_SESSION, NULL, NULL);
+ if (obex_option_system_bus())
+ conn = g_dbus_setup_bus(DBUS_BUS_SYSTEM, NULL, NULL);
+ else
+ conn = g_dbus_setup_bus(DBUS_BUS_SESSION, NULL, NULL);
if (conn == NULL)
return FALSE;
@@ -126,6 +126,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 +165,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 },
};
@@ -172,6 +175,11 @@ gboolean obex_option_auto_accept(void)
return option_autoaccept;
}
+gboolean obex_option_system_bus(void)
+{
+ return option_system_bus;
+}
+
const char *obex_option_root_folder(void)
{
return option_root;
@@ -488,7 +488,13 @@ gboolean manager_init(void)
dbus_error_init(&err);
- connection = g_dbus_setup_bus(DBUS_BUS_SESSION, OBEXD_SERVICE, &err);
+ if (obex_option_system_bus())
+ connection =
+ g_dbus_setup_bus(DBUS_BUS_SYSTEM, OBEXD_SERVICE, &err);
+ else
+ connection =
+ g_dbus_setup_bus(DBUS_BUS_SESSION, OBEXD_SERVICE, &err);
+
if (connection == NULL) {
if (dbus_error_is_set(&err) == TRUE) {
fprintf(stderr, "%s\n", err.message);
@@ -28,3 +28,4 @@ gboolean obex_option_auto_accept(void);
const char *obex_option_root_folder(void);
gboolean obex_option_symlinks(void);
const char *obex_option_capability(void);
+gboolean obex_option_system_bus(void);
@@ -21,10 +21,22 @@
<allow send_interface="org.freedesktop.DBus.ObjectManager"/>
<allow send_interface="org.freedesktop.DBus.Properties"/>
<allow send_interface="org.mpris.MediaPlayer2.Player"/>
+ <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"/>
+ <allow send_destination="org.bluez.obex"/>
</policy>
</busconfig>
From: Damodar Reddy GangiReddy <quic_dgangire@quicinc.com> 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. --- obexd/client/ftp.c | 7 ++++++- obexd/client/map.c | 7 ++++++- obexd/client/opp.c | 7 ++++++- obexd/client/pbap.c | 7 ++++++- obexd/client/session.c | 7 ++++++- obexd/client/sync.c | 7 ++++++- obexd/plugins/pcsuite.c | 5 ++++- obexd/src/main.c | 8 ++++++++ obexd/src/manager.c | 8 +++++++- obexd/src/obexd.h | 1 + src/bluetooth.conf | 12 ++++++++++++ 11 files changed, 68 insertions(+), 8 deletions(-)