我正在做一个项目,用 C 语言实现一切。作为项目的一部分,我们需要能够控制和配置firewalld
当前系统的防火墙。
firewalld
是用 Python 实现的,并且有一个接口可用。但是,我们不想从 C 进行 Python 调用,反之亦然。- 有命令行工具可以配置
firewalld
(例如firewall-cmd
),但我们也不想从 C 中进行此类调用。
我最近开始工作firewalld
,我不太了解它的内部结构。我读过它使用 D-Bus,我对 D-Bus 也不太了解。
- Thomas Woerner 开发了一个 C 库:
libfirewall
. 但是,距离上次提交已经超过一年半,因此没有维护。除此之外libfirewall
,我不知道 C 中的任何防火墙接口。- 我试
libfirewall
了一下。在编译和运行示例时,它给我带来了一些问题,我仍然有问题需要解决。值得继续libfirewall
吗?我应该使用它吗? - 还有其他我不知道的界面吗?
- 我试
- 由于对 D-Bus 缺乏了解,可能是一个幼稚的问题:我想,也许,通过 D-Bus 接口,我可以向 firewalld 发出命令。可以做到吗?(即 D-Bus 是否像那样工作?)我们可以编写一个程序来模仿,比如说
firewall-cmd
,并以相同的方式与 D-Bus 交互并最终允许我们控制 firewalld 吗?- 如果这是可能的,该怎么做以及使用什么?
libdbus
并且GDBus
有相对较好的文档,虽然libdbus
需要大量的努力。他们甚至说“如果你直接使用这个低级 API,你注册会有些痛苦。” 在文档中。在任何情况下,我都需要示例或任何类型的文本来展示它们的用法。
- 如果这是可能的,该怎么做以及使用什么?
我应该如何解决这个问题?