【发布时间】:2018-08-27 23:11:13
【问题描述】:
我正在做一个项目,用 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,你注册会很痛苦。”。在任何情况下,我都需要示例或任何类型的文本来展示它们的用法。
- 如果可以,该怎么做以及使用什么?
我应该如何解决这个问题?
【问题讨论】:
标签: c embedded-linux dbus gdbus firewalld