我正在一个项目中,用C语言实现一切。作为项目的一部分,我们需要能够控制和配置firewalld
,即当前系统的防火墙。
firewalld
用Python实现,并且提供了一个接口。但是,我们不想从C进行Python调用,反之亦然。 firewalld
(例如firewall-cmd
),但我们也不想从C进行此类调用。我最近开始从事firewalld
的工作,我对其内部并不了解。我读过它使用D-Bus,我对D-Bus也不太了解。
libfirewall
。
但是,自上次提交以来已经过去了一年半,所以它没有得到维护。除了libfirewall
外,我不知道C中有任何防火墙接口。
libfirewall
开了一枪。在编译和运行示例时,这给我带来了一些问题,但仍然有很多问题需要解决。继续libfirewall
是否值得?我应该使用它吗?firewall-cmd
并与D-Bus交互并以相同方式进行交互并最终允许我们控制防火墙的程序吗?
GDBus
需要付出很多努力,但libdbus
和libdbus
的文档还是比较完善的。他们甚至在文档中说“如果您直接使用此低级API,您会感到有些痛苦。” 。无论如何,我都需要示例或任何形式的文本来说明其用法。我应该如何解决这个问题?
答案 0 :(得分:1)
是的,您可以通过D-Bus向防火墙发出命令。我尚未检查,但希望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:使用它可能需要一些专业知识(完全取决于您需要做什么)。