Articles of dbus

系统dbus不允许使用conf文件冲出所有权

我正在尝试创build一个在系统总线上运行的守护程序服务,在这个服务中,发送和接收这个服务的权限应该完全公开给任何人。 (安全不是这项服务的关注)。 当我尝试使用QtDbus(使用PyQt)注册服务时,出现以下错误:由于configuration文件中的安全策略,“Connection”:1.0“不允许拥有服务”org.dbus.arduino“ 。 这个其他堆栈溢出具有相同的错误,但由于某种原因在这种情况下根本没有帮助。 dbus_bus_request_name():不允许连接拥有该服务 。 通常情况下,你应该离开system.conf文件,并在system.d目录中添加你的权限“打出”configuration文件。 我已经这样做了,但似乎没有改变任何东西,无论我如何开放权限。 事实上,我几乎是积极的,不改变任何东西! 这是我的conf文件,因为它现在是正确的。 <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> <busconfig> <policy user="myUser"> <allow own="*"/> <allow own="org.dbus.arduino"/> <allow send_type="method_call" log="true"/> </policy> <policy user="root"> <allow own="*"/> <allow own="org.dbus.arduino"/> <allow send_type="method_call" log="true"/> </policy> <policy context="default"> </policy> </busconfig> 即使我做了这样或那样的事情,它仍然不起作用。 <busconfig> <policy context="default"> <allow own="*"/> <allow own="org.dbus.arduino"/> <allow send_type="method_call" […]

如何用D-Bus获取设备名称?

我在Linux上用C ++开发了一个应用程序,它与蓝牙设备(如蓝牙套接字或扬声器)进行交互。 我使用D-Bus命令来获取配对设备的列表: dbus-send –system –dest=org.bluez –print-reply $BTADAPTER org.bluez.Adapter.ListDevices 它返回: method return sender=:1.0 -> dest=:1.90 reply_serial=2 array [ object path "/org/bluez/489/hci0/dev_00_1F_C5_75_45_5E" object path "/org/bluez/489/hci0/dev_F0_13_C3_00_A1_08" object path "/org/bluez/489/hci0/dev_00_11_12_30_76_21" object path "/org/bluez/489/hci0/dev_00_11_12_30_76_22" object path "/org/bluez/489/hci0/dev_00_11_12_30_76_23" object path "/org/bluez/489/hci0/dev_00_11_12_30_76_24" ] 这是伟大的,但我不仅需要MAC,但也需要设备的名称(如“linvor”或“GT-I9300”)。 请帮助我一个正确的方式来获得这些名字。

暂时防止linuxclosures

我有一个备份脚本,每天在我的linux(Fedora 9)计算机上运行。 如果计算机在备份过程中被closures,备份可能会被损坏,所以我想编写一个小脚本,暂时禁用用户重新启动或closures计算机的能力。 脚本不是不可行的,只是让系统的用户知道备份正在进行,而不应该closures。 我已经看到DBus免费桌面电源pipe理规范的禁止方法: http : //people.freedesktop.org/~hughsient/temp/power-management-spec-0.3.html,但只有在系统闲置时才能防止关机不明确地在用户请求。 有没有一种简单的方法在C / Python / Perl或bash中做到这一点? 更新:为了澄清上面的问题,这是一个多用户的机器,但谁通过插入键盘/鼠标顺序使用它。 我不是在寻找一个能够阻止我以root身份对其进行“黑客攻击”的系统。 但是,当我从Gnome / GDM菜单中selectclosures时,脚本会提醒我(或其他用户)备份仍在运行

如何处理与Python的dbus接口的属性?

我即将开始实施mpris 。 但是目前我不确定如何用python–dbus读/写dbus接口的属性。 有没有这样的例子?

MPRIS + Python(dbus):读写属性

我已经检查过这个链接: 如何用python处理dbus接口的属性 。 但是,只列出一个API …但我不知道该API来自哪里。 我刚开始使用dbus(对此很兴奋,说实话^ __ ^只是不太满意我find的文档),我想知道是否可以获得一些示例代码。 我专门为Rhythmbox使用MPRIS,虽然它应该是相同的。 我知道我可以通过以下方式访问和获取他的方法: import dbus bus = dbus.SessionBus() proxy = bus.get_object('org.mpris.MediaPlayer2.rhythmbox','/org/mpris/MediaPlayer2') player = dbus.Interface(proxy, 'org.mpris.MediaPlayer2.Player') playlists = dbus.Interface(proxy, 'org.mpris.MediaPlayer2.Playlists') tracklist = dbus.Interface(proxy, 'org.mpris.MediaPlayer2.TrackList') 不过,我想知道属性。 一些示例代码就足够了:)谢谢!

Linux:如何检测是USB键盘插入和拔出

有没有任何守护进程/工具,这将触发一些信号/事件时,USB键盘插入和从电脑拔出? 我需要知道在我的程序中,当USB键盘插入和拔出。 任何想法如何做到这一点? 问候,Levon

C中的D-Bus教程与wpa_supplicant进行通信

我试图写一些代码来使用DBUS与wpa_supplicant进行通信。 当我在embedded式系统(ARM)中工作时,我想避免使用Python或GLib。 我想知道我是否愚蠢,因为我真的有这样的感觉,就是没有关于D-Bus的清晰文档。 即使是官方的,我要么find太高的文档,要么使用Glib! 我看过的文档: http : //www.freedesktop.org/wiki/Software/dbus 我发现了一篇关于在C: http : //www.matthew.ath.cx/articles/dbus上使用D-Bus的好文章 但是,这篇文章很老,不够完整! 我也find了c ++ – dbus API,但是在这里,我没有find任何文档! 我一直在挖掘wpa_supplicant和NetworkManager源代码,但这真是一场噩梦! 我一直在研究“低级D-Bus API”,但是这并不能告诉我如何从D-Bus消息中提取string参数! http://dbus.freedesktop.org/doc/api/html/index.html 这里有一些我写的testing代码,但我真的很难提取string值。 对不起,长的源代码,但如果有人想尝试它…我的D-Busconfiguration似乎很好,因为它已经从wpa_supplicant捕获“StateChanged”信号,但不能打印状态: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #include <string.h> #include <dbus/dbus.h> //#include "wpa_supp_dbus.h" /* Content of wpa_supp_dbus.h */ #define WPAS_DBUS_SERVICE "fi.epitest.hostap.WPASupplicant" #define WPAS_DBUS_PATH "/fi/epitest/hostap/WPASupplicant" #define WPAS_DBUS_INTERFACE "fi.epitest.hostap.WPASupplicant" #define WPAS_DBUS_PATH_INTERFACES WPAS_DBUS_PATH […]

作为服务运行时,QtService应用程序无法连接到系统总线

我已经重新编译了用于Windows的集成dbus的 Qt 。 此外,我已经实现了一个QtService应用程序,它在系统总线上注册一个服务和一个对象,如下所示: QDBusConnection::systemBus().registerService("com.mycompany.Configuration"); QDBusConnection::systemBus().registerObject("/com/mycompany/Configuration/MySetting", myObject); 现在,当我使用-e参数(作为常规应用程序运行)运行服务应用程序时,它工作正常,并且dbus-monitor和qdbus –system显示注册的服务和对象。 但是,当我将应用程序作为Windows服务运行时,它不会在系统总线上注册任何内容。 debugging服务给我错误消息 没有连接到D-Bus服务器 当调用registerService(…)和registerObject(…) 。 我已经设置了环境variables: DBUS_SYSTEM_BUS_ADDRESS = autolaunch: DBUS_SYSTEM_BUS_DEFAULT_ADDRESS = autolaunch: 我的system.conf文件: <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> <busconfig> <type>system</type> <fork/> <pidfile>/pid</pidfile> <listen>autolaunch:</listen> <policy context="default"> <allow user="*"/> <deny own="*"/> <deny send_type="method_call"/> <allow send_type="signal"/> <allow send_requested_reply="true" send_type="method_return"/> <allow send_requested_reply="true" send_type="error"/> <allow receive_type="method_call"/> <allow […]

D-Bus相当于Windows

任何人都知道Linux / D-Bus的Windows机制? 谢谢