优麒麟 | 任务栏新版托盘协议(SNI)介绍

本文介绍了Linux操作系统的任务栏新版托盘协议(SNI),它通过dbus简化了系统托盘应用的开发。SNI使用dbusmenu、indicator-applet和libappindicator库实现应用程序与任务栏的交互,包括注册dbus服务、调用dbus方法等。在优麒麟桌面环境中,Qt和Gtk应用程序可以轻松创建和管理托盘图标。

1 什么是任务栏新版托盘协议(SNI)

在 Linux 操作系统中,“系统托盘区域”是在给定的 X 屏幕上运行的应用程序,可以显示正在运行的应用程序提供的小图标。系统托盘是一个 X 客户端,在给定的屏幕上拥有一个特殊的管理器选择并提供了容器窗口。Windows 将此功能称为“通知区域”,旧版托盘协议就是通过 X 服务直接获取应用信息,在开发上难度很大。

新版托盘规范定义了可视项的管理,通常是用于向用户报告应用程序状态或提供对该应用程序执行的常见操作的快速访问的图标。它旨在作为 Freedesktop 的桌面通知规范的补充但不直接相关,旨在替代 Freedesktop 系统托盘规范,更加面向模型视图,为工作区提供更多自由,如何以图形方式表示与它的视觉风格语言,这种方式(SNI)是将 systemtray 的调用封装进 dbus 总线中,提升了开发者的开发效率。

从用户角度来看新版托盘协议(SNI)从表面上看不出有什么太大的变化,在开发的角度上是将最上层的应用与下层基础库的分离。

图片

2 实现方式

新版托盘协议主要是通过三个库来实现的:

dbusmenu 是实现应用程序和面板(#5)之间传输协议的库。dbusmenu 已经被用于开发会话菜单,并且也是在 Lucid 中实现一些新系统菜单的构建块。

indicator-applet 是将托管应用程序指示器区域的面板小程序。指示器小程序是作为消息菜单项目的一部分开发的,旨在成为面板指示器的通用容器 。libappindicator 是一个新的库,用于帮助应用程序端更改;它确实注册了图标和菜单,并在内部使用 dbusmenu 通过 dbus 发布上下文菜单。虽然

### SNI 过滤与 TLS 协议版本的兼容性 SNI(Server Name Indication)是 TLS 协议的一个扩展,最早在 TLS 1.0 中引入。因此,**SNI 过滤主要适用于 TLS 1.0 及其后续版本(包括 TLS 1.1、TLS 1.2 和 TLS 1.3)**。在这些协议版本中,SNI 字段作为 ClientHello 消息的一部分以明文形式传输,允许中间设备在不解密流量的情况下提取目标域名并执行过滤策略。 然而,SNI 过滤并不适用于所有加密协议场景。例如,**在传统的 SSL 3.0 协议中并未定义 SNI 扩展**,因此无法通过该协议字段进行域名识别和过滤。这也意味着基于 SSL 3.0 的连接无法被 SNI 过滤机制识别,从而可能绕过基于 SNI 的内容控制策略。 随着网络安全技术的发展,一些增强隐私保护的机制也开始影响 SNI 过滤的有效性。例如,**TLS 1.3 引入了加密 SNI(Encrypted SNI,ESNI)机制,使得 SNI 字段在 ClientHello 中被加密传输**。这一特性显著提升了用户隐私保护水平,但也使得传统的 SNI 过滤手段无法直接获取目标域名,从而降低了基于 SNI 的访问控制能力。 综上所述,SNI 过滤技术虽然兼容 TLS 1.0 及以上版本,但在以下场景中存在限制: - 不适用于 SSL 3.0 等早期协议; - 在 TLS 1.3 中启用 ESNI 后,SNI 字段将被加密,传统过滤方式失效; - 依赖于中间设备具备解析 TLS 握手消息的能力,若设备不支持相关协议解析功能,则无法实施 SNI 过滤[^1]。 ### 示例:基于 nftables 的 SNI 过滤规则 以下是一个使用 nftables 实现基于 SNI 的域名过滤示例,适用于支持 TLS 1.2 及 TLS 1.3 的环境(不启用 ESNI 时): ```bash table ip filter { chain output { type filter hook output priority 0; policy accept; tls_sni == "blocked.example.com" drop } } ``` 该规则将阻止客户端访问 `blocked.example.com`,前提是 SNI 字段未被加密。 --- ### 部署建议 在部署 SNI 过滤策略时,应考虑以下因素: - 监控网络中 TLS 协议版本的使用情况,识别是否广泛启用 TLS 1.3 及其加密 SNI 功能; - 对于需要更高隐私保护的环境,应评估是否启用 ESNI 或其他加密扩展; - 结合其他内容控制手段(如 DNS 过滤、IP 黑名单等)以弥补 SNI 加密带来的识别盲区。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值