<a name="config-and-settings"></a>

# 配置与设置

本页说明「配置」页：在此查看、校验并应用 honk 的配置文件。本页也说明「设置」页：在此管理连接方案、后端选项、地理数据、外观与后端操作。

<a name="config-page"></a>

## 打开「配置」页

1. 在「设置」分区中打开「配置」。只有后端提供配置内容时才显示此页面。
2. 查看标签页上方的一行信息。「配置版本」标识当前生效的配置，内容变更并生效后会改变。旁边的状态显示「没有诊断」，或错误与警告的数量。
3. 若该行还显示「后端已脱敏监听密钥的值」，表示后端在返回的文本中隐藏了这些值。
4. 选择标签页：「模块」「快速设置」「来源」或「校验」。只有主配置可写入时才显示「快速设置」，见下文「快速设置」一节。

页面默认打开「模块」。后端未返回主配置文本时打开「来源」；主配置为空且可使用「快速设置」时打开「快速设置」。配置文件格式以及主配置与引入文件的作用，见[配置说明](https://zakkaus.github.io/doona-docs/zh-CN/configuration.md#config)。

### 来源

1. 打开「来源」，从「来源」下拉列表选择文件。每一项都标出文件类型：「主配置」「引入文件」「订阅」或「引擎生成」。
2. 下拉列表旁显示文件的行数与大小。将指针悬停在上面可查看加载时间。
3. 文件不可编辑时，下拉列表旁会显示标记，说明原因。各标记的含义见下表。
4. 点击「导出」可下载显示的文本。导出文件保留显示的原始文本，可能包含凭据，分享前须检查。

| 标记 | 含义 |
| --- | --- |
| 「只读」 | 后端未开放写入配置；标记旁的说明给出启用方法，[配置说明](https://zakkaus.github.io/doona-docs/zh-CN/configuration.md#config)介绍 `config_write`。若没有该说明，表示后端拒绝写入此文件且未给出原因，见[只读配置文件](https://zakkaus.github.io/doona-docs/zh-CN/troubleshooting.md#read-only)。 |
| 「含密钥」 | 文件含监听密钥，后端不会写回。将密钥移到独立的引入文件后，即可编辑其余内容。 |
| 「未返回内容」 | 后端未返回此文件的文本。请检查后端的内容可见性策略。 |
| 「内容已脱敏」 | 后端隐藏了文件的部分内容，写回会丢失这些值。 |
| 「订阅」 | 文件从订阅地址下载，更新订阅时会被替换。 |
| 「引擎生成」 | 文件由引擎生成，重新生成时会被覆盖。如需修改，请修改生成它的配置。 |

在只读文件中输入内容时，页面会提示一次「此文件只读」。

<a name="edit-source"></a>

## 编辑并应用来源

1. 在「来源」中选择没有标记的文件，点击其文本。
2. 输入修改。页面显示「未应用」标记；此时重新加载或关闭页面会丢失修改。
3. 若后端支持校验，doona 会在停止输入片刻后校验主配置及其引入文件，并在编辑器中标出有诊断的行。点击「校验」可立即校验，光标会移到第一个错误。
4. 检查编辑器上方的诊断列表。点击某一行的「打开来源」，可打开对应文件并定位到该行。
5. 点击「应用」。honk 校验文件、写入修改并重载配置。页面提示文件已写入、配置已重载。

点击「取消」可放弃修改。校验发现错误时不会写入任何内容，错误显示在列表中。若修改涉及需重启才生效的设置，同样不会写入；请在文件中修改该设置，再重启 honk。

若编辑期间磁盘上的文件已更改，页面会显示提示，「应用」不可用。点击「保留修改」后再点击「应用」，可用你的文本覆盖新文件；点击「取消」则放弃修改并加载新文本。

新建引入文件：

1. 在「来源」中点击「新建文件」。后端允许创建文件时才显示此按钮。
2. 若主配置的 include 路径模式已决定目录与扩展名，只需在「名称」中输入文件名；有多个路径模式时，先在「路径模式」中选择。否则在「路径」中输入相对于主配置目录的路径，路径须以 `.dae` 结尾。
3. 点击「创建」。新文件内容为空，配置随即重载，并在「来源」中打开该文件。

若已加载文件的 include 路径模式都不匹配该路径，对话框会提示后端将拒绝创建。

## 校验与诊断

1. 打开「校验」。状态显示「通过」「通过，N 个警告」，或「未通过」及错误与警告的数量。
2. 使用「全部」「错误」「警告」或「提示」筛选表格。每一行显示「级别」「位置」「消息」与「代码」。
3. 选中一行，点击「打开来源」，可打开对应文件并定位到该行。
4. 点击「重新校验」可校验当前文件。

尚未校验时，表格显示生效配置保留的诊断，并标出其 `generation`。校验后，表格显示该次校验的时间；配置重载或应用修改后，表格恢复显示生效配置的诊断。校验涵盖主配置及其引入文件，需要主配置的完整文本。若仍有错误，「应用」不会写入文件，重载也不会应用配置。

## 模块

1. 打开「模块」。每个 `global`、`subscription`、`node`、`group`、`dns` 与 `routing` 区段各显示一张卡片，列出所在文件、行范围与摘要。
2. 点击卡片上的「编辑」，可直接编辑该区段。只有文件可写入且文本完整时才显示「编辑」。
3. 如有「校验」可先点击，再点击「应用」；点击「取消」可放弃修改。

同一时间只能编辑一个区段。「打开来源文件」会在「来源」中打开整个文件并定位到该区段。「打开页面」会打开管理该区段的页面：「节点」「策略」，或「规则」页的 DNS 列表与路由列表。未设置的区段会显示提示；若可以在主配置中添加该区段，提示会给出主配置的文件名。

## 快速设置

后端开放写入配置、主配置可写入且返回了完整文本时，才显示「快速设置」。

1. 打开「快速设置」。在「订阅」下为每个订阅填写「名称」与「订阅网址」，点击「添加订阅」可增加一行。
2. 在「规则」中保持「保留当前规则」可让 `routing` 区段保持不变，也可以选择「ACL4SSR Mini 分组」「ACL4SSR Online 分组（默认）」或「ACL4SSR Full 分组」。
3. 若主配置为空，还须填写「透明代理端口」「默认 DNS 上游」与「中国大陆域名 DNS 上游」。「LAN 接口」可不填。
4. 检查「生成的配置」，然后点击「应用」。主配置的写入与「来源」相同，经过校验和重载。

「应用」会改写主配置的 `subscription` 区段。选用模板时，还会替换所有顶层 `routing` 区段并补上缺少的 group，其余内容保持不变。应用后，页面显示前往「节点」「策略」「路由规则」与「打开来源」的链接。

<a name="settings-page"></a>

## 「设置」页

在「设置」分区中打开「设置」。未连接后端时也能打开此页面，因此可以在此修正后端网址。卡片按以下顺序排列：

1. 「后端」
2. 「后端选项」
3. 「地理数据」，仅在后端允许配置地理数据来源时显示
4. 「外观」
5. 「后端操作」
6. 「关于」

### 后端

1. 在「连接方案」中选择连接方案即可切换。doona 保存选择后重新加载页面，连接该后端。
2. 使用「新建连接方案」「重命名连接方案」或「删除连接方案」管理连接方案。每项操作都会打开对话框，确认后页面重新加载。新建的连接方案默认使用内置演示数据。
3. 填写「后端网址」：后端的根网址或反向代理前缀，不是 `/api/v1`。留空或填写 `mock` 可使用内置演示数据。
4. 填写「Token」。使用密码登录的后端会显示说明而非此字段；登录后会显示「退出登录」。
5. 点击「测试连接」。结果显示「连接成功，API v*N*」，或说明失败原因。
6. 点击「保存」。doona 将连接方案保存在此浏览器中，并重新加载页面以应用该方案。

切换、新建、重命名或删除连接方案都会放弃尚未保存的「后端网址」与「Token」修改；对话框会事先提示。配对链接会填入「后端网址」与「Token」，保存后生效。「保存」修改的是 doona 的连接方案，不是 honk 的配置。测试连接或登录失败时，见[登录失败](https://zakkaus.github.io/doona-docs/zh-CN/troubleshooting.md#sign-in)。

<a name="runtime-options"></a>

### 后端选项

1. 查看标题旁的标记：「配置值」或「运行时覆盖」。
2. 修改后端提供的字段：「日志级别」「日志保留条数」「DNS 记录保留条数」「流程保留条数」与「流程保留秒数」。每个数值字段都显示允许的范围。
3. 「流程记录」可选择「按流程需求」「常开」或「关闭」。「日志记录」与「DNS 记录」可选择「随面板」「常开」或「关闭」。每项旁的状态显示「记录中」「未记录」或「配置禁止」。
4. 点击「应用」，修改立即生效。有未应用的修改时会显示「放弃修改」。

这些选项不会写入配置文件。重启或已接受的显式配置激活（包括没有内容变化的重载）会恢复配置文件中的值。激活被拒绝、订阅或网络刷新时，覆盖值保持不变。配置中禁止的记录功能不能在此启用。若编辑期间后端选项已更改，doona 会保留草稿并给出提示。

<a name="geodata"></a>

### 地理数据

只有后端允许配置地理数据来源时才显示「地理数据」卡片。若后端提供地理数据但不允许配置其来源，「后端操作」卡片会列出地理数据文件，见[后端操作](https://zakkaus.github.io/doona-docs/zh-CN/config-and-settings.md#backend-actions)。

1. 选择「来源」：「Loyalsoldier」「MetaCubeX 完整版」「MetaCubeX 精简版」或「自定义」。若预设缺少规则使用的分类，切换前会弹出对话框列出这些分类，因为后端更新时会拒绝这类文件。
2. 选择「自定义」时，在「自定义网址」对话框中填写 `geosite` 与 `geoip` 的网址，然后点击「应用并更新」或「应用」。每种数据最多 4 个网址，按顺序尝试。请填写直接返回文件的网址；GitHub Releases 下载链接会重定向，无法使用。之后可点击「编辑」重新打开对话框。
3. 选择「下载路由」：「按路由规则」「直连」或「指定组」。选择「指定组」后还须选择组，选定后路由才会保存。
4. 除非可信镜像的校验地址返回错误页面或 HTTP 404 以外的错误，否则保持开启「SHA-256 校验」。镜像未提供 `.sha256sum` 文件时，文件本来就会不经校验直接加载。
5. 开启「自动更新」并选择「更新间隔（小时）」，即可定时下载。
6. 查看「状态」。如有「立即更新」，点击即可立即下载。展开「详细信息」可查看每个文件的信息。

每个控件修改后立即保存。后端支持手动更新时，更换来源后随即下载新文件；否则在下次自动更新时下载。只有后端提供相应信息时，才显示「下载路由」与「SHA-256 校验」。若卡片提示网址来自配置文件，honk 重启时会再次写入这些网址。更新失败时，见[地理数据更新失败](https://zakkaus.github.io/doona-docs/zh-CN/troubleshooting.md#geodata-update)与[地理数据来源](https://zakkaus.github.io/doona-docs/zh-CN/troubleshooting.md#geodata-sources)。

### 外观

可选择「语言」「配色」「明暗模式」「字标」与「通知位置」。开启「镜像布局」可将布局左右翻转。doona 将这些选项保存在此浏览器中，不会修改 honk 的配置。

<a name="backend-actions"></a>

### 后端操作

此卡片只显示后端支持的操作。

1. 在「服务」下点击「重载」，honk 会重新读取配置文件。引擎运行时显示「暂停」，暂停后显示「恢复」。
2. 在「DNS」下点击「清除全部缓存」并确认，可清除全部 DNS 缓存项。
3. 在「节点」下点击「刷新全部订阅（N）」。
4. 在「连接」下点击「全部关闭」并确认。此操作关闭后端持有的全部连接，并跳过内核直连的连接。
5. 后端提供地理数据但无法配置其来源时，「地理数据」表格列出每个文件的「数据」「大小」「更新」「SHA-256」与「来源」。如有「更新」，点击后会下载并校验文件，然后重载配置。

顶部栏的「重载 honk」经确认后执行同样的重载，见[界面导览](https://zakkaus.github.io/doona-docs/zh-CN/tour.md#top-bar)。两者都不会写入暂存的规则，见[暂存规则](https://zakkaus.github.io/doona-docs/zh-CN/routing.md#held-rules)。若地理数据说明提示下载网址来自配置文件，则在此编辑来源需要后端的状态数据库，见[状态数据库](https://zakkaus.github.io/doona-docs/zh-CN/troubleshooting.md#state-db)。

### 关于

「关于 doona」会打开对话框，显示引擎、API 与契约版本、许可证和隐私说明。「键盘快捷键」会打开快捷键列表。「指南」会以界面语言打开本文档。浏览器提供安装功能时显示「安装为应用」；iOS 与 macOS 上的 Safari 则显示安装步骤。若后端的 API 主版本不是 1，此卡片会显示警告。
