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

# 組態與設定

本頁說明「組態」頁：在此檢視、驗證並套用 honk 的組態檔。本頁也說明「設定」頁：在此管理設定檔、後端選項、地理資料、外觀與後端操作。

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

## 開啟「組態」頁

1. 在「設定」分區中開啟「組態」。只有後端提供組態內容時才顯示此頁面。
2. 查看分頁上方的一行資訊。「組態版本」標示目前生效的組態，內容變更並生效後會改變。旁邊的狀態顯示「沒有診斷」，或錯誤與警告的數量。
3. 若該行另外顯示「後端已遮蔽監聽密鑰的值」，表示後端在回傳的文字中隱藏了這些值。
4. 選擇分頁：「模組」「快速設定」「來源」或「驗證」。只有主組態可寫入時才顯示「快速設定」，見下文「快速設定」一節。

頁面預設開啟「模組」。後端未回傳主組態文字時開啟「來源」；主組態為空且可使用「快速設定」時開啟「快速設定」。組態檔格式以及主組態與引入檔的用途，見[組態說明](https://zakkaus.github.io/doona-docs/zh-TW/configuration.md#config)。

### 來源

1. 開啟「來源」，從「來源」下拉選單選擇檔案。每一項都標出檔案類型：「主組態」「引入檔」「訂閱」或「引擎產生」。
2. 下拉選單旁顯示檔案的行數與大小。將指標停在上面可查看載入時間。
3. 檔案不可編輯時，下拉選單旁會顯示標記，說明原因。各標記的含義見下表。
4. 點選「匯出」可下載顯示的文字。匯出檔案保留顯示的原始文字，可能含有憑證，分享前須檢查。

| 標記 | 含義 |
| --- | --- |
| 「唯讀」 | 後端未開放寫入組態；標記旁的說明提供啟用方式，[組態說明](https://zakkaus.github.io/doona-docs/zh-TW/configuration.md#config)介紹 `config_write`。若沒有該說明，表示後端拒絕寫入此檔案且未提供原因，見[唯讀組態檔案](https://zakkaus.github.io/doona-docs/zh-TW/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-TW/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-TW/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-TW/troubleshooting.md#geodata-update)與[地理資料來源](https://zakkaus.github.io/doona-docs/zh-TW/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-TW/tour.md#top-bar)。兩者都不會寫入暫存的規則，見[暫存規則](https://zakkaus.github.io/doona-docs/zh-TW/routing.md#held-rules)。若地理資料說明提示下載網址來自組態檔，則在此編輯來源需要後端的狀態資料庫，見[狀態資料庫](https://zakkaus.github.io/doona-docs/zh-TW/troubleshooting.md#state-db)。

### 關於

「關於 doona」會開啟對話框，顯示引擎、API 與契約版本、授權和隱私說明。「鍵盤快捷鍵」會開啟快捷鍵清單。「指南」會以介面語言開啟本文件。瀏覽器提供安裝功能時顯示「安裝為應用程式」；iOS 與 macOS 上的 Safari 則顯示安裝步驟。若後端的 API 主版本不是 1，此卡片會顯示警告。
