Moblin应用程序设置建议

moblin 2009-05-12 04:56:02
加精
要求

我们需要支持可定制应用程序设置的管理。 要求如下:

1) 设置键/值对: 在系统上运行的应用程序应该能够创建无限的设置键,这些键应该能够支持 DBUS 所支持的所有基本类型: integer、unsigned integer、string、boolean、double 以及上述类型的数组。

2) 更改通知: 键应该支持注册在发生键更改、读取、写入或删除操作时发送通知的回调。

3) 键所有权: 应该将创建键的应用程序记录为该键的所有者(通过记录它的二进制文件路径),并且该应用程序应该能够随意设置通知、读取、写入和删除它的键。

4) 键权限: 在其他应用程序是否可以注册以获取更改通知、读取、写入或删除键方面,所有者应用程序应该能够设置权限。

5) 控制键: 所有者可以将某个键指定为控制键,控制键可以禁用所有者应用程序以外的应用程序的写入/删除。 当调用方更改该键时,所有者将获得有关请求更改的通知,并且通过返回失败信息(向调用方发送失败信息)或返回通过信息(导致更改的发生并且通知已注册的应用程序)决定是否允许进行更改。

6) 可读数据库: 所有的键、它们的所有者、操作和权限都应该存储在数据库中,以便在引导或应用程序设置管理器重新启动时进行检索。

7) 通过文件复制安装到数据库: 应用程序设置管理器应该支持通过软件包安装或管理编辑将键、所有者、操作和权限直接安装到数据库中。

gconf 已经支持要求 1、2、6 和 7。 所需的其他功能包含在第 3、第 4 和第 5 项中。那么,问题在于我们是从头创建一个新的应用程序设置管理器,还是向 gconf 添加一个权限控制层以完成该工作。 Gconf 有一些缺点,特别是它需要占据 36MB 以上的存储空间并且文件系统比较混乱,但它的界面是最常用的,并且在进行应用程序设置管理时非常可靠。

控制键用例
下面是涉及一个控制键的用例示例。 假设桌面环境使用某个键来确定当前背景,并且向其他应用程序公开此键以便更改。 但是,在检查图像文件确实存在并且是具有正确比例的可读文件之前,不应该使用新的背景路径接管控制权。 它会使用一个控制键完成以下操作:

1) 桌面创建一个名为 BACKGROUND 的控制键
2) 桌面在 BACKGROUND 上注册通知
3) 桌面切换程序在 BACKGROUND 上注册通知
4) 桌面切换程序尝试将 BACKGROUND 的值更改为“file.png”(异步调用)
5) 调用桌面的回调,并请求将 BACKGROUND 更改为“file.png”。 检查文件。

6) 如果文件是kosher,则返回 PASS

将更改 BACKGROUND 键,并且使用新值调用已经注册通知的所有应用程序

7) 如果文件不是kosher,则返回 FAIL

将不会更改 BACKGROUND 键,并使用 FAIL 调用背景切换程序的通知

建议
我建议创建一个轻量的、移动版本的 gconf,该版本重用同一基本前端,但添加我们需要的权限功能。 我们可以利用制表符分隔文本文件而不是 XML 作为数据库,并且将这些文件专门存储在用户的主目录中(这与 gconf 相反,gconf 维护一个中央用户存储库)。 每个应用程序所有者可以有一个文件,因此可以轻松地设置访问权限。

应用程序管理器守护进程可以使用 PolKitTracker 对象检索调用方的可执行二进制路径,并检查该特定设置的列表以查看允许哪些人执行哪些操作。 PolicyKit 本身还不支持基于可执行文件的权限(未来可能添加此功能),在将通知、读取、写入、修改和删除权限添加到 PolicyKit.conf 文件之前可能还需要一段时间。 因此,应该由守护进程专门处理权限。

前端仅需重用现有的 gconf 函数调用,但一些增补和修改需要更多的论证。 我们可以将名称更改为 mconf。

Gconf 正是在开源中管理设置的解决方案。

我们将为 gconf 创建一个紧急替换物: 完全再现所有基本函数调用,并取消或放弃新功能。

新功能将以附加函数以及为现有函数追加参数的形式添加。

每个包装函数都必须具有一个底层 DBUS 方法

重用所有可以重用的代码,但是从头进行设计。

Gconf 需要占据较多存储空间

删除中央存储库,并仅在 /home/user 外部工作

消除对 Python、libOrbit、libXML 的依赖性

使用由所有者应用程序分隔的制表符分隔文本文件

Gconf 不具有安全性

支持键所有权的概念,允许所有者为其他应用程序指定访问权限

使用 PolicyKit 确保只有所有者应用程序可以访问它的数据库文件

守护进程可以进一步区分指定的应用程序可以访问键上的哪些特定键或操作。


如果您还想阅读更多有关Moblin的技术文章,请直接进入Moblin中文站技术文章板块:http://moblin.csdn.net/c_channelrecomm/tag/1






...全文
200 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdnyz_yf 2009-11-17
  • 打赏
  • 举报
回复
你的 控制键用例 有代码吗?
jurenwangzi8 2009-05-13
  • 打赏
  • 举报
回复
谢谢分享!
Roy_ly 2009-05-13
  • 打赏
  • 举报
回复
Moblin到底是个啥玩意啊?
yanwen5210 2009-05-13
  • 打赏
  • 举报
回复
有很多问题想问下 可以联系我吗 QQ92364596
lqcwj98852 2009-05-13
  • 打赏
  • 举报
回复
Moblin到底是个啥玩意啊?

1,552

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与英特尔开源软件相关的技术
社区管理员
  • 英特尔开源软件社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧