gpt4 book ai didi

c - 用于控制firewalld的D-Bus API或C库

转载 作者:行者123 更新时间:2023-11-30 14:46:40 25 4
gpt4 key购买 nike

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

  • firewalld是用Python实现的,并且有一个接口(interface)可用。但是,我们不想从 C 进行 Python 调用,反之亦然。
  • 有一些命令行工具可以配置 firewalld(例如 firewall-cmd),但我们也不想从 C 进行此类调用。

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

  • 有一个由 Thomas Woerner 开发的 C 库:libfirewall 。然而,距离上次提交已经过去一年半多了,所以它没有得到维护。除了libfirewall之外,我不知道C中的任何firewalld接口(interface)。
    • 我尝试了libfirewall。在编译和运行示例时,它给我带来了一些问题,而且我仍然有问题需要解决。是否值得继续使用libfirewall?我应该使用它吗?
    • 还有其他我不知道的界面吗?
  • 由于缺乏对 D-Bus 的了解,可能是天真的问题:我想,也许通过 D-Bus 接口(interface),我可以向防火墙发出命令。能做到吗? (即 D-Bus 是这样工作的吗?)我们可以编写一个程序来模仿,例如 firewall-cmd,并以相同的方式与 D-Bus 交互,最后允许我们控制 Firewalld ?
    • 如果可以的话,该怎么做以及使用什么? libdbus和 GDBus 具有相对较好的文档,尽管 libdbus 需要大量的努力。他们甚至在文档中说“如果您直接使用这个低级 API,您将承受一些痛苦。”。无论如何,我都需要示例或任何类型的文本来演示其用法。

我应该如何解决这个问题?

最佳答案

是的,您可以通过 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:使用它可能需要一些专业知识(完全取决于您需要做什么)。

关于c - 用于控制firewalld的D-Bus API或C库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52048051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com