#readiness #dbus #notifications

app dbus-waiter

实现dbus服务的就绪通知

1 个不稳定版本

0.2.0 2023年8月9日

#2#readiness

ISC 许可证

13KB
75

dbus-waiter

dbus-waiter 是一个小型程序,用于实现采用 D-Bus 名称的服务的就绪检查。

用法

dbus-waiter --notify-fd FD --bus-name BUS_NAME PROG...

以下示例执行 xdg-desktop-portal,并在执行进程接管名为 org.freedesktop.portal.Desktop 的总线时,在文件描述符 3 上发送就绪通知

dbus-waiter \
    --notify-fd 3 \
    --bus-name org.freedesktop.portal.Desktop \
    /usr/libexec/xdg-desktop-portal

实现的就绪通知机制在 systemds6 上都有效。

如果没有文件描述符与 --notify-fd 的值匹配,输出错误将包括

Error: Invalid argument (os error 22)

实现

dbus-waiter 首先进行分叉。子进程监听 NameOwnerChanged 事件,事件发生在 BUS_NAME 总线。父进程 exec 进入 PROG

BUS_NAME 有新的所有者时,如果所有者是父进程,则子进程将发送就绪通知并退出。

如果另一个进程接管了 BUS_NAME,则子进程将立即退出。在这种错误场景中,就绪检查预计会超时,并且管理程序 应该 杀死父进程。

注意事项

  • 基于 PID 重用的攻击 理论上 是可能的,尽管攻击者需要具有在指定总线上获取 BUS_NAME 的权限。

另请参阅

许可证

本项目采用 ISC 许可证。有关详细信息,请参阅许可证。

依赖项

~12-25MB
~370K SLoC