From f7167a603d8a2f34122a0be2dbeb8ecc97650876 Mon Sep 17 00:00:00 2001
From: Daniel <845765@qq.com>
Date: Wed, 12 Jun 2024 16:56:34 +0800
Subject: [PATCH 1/6] :art: No paging when searching by document group
https://github.com/siyuan-note/siyuan/issues/11667
---
kernel/model/search.go | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/model/search.go b/kernel/model/search.go
index 4b5adf7b9..e0e837543 100644
--- a/kernel/model/search.go
+++ b/kernel/model/search.go
@@ -852,8 +852,8 @@ func FullTextSearchBlock(query string, boxes, paths []string, types map[string]b
}
if 1 == groupBy {
- // 按文档分组时使用搜索设置限制 Search `Group by doc` follows the search setting limit display https://github.com/siyuan-note/siyuan/issues/11667
- pageSize = Conf.Search.Limit
+ // 按文档分组搜索时不进行分页 No paging when searching by document group https://github.com/siyuan-note/siyuan/issues/11667
+ pageSize = math.MaxInt
}
beforeLen := 36
From 0de9ecb61bb8a480f90cc20f93b7828d5eb2e738 Mon Sep 17 00:00:00 2001
From: Daniel <845765@qq.com>
Date: Wed, 12 Jun 2024 17:35:57 +0800
Subject: [PATCH 2/6] :art: Revert
https://github.com/siyuan-note/siyuan/issues/11667
---
kernel/model/search.go | 5 -----
1 file changed, 5 deletions(-)
diff --git a/kernel/model/search.go b/kernel/model/search.go
index e0e837543..3faf632ef 100644
--- a/kernel/model/search.go
+++ b/kernel/model/search.go
@@ -851,11 +851,6 @@ func FullTextSearchBlock(query string, boxes, paths []string, types map[string]b
query = trimQuery
}
- if 1 == groupBy {
- // 按文档分组搜索时不进行分页 No paging when searching by document group https://github.com/siyuan-note/siyuan/issues/11667
- pageSize = math.MaxInt
- }
-
beforeLen := 36
var blocks []*Block
orderByClause := buildOrderBy(query, method, orderBy)
From 1b7be9b6f086bb6e2bd8cdfcdd3128ae10108bef Mon Sep 17 00:00:00 2001
From: Daniel <845765@qq.com>
Date: Wed, 12 Jun 2024 18:04:45 +0800
Subject: [PATCH 3/6] :bug: Failed to rename the document after moving it
https://github.com/siyuan-note/siyuan/issues/11661
---
kernel/model/box.go | 5 +----
kernel/model/file.go | 25 ++++++++++++++++++++++++-
2 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/kernel/model/box.go b/kernel/model/box.go
index 3e5e100f4..4fffcd864 100644
--- a/kernel/model/box.go
+++ b/kernel/model/box.go
@@ -404,12 +404,9 @@ func moveTree(tree *parse.Tree) {
func (box *Box) renameSubTrees(tree *parse.Tree) {
subFiles := box.ListFiles(tree.Path)
- box.moveTrees0(subFiles)
-}
-func (box *Box) moveTrees0(files []*FileInfo) {
luteEngine := util.NewLute()
- for _, subFile := range files {
+ for _, subFile := range subFiles {
if !strings.HasSuffix(subFile.path, ".sy") {
continue
}
diff --git a/kernel/model/file.go b/kernel/model/file.go
index 62d8ca02a..56ff36346 100644
--- a/kernel/model/file.go
+++ b/kernel/model/file.go
@@ -1477,7 +1477,8 @@ func moveDoc(fromBox *Box, fromPath string, toBox *Box, toPath string, luteEngin
}
}
- if fromBox.Exist(fromFolder) {
+ needMoveSubDocs := fromBox.Exist(fromFolder)
+ if needMoveSubDocs {
// 移动子文档文件夹
newFolder := path.Join(toFolder, tree.ID)
@@ -1532,6 +1533,28 @@ func moveDoc(fromBox *Box, fromPath string, toBox *Box, toPath string, luteEngin
moveSorts(tree.ID, fromBox.ID, toBox.ID)
}
+ if needMoveSubDocs {
+ // 将其所有子文档的移动事件推送到前端 https://github.com/siyuan-note/siyuan/issues/11661
+ subDocsFolder := path.Join(toFolder, tree.ID)
+ syFiles := listSyFiles(path.Join(toBox.ID, subDocsFolder))
+ for _, syFile := range syFiles {
+ relPath := strings.TrimPrefix(syFile, "/"+path.Join(toBox.ID, toFolder))
+ subFromPath := path.Join(path.Dir(fromPath), relPath)
+ subToPath := path.Join(toFolder, relPath)
+
+ evt := util.NewCmdResult("moveDoc", 0, util.PushModeBroadcast)
+ evt.Data = map[string]interface{}{
+ "fromNotebook": fromBox.ID,
+ "fromPath": subFromPath,
+ "toNotebook": toBox.ID,
+ "toPath": path.Dir(subToPath) + ".sy",
+ "newPath": subToPath,
+ }
+ evt.Callback = callback
+ util.PushEvent(evt)
+ }
+ }
+
evt := util.NewCmdResult("moveDoc", 0, util.PushModeBroadcast)
evt.Data = map[string]interface{}{
"fromNotebook": fromBox.ID,
From 536879cb848c634743a6559e55c2aa3aa291eaff Mon Sep 17 00:00:00 2001
From: Daniel <845765@qq.com>
Date: Wed, 12 Jun 2024 18:11:17 +0800
Subject: [PATCH 4/6] :recycle: Upgrade to Electron v28.3.3
https://github.com/siyuan-note/siyuan/issues/11654
---
.github/CONTRIBUTING.md | 6 +--
.github/CONTRIBUTING_zh_CN.md | 6 +--
app/package.json | 2 +-
app/pnpm-lock.yaml | 83 +++++++++++++++++++----------------
4 files changed, 52 insertions(+), 45 deletions(-)
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 9141b9535..d54e9a99b 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -14,10 +14,10 @@ Install pnpm: `npm install -g pnpm@9.1.1`
Set the Electron mirror environment variable and install Electron:
-* macOS/Linux: `ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@28.3.1 -D`
+* macOS/Linux: `ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@28.3.3 -D`
* Windows:
* `SET ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/`
- * `pnpm install electron@28.3.1 -D`
+ * `pnpm install electron@28.3.3 -D`
NPM mirror:
@@ -28,7 +28,7 @@ NPM mirror:
On the desktop, go to the app folder to run:
-* `pnpm install electron@28.3.1 -D`
+* `pnpm install electron@28.3.3 -D`
* `pnpm run dev`
* `pnpm run start`
diff --git a/.github/CONTRIBUTING_zh_CN.md b/.github/CONTRIBUTING_zh_CN.md
index d1ca0ae56..1ac0f215e 100644
--- a/.github/CONTRIBUTING_zh_CN.md
+++ b/.github/CONTRIBUTING_zh_CN.md
@@ -16,11 +16,11 @@
* macOS/Linux:
```
- ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@28.3.1 -D
+ ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@28.3.3 -D
```
* Windows:
* `SET ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/`
- * `pnpm install electron@28.3.1 -D`
+ * `pnpm install electron@28.3.3 -D`
NPM 镜像:
@@ -30,7 +30,7 @@ NPM 镜像:
桌面端进入 app 文件夹运行:
-* `pnpm install electron@28.3.1 -D`
+* `pnpm install electron@28.3.3 -D`
* `pnpm run dev`
* `pnpm run start`
diff --git a/app/package.json b/app/package.json
index 3e2f1e8f4..a1ad1945c 100644
--- a/app/package.json
+++ b/app/package.json
@@ -55,7 +55,7 @@
"clean-webpack-plugin": "^4.0.0",
"css-loader": "^6.7.1",
"dayjs": "^1.11.5",
- "electron": "28.3.1",
+ "electron": "28.3.3",
"electron-builder": "24.9.1",
"encoding": "^0.1.13",
"esbuild-loader": "^3.0.1",
diff --git a/app/pnpm-lock.yaml b/app/pnpm-lock.yaml
index b38d1e20e..192e616ca 100644
--- a/app/pnpm-lock.yaml
+++ b/app/pnpm-lock.yaml
@@ -10,14 +10,14 @@ importers:
dependencies:
'@electron/remote':
specifier: ^2.1.2
- version: 2.1.2(electron@28.3.1)
+ version: 2.1.2(electron@28.3.3)
devDependencies:
'@types/node':
specifier: ^18.13.0
version: 18.13.0
'@typescript-eslint/eslint-plugin':
specifier: ^5.30.6
- version: 5.30.6(@typescript-eslint/parser@5.30.6)(eslint@8.19.0)(typescript@4.7.4)
+ version: 5.30.6(@typescript-eslint/parser@5.30.6(eslint@8.19.0)(typescript@4.7.4))(eslint@8.19.0)(typescript@4.7.4)
'@typescript-eslint/parser':
specifier: ^5.30.6
version: 5.30.6(eslint@8.19.0)(typescript@4.7.4)
@@ -26,16 +26,16 @@ importers:
version: 2.19.0
clean-webpack-plugin:
specifier: ^4.0.0
- version: 4.0.0(webpack@5.76.0)
+ version: 4.0.0(webpack@5.76.0(webpack-cli@4.10.0))
css-loader:
specifier: ^6.7.1
- version: 6.7.1(webpack@5.76.0)
+ version: 6.7.1(webpack@5.76.0(webpack-cli@4.10.0))
dayjs:
specifier: ^1.11.5
version: 1.11.5
electron:
- specifier: 28.3.1
- version: 28.3.1
+ specifier: 28.3.3
+ version: 28.3.3
electron-builder:
specifier: 24.9.1
version: 24.9.1
@@ -44,19 +44,19 @@ importers:
version: 0.1.13
esbuild-loader:
specifier: ^3.0.1
- version: 3.0.1(webpack@5.76.0)
+ version: 3.0.1(webpack@5.76.0(webpack-cli@4.10.0))
eslint:
specifier: ^8.19.0
version: 8.19.0
file-loader:
specifier: ^6.2.0
- version: 6.2.0(webpack@5.76.0)
+ version: 6.2.0(webpack@5.76.0(webpack-cli@4.10.0))
html-loader:
specifier: ^2.1.2
- version: 2.1.2(webpack@5.76.0)
+ version: 2.1.2(webpack@5.76.0(webpack-cli@4.10.0))
html-webpack-plugin:
specifier: ^5.5.0
- version: 5.5.0(webpack@5.76.0)
+ version: 5.5.0(webpack@5.76.0(webpack-cli@4.10.0))
iconv-lite:
specifier: ^0.6.3
version: 0.6.3
@@ -65,7 +65,7 @@ importers:
version: 2.3.2
mini-css-extract-plugin:
specifier: 2.7.6
- version: 2.7.6(webpack@5.76.0)
+ version: 2.7.6(webpack@5.76.0(webpack-cli@4.10.0))
path-browserify:
specifier: ^1.0.1
version: 1.0.1
@@ -77,7 +77,7 @@ importers:
version: 1.53.0
sass-loader:
specifier: ^12.6.0
- version: 12.6.0(sass@1.53.0)(webpack@5.76.0)
+ version: 12.6.0(sass@1.53.0)(webpack@5.76.0(webpack-cli@4.10.0))
typescript:
specifier: ^4.7.4
version: 4.7.4
@@ -922,8 +922,8 @@ packages:
electron-to-chromium@1.4.186:
resolution: {integrity: sha512-YoVeFrGd/7ROjz4R9uPoND1K/hSRC/xADy9639ZmIZeJSaBnKdYx3I6LMPsY7CXLpK7JFgKQVzeZ/dk2br6Eaw==}
- electron@28.3.1:
- resolution: {integrity: sha512-aF9fONuhVDJlctJS7YOw76ynxVAQdfIWmlhRMKits24tDcdSL0eMHUS0wWYiRfGWbQnUKB6V49Rf17o32f4/fg==}
+ electron@28.3.3:
+ resolution: {integrity: sha512-ObKMLSPNhomtCOBAxFS8P2DW/4umkh72ouZUlUKzXGtYuPzgr1SYhskhFWgzAsPtUzhL2CzyV2sfbHcEW4CXqw==}
engines: {node: '>= 12.20.55'}
hasBin: true
@@ -2243,9 +2243,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@electron/remote@2.1.2(electron@28.3.1)':
+ '@electron/remote@2.1.2(electron@28.3.3)':
dependencies:
- electron: 28.3.1
+ electron: 28.3.3
'@electron/universal@1.4.1':
dependencies:
@@ -2472,7 +2472,7 @@ snapshots:
'@types/node': 18.13.0
optional: true
- '@typescript-eslint/eslint-plugin@5.30.6(@typescript-eslint/parser@5.30.6)(eslint@8.19.0)(typescript@4.7.4)':
+ '@typescript-eslint/eslint-plugin@5.30.6(@typescript-eslint/parser@5.30.6(eslint@8.19.0)(typescript@4.7.4))(eslint@8.19.0)(typescript@4.7.4)':
dependencies:
'@typescript-eslint/parser': 5.30.6(eslint@8.19.0)(typescript@4.7.4)
'@typescript-eslint/scope-manager': 5.30.6
@@ -2485,6 +2485,7 @@ snapshots:
regexpp: 3.2.0
semver: 7.3.8
tsutils: 3.21.0(typescript@4.7.4)
+ optionalDependencies:
typescript: 4.7.4
transitivePeerDependencies:
- supports-color
@@ -2496,6 +2497,7 @@ snapshots:
'@typescript-eslint/typescript-estree': 5.30.6(typescript@4.7.4)
debug: 4.3.4
eslint: 8.19.0
+ optionalDependencies:
typescript: 4.7.4
transitivePeerDependencies:
- supports-color
@@ -2511,6 +2513,7 @@ snapshots:
debug: 4.3.4
eslint: 8.19.0
tsutils: 3.21.0(typescript@4.7.4)
+ optionalDependencies:
typescript: 4.7.4
transitivePeerDependencies:
- supports-color
@@ -2526,6 +2529,7 @@ snapshots:
is-glob: 4.0.3
semver: 7.5.4
tsutils: 3.21.0(typescript@4.7.4)
+ optionalDependencies:
typescript: 4.7.4
transitivePeerDependencies:
- supports-color
@@ -2624,17 +2628,17 @@ snapshots:
'@webassemblyjs/ast': 1.11.1
'@xtuc/long': 4.2.2
- '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.76.0)':
+ '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.76.0))(webpack@5.76.0(webpack-cli@4.10.0))':
dependencies:
webpack: 5.76.0(webpack-cli@4.10.0)
webpack-cli: 4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.76.0)
- '@webpack-cli/info@1.5.0(webpack-cli@4.10.0)':
+ '@webpack-cli/info@1.5.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.76.0))':
dependencies:
envinfo: 7.8.1
webpack-cli: 4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.76.0)
- '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)':
+ '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.76.0))':
dependencies:
webpack-cli: 4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.76.0)
@@ -2661,7 +2665,7 @@ snapshots:
- supports-color
ajv-formats@2.1.1(ajv@8.12.0):
- dependencies:
+ optionalDependencies:
ajv: 8.12.0
ajv-keywords@3.5.2(ajv@6.12.6):
@@ -2892,7 +2896,7 @@ snapshots:
dependencies:
source-map: 0.6.1
- clean-webpack-plugin@4.0.0(webpack@5.76.0):
+ clean-webpack-plugin@4.0.0(webpack@5.76.0(webpack-cli@4.10.0)):
dependencies:
del: 4.1.1
webpack: 5.76.0(webpack-cli@4.10.0)
@@ -2964,7 +2968,7 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
- css-loader@6.7.1(webpack@5.76.0):
+ css-loader@6.7.1(webpack@5.76.0(webpack-cli@4.10.0)):
dependencies:
icss-utils: 5.1.0(postcss@8.4.31)
postcss: 8.4.31
@@ -3128,7 +3132,7 @@ snapshots:
electron-to-chromium@1.4.186: {}
- electron@28.3.1:
+ electron@28.3.3:
dependencies:
'@electron/get': 2.0.2
'@types/node': 18.13.0
@@ -3166,7 +3170,7 @@ snapshots:
es6-error@4.1.1:
optional: true
- esbuild-loader@3.0.1(webpack@5.76.0):
+ esbuild-loader@3.0.1(webpack@5.76.0(webpack-cli@4.10.0)):
dependencies:
esbuild: 0.17.10
get-tsconfig: 4.4.0
@@ -3325,7 +3329,7 @@ snapshots:
dependencies:
flat-cache: 3.0.4
- file-loader@6.2.0(webpack@5.76.0):
+ file-loader@6.2.0(webpack@5.76.0(webpack-cli@4.10.0)):
dependencies:
loader-utils: 2.0.4
schema-utils: 3.1.1
@@ -3499,7 +3503,7 @@ snapshots:
dependencies:
lru-cache: 6.0.0
- html-loader@2.1.2(webpack@5.76.0):
+ html-loader@2.1.2(webpack@5.76.0(webpack-cli@4.10.0)):
dependencies:
html-minifier-terser: 5.1.1
parse5: 6.0.1
@@ -3525,7 +3529,7 @@ snapshots:
relateurl: 0.2.7
terser: 5.14.1
- html-webpack-plugin@5.5.0(webpack@5.76.0):
+ html-webpack-plugin@5.5.0(webpack@5.76.0(webpack-cli@4.10.0)):
dependencies:
'@types/html-minifier-terser': 6.1.0
html-minifier-terser: 6.1.0
@@ -3772,7 +3776,7 @@ snapshots:
mimic-response@3.1.0: {}
- mini-css-extract-plugin@2.7.6(webpack@5.76.0):
+ mini-css-extract-plugin@2.7.6(webpack@5.76.0(webpack-cli@4.10.0)):
dependencies:
schema-utils: 4.2.0
webpack: 5.76.0(webpack-cli@4.10.0)
@@ -4067,12 +4071,13 @@ snapshots:
dependencies:
truncate-utf8-bytes: 1.0.2
- sass-loader@12.6.0(sass@1.53.0)(webpack@5.76.0):
+ sass-loader@12.6.0(sass@1.53.0)(webpack@5.76.0(webpack-cli@4.10.0)):
dependencies:
klona: 2.0.5
neo-async: 2.6.2
- sass: 1.53.0
webpack: 5.76.0(webpack-cli@4.10.0)
+ optionalDependencies:
+ sass: 1.53.0
sass@1.53.0:
dependencies:
@@ -4209,7 +4214,7 @@ snapshots:
async-exit-hook: 2.0.1
fs-extra: 10.1.0
- terser-webpack-plugin@5.3.3(webpack@5.76.0):
+ terser-webpack-plugin@5.3.3(webpack@5.76.0(webpack-cli@4.10.0)):
dependencies:
'@jridgewell/trace-mapping': 0.3.14
jest-worker: 27.5.1
@@ -4324,9 +4329,9 @@ snapshots:
webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.76.0):
dependencies:
'@discoveryjs/json-ext': 0.5.7
- '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.76.0)
- '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0)
- '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0)
+ '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.76.0))(webpack@5.76.0(webpack-cli@4.10.0))
+ '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.76.0))
+ '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.76.0))
colorette: 2.0.19
commander: 7.2.0
cross-spawn: 7.0.3
@@ -4335,8 +4340,9 @@ snapshots:
interpret: 2.2.0
rechoir: 0.7.1
webpack: 5.76.0(webpack-cli@4.10.0)
- webpack-bundle-analyzer: 4.5.0
webpack-merge: 5.8.0
+ optionalDependencies:
+ webpack-bundle-analyzer: 4.5.0
webpack-merge@5.8.0:
dependencies:
@@ -4373,10 +4379,11 @@ snapshots:
neo-async: 2.6.2
schema-utils: 3.1.1
tapable: 2.2.1
- terser-webpack-plugin: 5.3.3(webpack@5.76.0)
+ terser-webpack-plugin: 5.3.3(webpack@5.76.0(webpack-cli@4.10.0))
watchpack: 2.4.0
- webpack-cli: 4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.76.0)
webpack-sources: 3.2.3
+ optionalDependencies:
+ webpack-cli: 4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.76.0)
transitivePeerDependencies:
- '@swc/core'
- esbuild
From ba2193403da71a679dcde24e5b6284278b7240da Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yingyi=20/=20=E9=A2=96=E9=80=B8?=
<49649786+Zuoqiu-Yingyi@users.noreply.github.com>
Date: Wed, 12 Jun 2024 21:03:51 +0800
Subject: [PATCH 5/6] :sparkles: Support read-only publish service
* :art: kernel supports read-only publishing services
* :bug: Fix authentication vulnerabilities
* :art: Protect secret information
* :art: Adjust the permission control
* :art: Adjust the permission control
* :art: Fixed the vulnerability that `getFile` gets file `conf.json`
* :art: Add API `/api/setting/setPublish`
* :art: Add API `/api/setting/getPublish`
* :bug: Fixed the issue that PWA-related files could not pass BasicAuth
* :art: Add a settings panel for publishing features
* :memo: Add guide for `Publish Service`
* :memo: Update Japanese user guide
* :art: Merge fixed static file services
---
app/appearance/langs/en_US.json | 13 +
app/appearance/langs/es_ES.json | 13 +
app/appearance/langs/fr_FR.json | 13 +
app/appearance/langs/ja_JP.json | 15 +-
app/appearance/langs/zh_CHT.json | 13 +
app/appearance/langs/zh_CN.json | 13 +
app/guide/20210808180117-6v0mkxr/.gitignore | 2 -
.../20210808180117-6v0mkxr/.siyuan/sort.json | 2 +-
.../20240517031132-jmr5ihm.sy | 526 ++++++++++++++
app/guide/20210808180117-czj9bvb/.gitignore | 2 -
.../20210808180117-czj9bvb/.siyuan/sort.json | 2 +-
.../20240517031028-xqinazo.sy | 540 ++++++++++++++
app/guide/20211226090932-5lcq56f/.gitignore | 2 -
.../20211226090932-5lcq56f/.siyuan/sort.json | 2 +-
.../20240517031052-mgoxs16.sy | 540 ++++++++++++++
.../20240530133126-axarxgx/.siyuan/sort.json | 2 +-
.../20240610233601-ylh1mvk.sy | 676 ++++++++++++++++++
app/src/config/editor.ts | 10 +-
app/src/config/index.ts | 8 +
app/src/config/publish.ts | 213 ++++++
app/src/layout/util.ts | 41 +-
app/src/menus/commonMenuItem.ts | 3 +-
app/src/menus/workspace.ts | 8 +-
app/src/protyle/util/compatibility.ts | 4 +
app/src/types/config.d.ts | 55 ++
app/src/util/assets.ts | 6 +-
app/src/util/fetch.ts | 26 +-
kernel/api/file.go | 22 +-
kernel/api/router.go | 489 ++++++-------
kernel/api/setting.go | 53 ++
kernel/api/snippet.go | 27 -
kernel/api/system.go | 14 +-
kernel/conf/publish.go | 45 ++
kernel/go.mod | 1 +
kernel/go.sum | 2 +
kernel/model/auth.go | 133 ++++
kernel/model/conf.go | 23 +
kernel/model/role.go | 56 ++
kernel/model/session.go | 53 ++
kernel/server/port.go | 16 +-
kernel/server/proxy/fixedport.go | 41 ++
kernel/server/proxy/publish.go | 161 +++++
kernel/server/serve.go | 147 +++-
kernel/sql/asset.go | 3 +-
kernel/util/net.go | 23 +
kernel/util/path.go | 1 +
kernel/util/working.go | 5 +-
47 files changed, 3690 insertions(+), 375 deletions(-)
delete mode 100644 app/guide/20210808180117-6v0mkxr/.gitignore
create mode 100644 app/guide/20210808180117-6v0mkxr/20200923234011-ieuun1p/20210808180303-xaduj2o/20240517031132-jmr5ihm.sy
delete mode 100644 app/guide/20210808180117-czj9bvb/.gitignore
create mode 100644 app/guide/20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180321-hbvl5c2/20240517031028-xqinazo.sy
delete mode 100644 app/guide/20211226090932-5lcq56f/.gitignore
create mode 100644 app/guide/20211226090932-5lcq56f/20211226115423-d5z1joq/20211226121203-rjjngpz/20240517031052-mgoxs16.sy
create mode 100644 app/guide/20240530133126-axarxgx/20240530101000-4qitucx/20240530101000-g3ugxml/20240610233601-ylh1mvk.sy
create mode 100644 app/src/config/publish.ts
create mode 100644 kernel/conf/publish.go
create mode 100644 kernel/model/auth.go
create mode 100644 kernel/model/role.go
create mode 100644 kernel/server/proxy/fixedport.go
create mode 100644 kernel/server/proxy/publish.go
diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json
index 03e988dce..96dc348da 100644
--- a/app/appearance/langs/en_US.json
+++ b/app/appearance/langs/en_US.json
@@ -1,4 +1,17 @@
{
+ "publish": "Publish",
+ "publishService": "Publish service",
+ "publishServiceNotStarted": "Publish Service Not Started",
+ "publishServiceTip": "When enabled, the publish service will be started. This service publishes the content of the current workspace in read-only mode on the local network.",
+ "publishServicePort": "Service port",
+ "publishServicePortTip": "Enable the publish service using the specified port number. If set to 0, a random port will be used.",
+ "publishServiceAddresses": "Service access addresses",
+ "publishServiceAddressesTip": "Possible network addresses to access the publish service.",
+ "publishServiceAuth": "Service basic authentication",
+ "publishServiceAuthTip": "When enabled, authentication is required to access the publish service.",
+ "publishServiceAuthAccounts": "Authenticated accounts",
+ "publishServiceAuthAccountsTip": "List of Basic authentication accounts. Visitors need to enter the username and password from this list to view the published content.",
+ "publishServiceAuthAccountAdd": "Add account",
"copyMirror": "Copy mirror",
"duplicateMirror": "Duplicate mirror",
"duplicateCompletely": "Duplicate completely",
diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json
index 7f98438e6..4d378d71e 100644
--- a/app/appearance/langs/es_ES.json
+++ b/app/appearance/langs/es_ES.json
@@ -1,4 +1,17 @@
{
+ "publish": "Publicar",
+ "publishService": "Publicar servicio",
+ "publishServiceNotStarted": "Servicio de publicación no iniciado",
+ "publishServiceTip": "Al activar esto, se iniciará el servicio de publicación. Este servicio publicará el contenido del espacio de trabajo actual en modo de solo lectura en la LAN",
+ "publishServicePort": "Número de puerto del servicio",
+ "publishServicePortTip": "Activar el servicio de publicación con el número de puerto especificado. Si se establece en 0, se utilizará un puerto aleatorio",
+ "publishServiceAddresses": "Direcciones de acceso al servicio",
+ "publishServiceAddressesTip": "Direcciones de red desde las que se puede acceder al servicio de publicación",
+ "publishServiceAuth": "Autenticación básica del servicio",
+ "publishServiceAuthTip": "Al activar esto, se requerirá autenticación al acceder al servicio de publicación",
+ "publishServiceAuthAccounts": "Cuentas de autenticación",
+ "publishServiceAuthAccountsTip": "Lista de cuentas de autenticación básica. Después de activar la autenticación básica, los visitantes deberán ingresar el nombre de usuario y la contraseña de la lista para ver el contenido publicado",
+ "publishServiceAuthAccountAdd": "Agregar cuenta",
"copyMirror": "Copiar espejo",
"duplicateMirror": "Espejo duplicado",
"duplicateCompletely": "Duplicar completamente",
diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json
index d49cca4e6..f01d7d21b 100644
--- a/app/appearance/langs/fr_FR.json
+++ b/app/appearance/langs/fr_FR.json
@@ -1,4 +1,17 @@
{
+ "publish": "Publier",
+ "publishService": "Publier le service",
+ "publishServiceNotStarted": "Service de publication non démarré",
+ "publishServiceTip": "Lorsqu'activé, le service de publication démarre. Ce service publie en mode lecture seule le contenu de l'espace de travail actuel dans le réseau local.",
+ "publishServicePort": "Numéro de port du service",
+ "publishServicePortTip": "Active le service de publication avec le numéro de port spécifié. Si défini sur 0, un port aléatoire sera utilisé.",
+ "publishServiceAddresses": "Adresses d'accès au service",
+ "publishServiceAddressesTip": "Adresses réseau qui peuvent accéder au service de publication",
+ "publishServiceAuth": "Authentification Basic du service",
+ "publishServiceAuthTip": "Lorsqu'activé, une authentification est requise pour accéder au service de publication",
+ "publishServiceAuthAccounts": "Comptes d'authentification",
+ "publishServiceAuthAccountsTip": "Liste des comptes d'authentification Basic. Lorsque l'authentification Basic est activée, les visiteurs doivent entrer un nom d'utilisateur et un mot de passe figurant dans cette liste pour consulter le contenu publié.",
+ "publishServiceAuthAccountAdd": "Ajouter un compte",
"copyMirror": "Copier le miroir",
"duplicateMirror": "Miroir en double",
"duplicateCompletely": "Dupliquer complètement",
diff --git a/app/appearance/langs/ja_JP.json b/app/appearance/langs/ja_JP.json
index 2fe7c88b1..039e1e04e 100644
--- a/app/appearance/langs/ja_JP.json
+++ b/app/appearance/langs/ja_JP.json
@@ -1,4 +1,17 @@
{
+ "publish": "公開する",
+ "publishService": "サービスを公開する",
+ "publishServiceNotStarted": "サービスが開始されていません",
+ "publishServiceTip": "有効にすると、サービスを開始します。このサービスは、現在のワークスペースの内容を読み取り専用モードでローカルネットワークに公開します",
+ "publishServicePort": "サービスポート",
+ "publishServicePortTip": "指定したポート番号を使用してサービスを有効にします。0に設定するとランダムなポートが使用されます",
+ "publishServiceAddresses": "サービスアドレス",
+ "publishServiceAddressesTip": "サービスを公開することが可能なネットワークアドレス",
+ "publishServiceAuth": "サービスの基本認証",
+ "publishServiceAuthTip": "有効にすると、公開サービスへのアクセス時に認証が必要になります",
+ "publishServiceAuthAccounts": "認証アカウント",
+ "publishServiceAuthAccountsTip": "基本認証アカウントのリスト。基本認証を有効にした場合、訪問者はリスト内のユーザー名とパスワードを入力して公開内容を表示することができます",
+ "publishServiceAuthAccountAdd": "アカウントを追加する",
"copyMirror": "ミラーをコピー",
"duplicateMirror": "ミラーを複製",
"duplicateCompletely": "完全に複製",
@@ -1523,4 +1536,4 @@
"247": "ファイル [%s] は制限サイズ [%s] を超えているためアップロードされませんでした",
"248": "目標の見出しがコンテナブロック内にあるためドロップできません"
}
-}
\ No newline at end of file
+}
diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json
index b739f8a76..8147efa91 100644
--- a/app/appearance/langs/zh_CHT.json
+++ b/app/appearance/langs/zh_CHT.json
@@ -1,4 +1,17 @@
{
+ "publish": "發布",
+ "publishService": "發布服務",
+ "publishServiceNotStarted": "發布服務未啟動",
+ "publishServiceTip": "啟用後將啟動發布服務。該服務以只讀模式在區域網中發布當前工作空間的內容",
+ "publishServicePort": "服務端口號",
+ "publishServicePortTip": "使用指定的端口號啟用發布服務。若設置為 0 則使用隨機端口",
+ "publishServiceAddresses": "服務訪問地址",
+ "publishServiceAddressesTip": "可能訪問到發布服務的網路地址",
+ "publishServiceAuth": "服務 Basic 認證",
+ "publishServiceAuthTip": "啟用後在訪問發布服務時需要進行認證",
+ "publishServiceAuthAccounts": "認證帳戶",
+ "publishServiceAuthAccountsTip": "Basic 認證帳戶列表。啟用 Basic 認證後訪問者輸入列表中的用戶名與密碼後才能查看發布的內容",
+ "publishServiceAuthAccountAdd": "添加帳戶",
"copyMirror": "複製鏡像",
"duplicateMirror": "複製為鏡像副本",
"duplicateCompletely": "複製為完整副本",
diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json
index 41c82d39b..a049a8095 100644
--- a/app/appearance/langs/zh_CN.json
+++ b/app/appearance/langs/zh_CN.json
@@ -1,4 +1,17 @@
{
+ "publish": "发布",
+ "publishService": "发布服务",
+ "publishServiceNotStarted": "发布服务未启动",
+ "publishServiceTip": "启用后将启动发布服务。该服务以只读模式在局域网中发布当前工作空间的内容",
+ "publishServicePort": "服务端口号",
+ "publishServicePortTip": "使用指定的端口号启用发布服务。若设置为 0 则使用随机端口",
+ "publishServiceAddresses": "服务访问地址",
+ "publishServiceAddressesTip": "可能访问到发布服务的网络地址",
+ "publishServiceAuth": "服务 Basic 认证",
+ "publishServiceAuthTip": "启用后访问者在访问发布服务时需要使用用户名与密码进行认证",
+ "publishServiceAuthAccounts": "认证账户",
+ "publishServiceAuthAccountsTip": "Basic 认证账户列表。访问者输入列表中的用户名与密码后才能查看发布的内容",
+ "publishServiceAuthAccountAdd": "添加账户",
"copyMirror": "复制镜像",
"duplicateMirror": "复制为镜像副本",
"duplicateCompletely": "复制为完整副本",
diff --git a/app/guide/20210808180117-6v0mkxr/.gitignore b/app/guide/20210808180117-6v0mkxr/.gitignore
deleted file mode 100644
index 5e86e558d..000000000
--- a/app/guide/20210808180117-6v0mkxr/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-.idea/
-.siyuan/history/
diff --git a/app/guide/20210808180117-6v0mkxr/.siyuan/sort.json b/app/guide/20210808180117-6v0mkxr/.siyuan/sort.json
index a61e32b0b..cfb82eeda 100644
--- a/app/guide/20210808180117-6v0mkxr/.siyuan/sort.json
+++ b/app/guide/20210808180117-6v0mkxr/.siyuan/sort.json
@@ -1 +1 @@
-{"20200923234011-ieuun1p":1,"20200923234602-gy54e67":8,"20200923234731-h3zkwm2":3,"20200924093441-ft2rhps":1,"20200924095938-a9p5450":2,"20200924100110-vcg96wy":1,"20200924100635-ms0p9lb":6,"20200924100717-yzwzn64":21,"20200924100744-br924ar":10,"20200924100808-j9sddk9":2,"20200924100906-0u4zfq3":4,"20200924100950-9op5xi1":18,"20200924101106-19z4kaa":1,"20200924101200-gss5vee":4,"20200924101225-k254i8g":2,"20200924101256-f8b1sbi":3,"20201004194026-s8h2cog":19,"20201117112518-dott91x":6,"20201121224345-rc27qvo":9,"20201204184532-3qm9l8n":11,"20201210233038-3xr19g5":5,"20201222100222-q47d64s":3,"20201222100339-i5hzcph":2,"20201227201128-m1wrouw":20,"20201227201751-gv0fpx2":22,"20210110181011-fbhoesf":5,"20210117215840-jcl17fx":4,"20210127203829-qe2mzof":12,"20210331201142-4g923es":14,"20210505164949-c085p1d":3,"20210613191509-cbkxcbz":7,"20210615213222-vs5tzbd":15,"20210721112159-9p645xm":1,"20210721112206-mhr9wxi":2,"20210721160238-yvhbh0h":4,"20210808180303-6yi0dv5":1,"20210808180303-axh6q1d":4,"20210808180303-h361q1i":2,"20210808180303-l3qg72k":3,"20210808180303-xaduj2o":5,"20210824202056-udkf7wg":8,"20211010212318-3wx2kqb":13,"20220105101227-n5zpr1a":6,"20220415232231-pqcizol":1,"20220628204454-hhxohv5":2,"20220708103401-mgydrfg":3,"20221016204105-qx2aq0g":3,"20221223221636-ms2b4w9":16,"20230104152135-1iei0xa":23,"20230106104821-9nfphwm":1,"20230304000547-ibldj1z":17,"20230405172236-pg3l9eu":6,"20230429115711-ejbts4s":5,"20230506205948-yah52eb":9,"20230802114825-2jkkct7":5,"20230805231614-vqn28eh":7,"20230805231816-h1z9mpc":2,"20230805232018-hgrq0ju":1,"20230805232134-3d6mx2k":2,"20240113110040-7sgw8kl":2,"20240119211017-1vbbt95":4,"20240119212048-0huuevw":5,"20240208172514-9dsv6na":7,"20240317202444-5txwumu":7}
\ No newline at end of file
+{"20200923234011-ieuun1p":1,"20200923234602-gy54e67":8,"20200923234731-h3zkwm2":3,"20200924093441-ft2rhps":1,"20200924095938-a9p5450":2,"20200924100110-vcg96wy":1,"20200924100635-ms0p9lb":6,"20200924100717-yzwzn64":21,"20200924100744-br924ar":10,"20200924100808-j9sddk9":2,"20200924100906-0u4zfq3":4,"20200924100950-9op5xi1":18,"20200924101106-19z4kaa":1,"20200924101200-gss5vee":4,"20200924101225-k254i8g":2,"20200924101256-f8b1sbi":3,"20201004194026-s8h2cog":19,"20201117112518-dott91x":6,"20201121224345-rc27qvo":9,"20201204184532-3qm9l8n":11,"20201210233038-3xr19g5":5,"20201222100222-q47d64s":3,"20201222100339-i5hzcph":2,"20201227201128-m1wrouw":20,"20201227201751-gv0fpx2":22,"20210110181011-fbhoesf":5,"20210117215840-jcl17fx":4,"20210127203829-qe2mzof":12,"20210331201142-4g923es":14,"20210505164949-c085p1d":3,"20210613191509-cbkxcbz":7,"20210615213222-vs5tzbd":15,"20210721112159-9p645xm":1,"20210721112206-mhr9wxi":2,"20210721160238-yvhbh0h":4,"20210808180303-6yi0dv5":1,"20210808180303-axh6q1d":4,"20210808180303-h361q1i":2,"20210808180303-l3qg72k":3,"20210808180303-xaduj2o":5,"20210824202056-udkf7wg":8,"20211010212318-3wx2kqb":13,"20220105101227-n5zpr1a":6,"20220415232231-pqcizol":1,"20220628204454-hhxohv5":2,"20220708103401-mgydrfg":3,"20221016204105-qx2aq0g":3,"20221223221636-ms2b4w9":16,"20230104152135-1iei0xa":23,"20230106104821-9nfphwm":1,"20230304000547-ibldj1z":17,"20230405172236-pg3l9eu":6,"20230429115711-ejbts4s":5,"20230506205948-yah52eb":9,"20230802114825-2jkkct7":5,"20230805231614-vqn28eh":7,"20230805231816-h1z9mpc":2,"20230805232018-hgrq0ju":1,"20230805232134-3d6mx2k":2,"20240113110040-7sgw8kl":2,"20240119211017-1vbbt95":4,"20240119212048-0huuevw":5,"20240208172514-9dsv6na":7,"20240317202444-5txwumu":7,"20240517031132-jmr5ihm":24}
\ No newline at end of file
diff --git a/app/guide/20210808180117-6v0mkxr/20200923234011-ieuun1p/20210808180303-xaduj2o/20240517031132-jmr5ihm.sy b/app/guide/20210808180117-6v0mkxr/20200923234011-ieuun1p/20210808180303-xaduj2o/20240517031132-jmr5ihm.sy
new file mode 100644
index 000000000..afef5d773
--- /dev/null
+++ b/app/guide/20210808180117-6v0mkxr/20200923234011-ieuun1p/20210808180303-xaduj2o/20240517031132-jmr5ihm.sy
@@ -0,0 +1,526 @@
+{
+ "ID": "20240517031132-jmr5ihm",
+ "Spec": "1",
+ "Type": "NodeDocument",
+ "Properties": {
+ "id": "20240517031132-jmr5ihm",
+ "title": "Publish service",
+ "type": "doc",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-um049u9",
+ "Type": "NodeHeading",
+ "HeadingLevel": 2,
+ "Properties": {
+ "id": "20240517031304-um049u9",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "Overview"
+ }
+ ]
+ },
+ {
+ "ID": "20240517031304-kebcgzv",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031304-kebcgzv",
+ "updated": "20240517031305"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "Joplin supports publishing the content of the current workspace in read-only mode on the local area network."
+ }
+ ]
+ },
+ {
+ "ID": "20240517031304-7e0kvj3",
+ "Type": "NodeHeading",
+ "HeadingLevel": 2,
+ "Properties": {
+ "id": "20240517031304-7e0kvj3",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "Usage"
+ }
+ ]
+ },
+ {
+ "ID": "20240517031304-gt5qj60",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031304-gt5qj60",
+ "updated": "20240517031305"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-sjppgk3",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031304-sjppgk3",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-r9a0anm",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031304-r9a0anm",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "Open "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "Settings"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " - "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "Publish"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " to enter the publishing service settings panel."
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031304-u6inl9h",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031304-u6inl9h",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-ye7ittw",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031304-ye7ittw",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "Set the "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "Server port"
+ },
+ {
+ "Type": "NodeText",
+ "Data": ""
+ }
+ ]
+ },
+ {
+ "ID": "20240517031304-olvdqhj",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031304-olvdqhj",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-1ttdtl4",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031304-1ttdtl4",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-sl59b81",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031304-sl59b81",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "The default port number is "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "code",
+ "TextMarkTextContent": "6808"
+ },
+ {
+ "Type": "NodeText",
+ "Data": "."
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031304-t37dfgj",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031304-t37dfgj",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-mxx5df4",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031304-mxx5df4",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "If the port number is set to "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "code",
+ "TextMarkTextContent": "0"
+ },
+ {
+ "Type": "NodeText",
+ "Data": ", a random port will be used."
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031304-y4kcmaf",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031304-y4kcmaf",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-5qilsih",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031304-5qilsih",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "If access control is required for the publishing service:"
+ }
+ ]
+ },
+ {
+ "ID": "20240517031304-659m8fi",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031304-659m8fi",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-xh0kq2y",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031304-xh0kq2y",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-lay209u",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031304-lay209u",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "Add "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "Authenticated accounts"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " and enable the "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "Service basic authentication"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " switch."
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031304-ri1nm5j",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031304-ri1nm5j",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-4y267ml",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031304-4y267ml",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "When enabled, the publishing service will use the "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "a",
+ "TextMarkAHref": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication#basic_authentication_scheme",
+ "TextMarkTextContent": "Basic authentication scheme"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " to authenticate visitors."
+ }
+ ]
+ },
+ {
+ "ID": "20240517031304-h61xxm7",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031304-h61xxm7",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-1k96w0z",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031304-1k96w0z",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-l5hafpz",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031304-l5hafpz",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "Visitors must enter the username and password set in the \"Authentication Accounts\" before browsing the published content."
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031304-0nps2p8",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031304-0nps2p8",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-y16fc8r",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031304-y16fc8r",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "Enable the "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "Publish service"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " switch."
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031304-6cy4lbq",
+ "Type": "NodeHeading",
+ "HeadingLevel": 2,
+ "Properties": {
+ "id": "20240517031304-6cy4lbq",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "Note"
+ }
+ ]
+ },
+ {
+ "ID": "20240517031304-3slh48m",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031304-3slh48m",
+ "updated": "20240517031305"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-uquw6i6",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031304-uquw6i6",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-j38u7hu",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031304-j38u7hu",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "After enabling the publishing service, visitors can browse the content of the entire workspace."
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031304-c6iqquc",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031304-c6iqquc",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "ID": "20240517031304-1qsa7qz",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031304-1qsa7qz",
+ "updated": "20240517031304"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "When "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "Service basic authentication"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " is disabled, all visitors can browse the content of the entire workspace without authentication."
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/app/guide/20210808180117-czj9bvb/.gitignore b/app/guide/20210808180117-czj9bvb/.gitignore
deleted file mode 100644
index 5e86e558d..000000000
--- a/app/guide/20210808180117-czj9bvb/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-.idea/
-.siyuan/history/
diff --git a/app/guide/20210808180117-czj9bvb/.siyuan/sort.json b/app/guide/20210808180117-czj9bvb/.siyuan/sort.json
index 90390d000..8be2ae31d 100644
--- a/app/guide/20210808180117-czj9bvb/.siyuan/sort.json
+++ b/app/guide/20210808180117-czj9bvb/.siyuan/sort.json
@@ -1 +1 @@
-{"20200812220555-lj3enxa":1,"20200813004551-gm0pbn1":18,"20200813004931-q4cu8na":1,"20200813013559-sgbzl5k":3,"20200813093015-u6bopdt":3,"20200813125307-pxsjela":2,"20200813131152-0wk5akh":4,"20200813163359-v04n73b":10,"20200822191536-rm6hwid":4,"20200825162036-4dx365o":1,"20200828105441-r76vmu5":21,"20200905090211-2vixtlf":2,"20200910201551-h4twhas":6,"20200915214115-42b8zma":10,"20200922102318-oz84yu3":2,"20201004184819-nj8ibyg":19,"20201117101902-2ewjjum":6,"20201121212605-9td1a62":11,"20201204181006-7bkppue":11,"20201210103036-1x3vm8t":5,"20201222093044-rx4zjoy":2,"20201222095049-hghafhe":3,"20201227173504-847cs1q":20,"20201227194925-7ipoiv6":22,"20210110175347-2xrwoiq":5,"20210117211155-56n4odu":4,"20210127202655-2334vvv":12,"20210331200042-94gs1hh":14,"20210505163537-oo97zov":3,"20210612224500-ywcms1m":7,"20210615211733-v6rzowm":15,"20210808180320-abz7w6k":2,"20210808180320-fqgskfj":1,"20210808180320-gyngv2x":3,"20210808180320-qgr0b3q":5,"20210808180321-hbvl5c2":6,"20210824201257-cy7icrc":8,"20211010211311-ffz0wbu":13,"20220415190432-r3xqn3r":1,"20220628204444-9n0y9h2":2,"20221016213308-uz5af79":3,"20221223215557-o6gfsoy":16,"20230104144904-39br4c6":23,"20230106101434-e6g4av3":1,"20230303235619-ex5l63e":17,"20230405155631-leo4vc6":6,"20230428153709-hioyy5l":7,"20230429114837-70asb4j":5,"20230506210010-houyyvy":9,"20230519105228-hm0y74i":8,"20230805222417-2lj3dvk":7,"20230805225107-qm1m2f5":2,"20230805230131-sn7obzb":1,"20230805230218-aea8icj":2,"20230808120347-3cob0nb":2,"20230808120347-mw3qrwy":4,"20230808120347-pzvmkik":1,"20230808120348-hynr7og":5,"20230808120348-lgcp9zm":3,"20230808120348-vaxi6eq":6,"20230808120348-yut741f":7,"20240113102857-c63dmo5":2,"20240119205452-o8xp4ve":4,"20240119205543-hknwwrl":5,"20240208113259-nykkvaq":7,"20240317200013-fim8wm8":9}
\ No newline at end of file
+{"20200812220555-lj3enxa":1,"20200813004551-gm0pbn1":18,"20200813004931-q4cu8na":1,"20200813013559-sgbzl5k":3,"20200813093015-u6bopdt":3,"20200813125307-pxsjela":2,"20200813131152-0wk5akh":4,"20200813163359-v04n73b":10,"20200822191536-rm6hwid":4,"20200825162036-4dx365o":1,"20200828105441-r76vmu5":21,"20200905090211-2vixtlf":2,"20200910201551-h4twhas":6,"20200915214115-42b8zma":10,"20200922102318-oz84yu3":2,"20201004184819-nj8ibyg":19,"20201117101902-2ewjjum":6,"20201121212605-9td1a62":11,"20201204181006-7bkppue":11,"20201210103036-1x3vm8t":5,"20201222093044-rx4zjoy":2,"20201222095049-hghafhe":3,"20201227173504-847cs1q":20,"20201227194925-7ipoiv6":22,"20210110175347-2xrwoiq":5,"20210117211155-56n4odu":4,"20210127202655-2334vvv":12,"20210331200042-94gs1hh":14,"20210505163537-oo97zov":3,"20210612224500-ywcms1m":7,"20210615211733-v6rzowm":15,"20210808180320-abz7w6k":2,"20210808180320-fqgskfj":1,"20210808180320-gyngv2x":3,"20210808180320-qgr0b3q":5,"20210808180321-hbvl5c2":6,"20210824201257-cy7icrc":8,"20211010211311-ffz0wbu":13,"20220415190432-r3xqn3r":1,"20220628204444-9n0y9h2":2,"20221016213308-uz5af79":3,"20221223215557-o6gfsoy":16,"20230104144904-39br4c6":23,"20230106101434-e6g4av3":1,"20230303235619-ex5l63e":17,"20230405155631-leo4vc6":6,"20230428153709-hioyy5l":7,"20230429114837-70asb4j":5,"20230506210010-houyyvy":9,"20230519105228-hm0y74i":8,"20230805222417-2lj3dvk":7,"20230805225107-qm1m2f5":2,"20230805230131-sn7obzb":1,"20230805230218-aea8icj":2,"20230808120347-3cob0nb":2,"20230808120347-mw3qrwy":4,"20230808120347-pzvmkik":1,"20230808120348-hynr7og":5,"20230808120348-lgcp9zm":3,"20230808120348-vaxi6eq":6,"20230808120348-yut741f":7,"20240113102857-c63dmo5":2,"20240119205452-o8xp4ve":4,"20240119205543-hknwwrl":5,"20240208113259-nykkvaq":7,"20240317200013-fim8wm8":9,"20240517031028-xqinazo":24}
\ No newline at end of file
diff --git a/app/guide/20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180321-hbvl5c2/20240517031028-xqinazo.sy b/app/guide/20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180321-hbvl5c2/20240517031028-xqinazo.sy
new file mode 100644
index 000000000..9e2bbbc18
--- /dev/null
+++ b/app/guide/20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180321-hbvl5c2/20240517031028-xqinazo.sy
@@ -0,0 +1,540 @@
+{
+ "ID": "20240517031028-xqinazo",
+ "Spec": "1",
+ "Type": "NodeDocument",
+ "Properties": {
+ "id": "20240517031028-xqinazo",
+ "title": "发布服务",
+ "type": "doc",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-7ox0m9z",
+ "Type": "NodeHeading",
+ "HeadingLevel": 2,
+ "Properties": {
+ "id": "20240517031044-7ox0m9z",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "概述"
+ }
+ ]
+ },
+ {
+ "ID": "20240517031044-6mppc0k",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031044-6mppc0k",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "思源笔记支持以只读模式在局域网中发布当前工作空间的内容。"
+ }
+ ]
+ },
+ {
+ "ID": "20240517031044-anhkwow",
+ "Type": "NodeHeading",
+ "HeadingLevel": 2,
+ "Properties": {
+ "id": "20240517031044-anhkwow",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "使用方式"
+ }
+ ]
+ },
+ {
+ "ID": "20240517031044-0vj6or7",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031044-0vj6or7",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-8ugboo7",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031044-8ugboo7",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-grogeue",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031044-grogeue",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "打开 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "设置"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " - "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "发布"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 进入发布服务的设置面板"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031044-mta08zv",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031044-mta08zv",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-7dg9xy9",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031044-7dg9xy9",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "设置 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "服务端口号"
+ },
+ {
+ "Type": "NodeText",
+ "Data": ""
+ }
+ ]
+ },
+ {
+ "ID": "20240517031044-vzj8o1a",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031044-vzj8o1a",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-t2igim6",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031044-t2igim6",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-8ghv9tj",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031044-8ghv9tj",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "默认的端口号为 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "code",
+ "TextMarkTextContent": "6808"
+ },
+ {
+ "Type": "NodeText",
+ "Data": ""
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031044-3oto1iz",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031044-3oto1iz",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-0m68jzx",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031044-0m68jzx",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "若端口号设置为 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "code",
+ "TextMarkTextContent": "0"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 将使用随机端口"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031044-ddii8sb",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031044-ddii8sb",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-vaiskyz",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031044-vaiskyz",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "若需要对发布服务进行访问控制"
+ }
+ ]
+ },
+ {
+ "ID": "20240517031044-ze7l6sg",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031044-ze7l6sg",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-fxpcxvc",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031044-fxpcxvc",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-bno9bca",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031044-bno9bca",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "添加 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "认证账户"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 并开启 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "服务 Basic 认证"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 开关"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031044-29kw4ks",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031044-29kw4ks",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-g05n8gc",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031044-g05n8gc",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "开启后发布服务将使用 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "a",
+ "TextMarkAHref": "https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Authentication#basic_验证方案",
+ "TextMarkTextContent": "Basic 验证方案"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 对访问者进行认证"
+ }
+ ]
+ },
+ {
+ "ID": "20240517031044-e54f9vf",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031044-e54f9vf",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-kr1t232",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031044-kr1t232",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-rf8nyba",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031044-rf8nyba",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "访问者在浏览发布内容前必须正确输入 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "认证账户"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 中设置的用户名与密码"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031044-s5d5aak",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031044-s5d5aak",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-ec9vaac",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031044-ec9vaac",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "开启 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "发布服务"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 开关"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031044-6le4t1r",
+ "Type": "NodeHeading",
+ "HeadingLevel": 2,
+ "Properties": {
+ "id": "20240517031044-6le4t1r",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "tag",
+ "TextMarkTextContent": "注意"
+ },
+ {
+ "Type": "NodeText",
+ "Data": ""
+ }
+ ]
+ },
+ {
+ "ID": "20240517031044-ahzjzvg",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031044-ahzjzvg",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-8f3g2fd",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031044-8f3g2fd",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-uiys91u",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031044-uiys91u",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "开启发布服务后访问者可以浏览整个工作空间的内容"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031044-979coq3",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031044-979coq3",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "ID": "20240517031044-7be46qj",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031044-7be46qj",
+ "updated": "20240517031044"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "关闭 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "服务 Basic 认证"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 后所有的访问者无需认证即可浏览整个工作空间的内容"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/app/guide/20211226090932-5lcq56f/.gitignore b/app/guide/20211226090932-5lcq56f/.gitignore
deleted file mode 100644
index 5e86e558d..000000000
--- a/app/guide/20211226090932-5lcq56f/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-.idea/
-.siyuan/history/
diff --git a/app/guide/20211226090932-5lcq56f/.siyuan/sort.json b/app/guide/20211226090932-5lcq56f/.siyuan/sort.json
index b16c52c8f..308455230 100644
--- a/app/guide/20211226090932-5lcq56f/.siyuan/sort.json
+++ b/app/guide/20211226090932-5lcq56f/.siyuan/sort.json
@@ -1 +1 @@
-{"20211226114339-dk0gtpr":8,"20211226114929-08ap1r0":9,"20211226115043-afhev0g":4,"20211226115227-r1rty9v":3,"20211226115423-d5z1joq":1,"20211226115825-mhcslw2":1,"20211226120055-9mityht":1,"20211226120147-ib6yy3i":2,"20211226120247-63nd8y5":3,"20211226120349-rbkmozu":4,"20211226120422-bkzsd2e":5,"20211226120508-yzh70eh":6,"20211226120802-77aj0is":7,"20211226120854-dr1jfx2":2,"20211226120933-vnjgwwh":3,"20211226121109-f060fkg":4,"20211226121203-rjjngpz":5,"20211226121319-emrk2yy":1,"20211226121322-9argcys":3,"20211226121329-c5v3dto":22,"20211226121332-irgblss":4,"20211226121438-xaafdo8":2,"20211226121503-k3jma6m":1,"20211226121808-fnxmngk":2,"20211226122358-hctqcn5":21,"20211226122459-08mi5cq":20,"20211226122523-rl8356a":19,"20211226122549-jktxego":18,"20211226122707-8cr09co":15,"20211226122728-cnqf7rz":14,"20211226122814-r1rdpcx":13,"20211226122943-st7fpcj":12,"20211226123004-dplpw0o":11,"20211226123038-4umgpxy":10,"20211226123101-qjw03ab":8,"20211226123130-jpeg5b2":6,"20211226123154-fd5e001":5,"20211226123216-tlxw66f":4,"20211226123241-51pujtr":3,"20211226123302-akitvb1":2,"20220105101348-corstqc":6,"20220415232129-shpzg6r":1,"20220628204420-ui79vkt":2,"20220708102441-u6wopo9":3,"20221016213639-1nag9jj":3,"20221223221501-mops33i":16,"20230104151953-48hwkwf":23,"20230106104645-o838uew":1,"20230304000829-9jwu3po":17,"20230405172131-yb16aax":6,"20230429115206-ob8nl8t":5,"20230506211210-1roopyo":9,"20230805232636-zh0adz2":6,"20230805232719-04mqbcx":2,"20230805232903-erdoerp":1,"20230805232920-5fdco36":2,"20240113110500-dz2ae4n":2,"20240119210914-a2tm8c4":4,"20240119212000-qkldbjm":5,"20240208171522-y7dxcno":7,"20240317202230-l8duv3r":7,"20240508010647-8nuyk31":5}
\ No newline at end of file
+{"20211226114339-dk0gtpr":8,"20211226114929-08ap1r0":9,"20211226115043-afhev0g":4,"20211226115227-r1rty9v":3,"20211226115423-d5z1joq":1,"20211226115825-mhcslw2":1,"20211226120055-9mityht":1,"20211226120147-ib6yy3i":2,"20211226120247-63nd8y5":3,"20211226120349-rbkmozu":4,"20211226120422-bkzsd2e":5,"20211226120508-yzh70eh":6,"20211226120802-77aj0is":7,"20211226120854-dr1jfx2":2,"20211226120933-vnjgwwh":3,"20211226121109-f060fkg":4,"20211226121203-rjjngpz":5,"20211226121319-emrk2yy":1,"20211226121322-9argcys":3,"20211226121329-c5v3dto":22,"20211226121332-irgblss":4,"20211226121438-xaafdo8":2,"20211226121503-k3jma6m":1,"20211226121808-fnxmngk":2,"20211226122358-hctqcn5":21,"20211226122459-08mi5cq":20,"20211226122523-rl8356a":19,"20211226122549-jktxego":18,"20211226122707-8cr09co":15,"20211226122728-cnqf7rz":14,"20211226122814-r1rdpcx":13,"20211226122943-st7fpcj":12,"20211226123004-dplpw0o":11,"20211226123038-4umgpxy":10,"20211226123101-qjw03ab":8,"20211226123130-jpeg5b2":6,"20211226123154-fd5e001":5,"20211226123216-tlxw66f":4,"20211226123241-51pujtr":3,"20211226123302-akitvb1":2,"20220105101348-corstqc":6,"20220415232129-shpzg6r":1,"20220628204420-ui79vkt":2,"20220708102441-u6wopo9":3,"20221016213639-1nag9jj":3,"20221223221501-mops33i":16,"20230104151953-48hwkwf":23,"20230106104645-o838uew":1,"20230304000829-9jwu3po":17,"20230405172131-yb16aax":6,"20230429115206-ob8nl8t":5,"20230506211210-1roopyo":9,"20230805232636-zh0adz2":6,"20230805232719-04mqbcx":2,"20230805232903-erdoerp":1,"20230805232920-5fdco36":2,"20240113110500-dz2ae4n":2,"20240119210914-a2tm8c4":4,"20240119212000-qkldbjm":5,"20240208171522-y7dxcno":7,"20240317202230-l8duv3r":7,"20240508010647-8nuyk31":5,"20240517031052-mgoxs16":24}
\ No newline at end of file
diff --git a/app/guide/20211226090932-5lcq56f/20211226115423-d5z1joq/20211226121203-rjjngpz/20240517031052-mgoxs16.sy b/app/guide/20211226090932-5lcq56f/20211226115423-d5z1joq/20211226121203-rjjngpz/20240517031052-mgoxs16.sy
new file mode 100644
index 000000000..f5b1cf781
--- /dev/null
+++ b/app/guide/20211226090932-5lcq56f/20211226115423-d5z1joq/20211226121203-rjjngpz/20240517031052-mgoxs16.sy
@@ -0,0 +1,540 @@
+{
+ "ID": "20240517031052-mgoxs16",
+ "Spec": "1",
+ "Type": "NodeDocument",
+ "Properties": {
+ "id": "20240517031052-mgoxs16",
+ "title": "發布服務",
+ "type": "doc",
+ "updated": "20240517031115"
+ },
+ "Children": [
+ {
+ "ID": "20240517031115-pjkrctx",
+ "Type": "NodeHeading",
+ "HeadingLevel": 2,
+ "Properties": {
+ "id": "20240517031115-pjkrctx",
+ "updated": "20240517031115"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "概述"
+ }
+ ]
+ },
+ {
+ "ID": "20240517031116-a0xf075",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031116-a0xf075",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "思源筆記支援以只讀模式在區域網路中發佈當前工作空間的內容。"
+ }
+ ]
+ },
+ {
+ "ID": "20240517031116-ml8jd6n",
+ "Type": "NodeHeading",
+ "HeadingLevel": 2,
+ "Properties": {
+ "id": "20240517031116-ml8jd6n",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "使用方式"
+ }
+ ]
+ },
+ {
+ "ID": "20240517031116-5u42tlr",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031116-5u42tlr",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-06mevu7",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031116-06mevu7",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-wqo2aje",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031116-wqo2aje",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "開啟 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "設定"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " - "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "發佈"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 進入發佈服務的設定面板"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031116-dsvhebl",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031116-dsvhebl",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-13481er",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031116-13481er",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "設定 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "服務端口號"
+ },
+ {
+ "Type": "NodeText",
+ "Data": ""
+ }
+ ]
+ },
+ {
+ "ID": "20240517031116-sjbg5cn",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031116-sjbg5cn",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-z1q43ui",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031116-z1q43ui",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-ssdjmbf",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031116-ssdjmbf",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "默認的端口號為 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "code",
+ "TextMarkTextContent": "6808"
+ },
+ {
+ "Type": "NodeText",
+ "Data": ""
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031116-jkcxgaj",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031116-jkcxgaj",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-ka1wome",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031116-ka1wome",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "若端口號設定為 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "code",
+ "TextMarkTextContent": "0"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 將使用隨機端口"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031116-ipkirs4",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031116-ipkirs4",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-g8qr29s",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031116-g8qr29s",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "若需要對發佈服務進行訪問控制"
+ }
+ ]
+ },
+ {
+ "ID": "20240517031116-maj6mmd",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031116-maj6mmd",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-du7rttx",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031116-du7rttx",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-ct3chrz",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031116-ct3chrz",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "添加 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "認證帳戶"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 並開啟 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "服務 Basic 認證"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 開關"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031116-dlaep2b",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031116-dlaep2b",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-3u2v8g7",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031116-3u2v8g7",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "開啟後發佈服務將使用 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "a",
+ "TextMarkAHref": "https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Authentication#basic_验证方案",
+ "TextMarkTextContent": "Basic 驗證方案"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 對訪問者進行認證"
+ }
+ ]
+ },
+ {
+ "ID": "20240517031116-qmzfje7",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031116-qmzfje7",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-xthto7w",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031116-xthto7w",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-kbz5qye",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031116-kbz5qye",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "訪問者在瀏覽發佈內容前必須正確輸入 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "認證帳戶"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 中設定的用戶名與密碼"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031116-bx01v3n",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031116-bx01v3n",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-44j60lx",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031116-44j60lx",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "開啟 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "發佈服務"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 開關"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031116-2v0lh0m",
+ "Type": "NodeHeading",
+ "HeadingLevel": 3,
+ "Properties": {
+ "id": "20240517031116-2v0lh0m",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "tag",
+ "TextMarkTextContent": "注意"
+ },
+ {
+ "Type": "NodeText",
+ "Data": ""
+ }
+ ]
+ },
+ {
+ "ID": "20240517031116-lx0pe26",
+ "Type": "NodeList",
+ "ListData": {},
+ "Properties": {
+ "id": "20240517031116-lx0pe26",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-kvje8ru",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031116-kvje8ru",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-gydcx3b",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031116-gydcx3b",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "開啟發佈服務後訪問者可以瀏覽整個工作空間的內容"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240517031116-ufsul2c",
+ "Type": "NodeListItem",
+ "ListData": {
+ "BulletChar": 42,
+ "Marker": "Kg=="
+ },
+ "Properties": {
+ "id": "20240517031116-ufsul2c",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "ID": "20240517031116-xyb4012",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240517031116-xyb4012",
+ "updated": "20240517031116"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "關閉 "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "服務 Basic 認證"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " 後所有的訪問者無需認證即可瀏覽整個工作空間的內容"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/app/guide/20240530133126-axarxgx/.siyuan/sort.json b/app/guide/20240530133126-axarxgx/.siyuan/sort.json
index f312046ce..79c3184bf 100644
--- a/app/guide/20240530133126-axarxgx/.siyuan/sort.json
+++ b/app/guide/20240530133126-axarxgx/.siyuan/sort.json
@@ -1 +1 @@
-{"20240530101000-0zd9si2":13,"20240530101000-1m5un7l":10,"20240530101000-1vvnhju":6,"20240530101000-35bbvcx":2,"20240530101000-3eaevtp":7,"20240530101000-3ourzoa":2,"20240530101000-3qhz7br":1,"20240530101000-3xv6jjr":9,"20240530101000-40hohog":19,"20240530101000-4cqkoel":23,"20240530101000-4p096e8":1,"20240530101000-4qitucx":1,"20240530101000-58z6rjh":2,"20240530101000-5gi76ax":8,"20240530101000-5k5d5i3":2,"20240530101000-6x9ivi7":11,"20240530101000-75auqcn":6,"20240530101000-78d5w10":4,"20240530101000-7yv4y5z":4,"20240530101000-875snki":7,"20240530101000-8m2dowc":9,"20240530101000-96n5y9v":1,"20240530101000-a91lmk2":3,"20240530101000-bb0qktp":1,"20240530101000-bgv304g":8,"20240530101000-boiita2":4,"20240530101000-bpj42r0":2,"20240530101000-cb37szr":7,"20240530101000-d31i9v5":2,"20240530101000-dro2zi9":5,"20240530101000-dytmky4":22,"20240530101000-e6z5okf":3,"20240530101000-ei5t6tt":17,"20240530101000-f16hpct":20,"20240530101000-flot1gj":7,"20240530101000-g3ugxml":5,"20240530101000-gc0tuyd":3,"20240530101000-gcdp3gl":3,"20240530101000-gvtksyj":1,"20240530101000-h0cp5vx":5,"20240530101000-hkgs92c":5,"20240530101000-hnu6o79":2,"20240530101000-hq9sn3k":1,"20240530101000-jp793ic":4,"20240530101000-mpln2lp":6,"20240530101000-mrlr6e9":4,"20240530101000-na9sys7":1,"20240530101000-odye3ea":3,"20240530101000-qf0xtkd":2,"20240530101000-scr2p21":5,"20240530101000-to5uvpi":12,"20240530101000-txrc7z1":15,"20240530101000-uxno1yp":3,"20240530101000-vejnh1k":1,"20240530101000-vql5s27":5,"20240530101000-wo49zvq":2,"20240530101000-xc13cm6":6,"20240530101000-xq26o73":21,"20240530101000-xr22qn8":4,"20240530101000-xsbxokr":18,"20240530101000-ynpmvl7":16,"20240530101000-zj4k048":3,"20240530101000-znj103k":10,"20240530101000-zprnpfi":14}
\ No newline at end of file
+{"20240530101000-0zd9si2":13,"20240530101000-1m5un7l":10,"20240530101000-1vvnhju":6,"20240530101000-35bbvcx":2,"20240530101000-3eaevtp":7,"20240530101000-3ourzoa":2,"20240530101000-3qhz7br":1,"20240530101000-3xv6jjr":9,"20240530101000-40hohog":19,"20240530101000-4cqkoel":23,"20240530101000-4p096e8":1,"20240530101000-4qitucx":1,"20240530101000-58z6rjh":2,"20240530101000-5gi76ax":8,"20240530101000-5k5d5i3":2,"20240530101000-6x9ivi7":11,"20240530101000-75auqcn":6,"20240530101000-78d5w10":4,"20240530101000-7yv4y5z":4,"20240530101000-875snki":7,"20240530101000-8m2dowc":9,"20240530101000-96n5y9v":1,"20240530101000-a91lmk2":3,"20240530101000-bb0qktp":1,"20240530101000-bgv304g":8,"20240530101000-boiita2":4,"20240530101000-bpj42r0":2,"20240530101000-cb37szr":7,"20240530101000-d31i9v5":2,"20240530101000-dro2zi9":5,"20240530101000-dytmky4":22,"20240530101000-e6z5okf":3,"20240530101000-ei5t6tt":17,"20240530101000-f16hpct":20,"20240530101000-flot1gj":7,"20240530101000-g3ugxml":5,"20240530101000-gc0tuyd":3,"20240530101000-gcdp3gl":3,"20240530101000-gvtksyj":1,"20240530101000-h0cp5vx":5,"20240530101000-hkgs92c":5,"20240530101000-hnu6o79":2,"20240530101000-hq9sn3k":1,"20240530101000-jp793ic":4,"20240530101000-mpln2lp":6,"20240530101000-mrlr6e9":4,"20240530101000-na9sys7":1,"20240530101000-odye3ea":3,"20240530101000-qf0xtkd":2,"20240530101000-scr2p21":5,"20240530101000-to5uvpi":12,"20240530101000-txrc7z1":15,"20240530101000-uxno1yp":3,"20240530101000-vejnh1k":1,"20240530101000-vql5s27":5,"20240530101000-wo49zvq":2,"20240530101000-xc13cm6":6,"20240530101000-xq26o73":21,"20240530101000-xr22qn8":4,"20240530101000-xsbxokr":18,"20240530101000-ynpmvl7":16,"20240530101000-zj4k048":3,"20240530101000-znj103k":10,"20240530101000-zprnpfi":14,"20240610233601-ylh1mvk":24}
\ No newline at end of file
diff --git a/app/guide/20240530133126-axarxgx/20240530101000-4qitucx/20240530101000-g3ugxml/20240610233601-ylh1mvk.sy b/app/guide/20240530133126-axarxgx/20240530101000-4qitucx/20240530101000-g3ugxml/20240610233601-ylh1mvk.sy
new file mode 100644
index 000000000..f05e8f801
--- /dev/null
+++ b/app/guide/20240530133126-axarxgx/20240530101000-4qitucx/20240530101000-g3ugxml/20240610233601-ylh1mvk.sy
@@ -0,0 +1,676 @@
+{
+ "ID": "20240610233601-ylh1mvk",
+ "Spec": "1",
+ "Type": "NodeDocument",
+ "Properties": {
+ "id": "20240610233601-ylh1mvk",
+ "title": "サービスの公開",
+ "type": "doc",
+ "updated": "20240610235250"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-jjii9tu",
+ "Type": "NodeHeading",
+ "HeadingLevel": 2,
+ "Properties": {
+ "id": "20240610233629-jjii9tu",
+ "updated": "20240610235250"
+ },
+ "Children": [
+ {
+ "Type": "NodeHeadingC8hMarker",
+ "Data": "## ",
+ "Properties": {
+ "id": ""
+ }
+ },
+ {
+ "Type": "NodeText",
+ "Data": "概要",
+ "Properties": {
+ "id": ""
+ }
+ }
+ ]
+ },
+ {
+ "ID": "20240610233629-49em84g",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240610233629-49em84g",
+ "updated": "20240610233739"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "SiYuan Note は、現在のワークスペースの内容を読み取り専用モードでローカルネットワークで公開することができます。",
+ "Properties": {
+ "id": ""
+ }
+ }
+ ]
+ },
+ {
+ "ID": "20240610233629-bxuf2mx",
+ "Type": "NodeHeading",
+ "HeadingLevel": 2,
+ "Properties": {
+ "id": "20240610233629-bxuf2mx",
+ "updated": "20240610235250"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "使い方"
+ }
+ ]
+ },
+ {
+ "ID": "20240610233629-7d7e66r",
+ "Type": "NodeList",
+ "ListData": {
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-7d7e66r",
+ "updated": "20240610235250"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-jn7c5xq",
+ "Type": "NodeListItem",
+ "Data": "*",
+ "ListData": {
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-jn7c5xq",
+ "updated": "20240610234354"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-ibn4bp6",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240610233629-ibn4bp6",
+ "updated": "20240610234354"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": ""
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "設定"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " - "
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "公開する"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " に移動して、公開サービスの設定パネルに入ります。"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240610233629-j8ml6bw",
+ "Type": "NodeListItem",
+ "Data": "*",
+ "ListData": {
+ "Tight": true,
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-j8ml6bw",
+ "updated": "20240610234344"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-fubq5bz",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240610233629-fubq5bz",
+ "updated": "20240610234344"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": ""
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "サービスポート"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " を設定します。"
+ }
+ ]
+ },
+ {
+ "ID": "20240610233629-d9q97le",
+ "Type": "NodeList",
+ "ListData": {
+ "Tight": true,
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-d9q97le",
+ "updated": "20240610233629"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-y8ynj1h",
+ "Type": "NodeListItem",
+ "Data": "*",
+ "ListData": {
+ "Tight": true,
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-y8ynj1h",
+ "updated": "20240610233629"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-fwe6fgu",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240610233629-fwe6fgu",
+ "updated": "20240610233629"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "デフォルトのポート番号は ",
+ "Properties": {
+ "id": ""
+ }
+ },
+ {
+ "Type": "NodeTextMark",
+ "Properties": {
+ "id": ""
+ },
+ "TextMarkType": "code",
+ "TextMarkTextContent": "6808"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " です。",
+ "Properties": {
+ "id": ""
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240610233629-amkxqp8",
+ "Type": "NodeListItem",
+ "Data": "*",
+ "ListData": {
+ "Tight": true,
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-amkxqp8",
+ "updated": "20240610233629"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-726ai0u",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240610233629-726ai0u",
+ "updated": "20240610233629"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "ポート番号を ",
+ "Properties": {
+ "id": ""
+ }
+ },
+ {
+ "Type": "NodeTextMark",
+ "Properties": {
+ "id": ""
+ },
+ "TextMarkType": "code",
+ "TextMarkTextContent": "0"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " に設定すると、ランダムなポートが使用されます。",
+ "Properties": {
+ "id": ""
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240610233629-c2bncke",
+ "Type": "NodeListItem",
+ "Data": "*",
+ "ListData": {
+ "Tight": true,
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-c2bncke",
+ "updated": "20240610235250"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-c02853s",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240610233629-c02853s",
+ "updated": "20240610233629"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "公開サービスにアクセス制限を設定する場合",
+ "Properties": {
+ "id": ""
+ }
+ }
+ ]
+ },
+ {
+ "ID": "20240610233629-a5alsxq",
+ "Type": "NodeList",
+ "ListData": {
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-a5alsxq",
+ "updated": "20240610235250"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-4p8jyop",
+ "Type": "NodeListItem",
+ "Data": "*",
+ "ListData": {
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-4p8jyop",
+ "updated": "20240610235142"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-6pki0nz",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240610233629-6pki0nz",
+ "updated": "20240610235142"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": ""
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "認証アカウント"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " を追加し、"
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "サービスの基本認証"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " スイッチをオンにします。"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240610233629-3s2kd31",
+ "Type": "NodeListItem",
+ "Data": "*",
+ "ListData": {
+ "Tight": true,
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-3s2kd31",
+ "updated": "20240610235250"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-fozs5am",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240610233629-fozs5am",
+ "updated": "20240610233721"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "この後、公開サービスはアクセスするユーザーを ",
+ "Properties": {
+ "id": ""
+ }
+ },
+ {
+ "Type": "NodeTextMark",
+ "Properties": {
+ "id": ""
+ },
+ "TextMarkType": "a",
+ "TextMarkAHref": "https://developer.mozilla.org/ja/docs/Web/HTTP/Authentication#basic_認証方式",
+ "TextMarkTextContent": "Basic 認証方式"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " を使用して認証します。",
+ "Properties": {
+ "id": ""
+ }
+ }
+ ]
+ },
+ {
+ "ID": "20240610233629-b18hlwj",
+ "Type": "NodeList",
+ "ListData": {
+ "Tight": true,
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-b18hlwj",
+ "updated": "20240610235250"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-4mziigo",
+ "Type": "NodeListItem",
+ "Data": "*",
+ "ListData": {
+ "Tight": true,
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-4mziigo",
+ "updated": "20240610235250"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-526pequ",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240610233629-526pequ",
+ "updated": "20240610235250"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "ユーザーは、公開コンテンツを閲覧する前に、"
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "認証アカウント"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " で設定したユーザー名とパスワードを正しく入力する必要があります。"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240610233629-a4d5gct",
+ "Type": "NodeListItem",
+ "Data": "*",
+ "ListData": {
+ "Tight": true,
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-a4d5gct",
+ "updated": "20240610234926"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-cqspvm0",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240610233629-cqspvm0",
+ "updated": "20240610234926"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": ""
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "サービスを公開する"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " スイッチをオンにします"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240610233629-ns08k8s",
+ "Type": "NodeHeading",
+ "HeadingLevel": 2,
+ "Properties": {
+ "id": "20240610233629-ns08k8s",
+ "updated": "20240610235147"
+ },
+ "Children": [
+ {
+ "Type": "NodeHeadingC8hMarker",
+ "Data": "## ",
+ "Properties": {
+ "id": ""
+ }
+ },
+ {
+ "Type": "NodeText",
+ "Data": "",
+ "Properties": {
+ "id": ""
+ }
+ },
+ {
+ "Type": "NodeTextMark",
+ "Properties": {
+ "id": ""
+ },
+ "TextMarkType": "tag",
+ "TextMarkTextContent": "注意事項"
+ },
+ {
+ "Type": "NodeText",
+ "Data": "",
+ "Properties": {
+ "id": ""
+ }
+ }
+ ]
+ },
+ {
+ "ID": "20240610233629-uqp9rz9",
+ "Type": "NodeList",
+ "ListData": {
+ "Tight": true,
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-uqp9rz9",
+ "updated": "20240610235147"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-jiv7u6m",
+ "Type": "NodeListItem",
+ "Data": "*",
+ "ListData": {
+ "Tight": true,
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-jiv7u6m",
+ "updated": "20240610233629"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-j8ancdr",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240610233629-j8ancdr",
+ "updated": "20240610233629"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": "公開サービスを開始すると、訪問者はワークスペースの全コンテンツを閲覧できます。",
+ "Properties": {
+ "id": ""
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ID": "20240610233629-10tmo1g",
+ "Type": "NodeListItem",
+ "Data": "*",
+ "ListData": {
+ "Tight": true,
+ "BulletChar": 42,
+ "Padding": 2,
+ "Marker": "Kg==",
+ "Num": -1
+ },
+ "Properties": {
+ "id": "20240610233629-10tmo1g",
+ "updated": "20240610235147"
+ },
+ "Children": [
+ {
+ "ID": "20240610233629-20lo5k4",
+ "Type": "NodeParagraph",
+ "Properties": {
+ "id": "20240610233629-20lo5k4",
+ "updated": "20240610235147"
+ },
+ "Children": [
+ {
+ "Type": "NodeText",
+ "Data": ""
+ },
+ {
+ "Type": "NodeTextMark",
+ "TextMarkType": "kbd",
+ "TextMarkTextContent": "サービスの基本認証"
+ },
+ {
+ "Type": "NodeText",
+ "Data": " を無効にすると、すべての訪問者はワークスペースの全コンテンツを認証なしで閲覧できます。"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/app/src/config/editor.ts b/app/src/config/editor.ts
index 472e6b961..1dcd1b9c3 100644
--- a/app/src/config/editor.ts
+++ b/app/src/config/editor.ts
@@ -310,10 +310,12 @@ export const editor = {
if (fontFamilyElement.tagName === "SELECT") {
let fontFamilyHTML = ``;
fetchPost("/api/system/getSysFonts", {}, (response) => {
- response.data.forEach((item: string) => {
- fontFamilyHTML += ``;
- });
- fontFamilyElement.innerHTML = fontFamilyHTML;
+ if (response.code === 0) {
+ response.data.forEach((item: string) => {
+ fontFamilyHTML += ``;
+ });
+ fontFamilyElement.innerHTML = fontFamilyHTML;
+ }
});
}
editor.element.querySelector("#clearHistory").addEventListener("click", () => {
diff --git a/app/src/config/index.ts b/app/src/config/index.ts
index e55b48355..4c246f6ef 100644
--- a/app/src/config/index.ts
+++ b/app/src/config/index.ts
@@ -13,6 +13,7 @@ import {query} from "./query";
import {Dialog} from "../dialog";
import {ai} from "./ai";
import {flashcard} from "./flashcard";
+import {publish} from "./publish";
import {App} from "../index";
import {isHuawei} from "../protyle/util/compatibility";
import {Constants} from "../constants";
@@ -79,6 +80,11 @@ export const genItemPanel = (type: string, containerElement: Element, app: App)
query.element = containerElement;
query.bindEvent();
break;
+ case "publish":
+ containerElement.innerHTML = publish.genHTML();
+ publish.element = containerElement;
+ publish.bindEvent();
+ break;
default:
break;
}
@@ -115,6 +121,7 @@ export const openSetting = (app: App) => {
${ip}:${port}${ip}:${port}