D-Bus API 或 C 库来控制 firewalld

D-Bus API or C library to control firewalld

我正在做一个项目,用 C 语言实现所有内容。作为项目的一部分,我们需要能够控制和配置当前系统的防火墙firewalld

我最近开始研究firewalld,我不太了解它的内部结构。我看过它使用D-Bus,我对D-Bus也不是很了解

我该如何解决这个问题?

是的,您可以通过 D-Bus 向 firewalld 发出命令。我没有检查过,但预计 firewall-cmd 本身是作为 D-Bus 客户端实现的。

D-Bus API 被广泛记录:https://firewalld.org/documentation/man-pages/firewalld.dbus.html。文档应该让您大致了解可以通过 API 完成什么。您可以尝试 D-Bus 调试器 d-feet 无需任何代码即可与 firewalld 交互。

GDBus 绝对是从 C 使用 D-Bus 的最简单方法,但它仍然不是微不足道的,而且 firewalld 相当复杂 API:使用它可能需要一些专业知识(完全取决于您需要做什么) .