🎨 Set the workspace path and lang via environment variable (#14148)

This commit is contained in:
Germano Rizzo 2025-02-18 17:25:16 +01:00 committed by GitHub
parent 4b44951f15
commit 43e7c53dc0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 28 additions and 4 deletions

View File

@ -207,6 +207,7 @@ docker run -d \
* `PGID`: Custom group ID (optional, defaults to `1000` if not provided)
* `workspace_dir_host`: The workspace folder path on the host
* `workspace_dir_container`: The path of the workspace folder in the container, as specified in `--workspace`
* In alternative, it's possible to set the auth code via the `SIYUAN_WORKSPACE_PATH` env variable. The commandline will always have the priority, if both are set.
* `accessAuthCode`: Access authorization code (please **be sure to modify**, otherwise anyone can access your data)
* In alternative, it's possible to set the auth code via the `SIYUAN_ACCESS_AUTH_CODE` env variable. The commandline will always have the priority, if both are set.

View File

@ -206,6 +206,7 @@ docker run -d \
* `PGID`: カスタムグループIDオプション、指定しない場合はデフォルトで `1000`
* `workspace_dir_host`: ホスト上のワークスペースフォルダーのパス
* `workspace_dir_container`: コンテナ内のワークスペースフォルダーのパス、`--workspace` で指定されたものと同じ
* また、`SIYUAN_WORKSPACE_PATH` 環境変数を設定することで認証コードを指定することもできます。両方が設定されている場合、コマンドラインの値が優先されます。
* `accessAuthCode`: アクセス認証コード(**必ず変更してください**、そうしないと誰でもデータにアクセスできます)
* また、`SIYUAN_ACCESS_AUTH_CODE` 環境変数を設定することで認証コードを指定することもできます。両方が設定されている場合、コマンドラインの値が優先されます。

View File

@ -211,6 +211,7 @@ docker run -d \
* `PGID`: 自定义组 ID可选如果未提供默认为 `1000`
* `workspace_dir_host`:宿主机上的工作空间文件夹路径
* `workspace_dir_container`:容器内工作空间文件夹路径,和后面 `--workspace` 指定成一样的
* 另外,也可以通过 `SIYUAN_WORKSPACE_PATH` 环境变量设置授权码。如果两者都设置了,命令行的值将优先。
* `accessAuthCode`:访问授权码,请**务必修改**,否则任何人都可以读写你的数据
* 另外,也可以通过 `SIYUAN_ACCESS_AUTH_CODE` 环境变量设置授权码。如果两者都设置了,命令行的值将优先。

View File

@ -47,6 +47,11 @@ var Mode = "prod"
const (
Ver = "3.1.22"
IsInsider = false
// env vars as fallback for commandline parameters
SIYUAN_ACCESS_AUTH_CODE = "SIYUAN_ACCESS_AUTH_CODE"
SIYUAN_WORKSPACE = "SIYUAN_WORKSPACE_PATH"
SIYUAN_LANG = "SIYUAN_LANG"
)
var (
@ -70,6 +75,19 @@ var (
HttpServing = false // 是否 HTTP 伺服已经可用
)
// If a commandline parameter is empty, fallback to the env var.
//
// "empty" means the parameter is not set or set to an empty string.
// It returns a pointer to string, to be a drop-in replacement for
// the commandline parameter itself.
func coalesceToEnvVar(fromCLI *string, envVarName string) *string {
if fromCLI == nil || "" == *fromCLI {
ret := os.Getenv(envVarName)
return &ret
}
return fromCLI
}
func Boot() {
initEnvVars()
IncBootProgress(3, "Booting kernel...")
@ -87,6 +105,13 @@ func Boot() {
mode := flag.String("mode", "prod", "dev/prod")
flag.Parse()
// Fallback to env vars if commandline args are not set
// valid only for CLI args that default to "", as the
// others have explicit (sane) defaults
workspacePath = coalesceToEnvVar(workspacePath, SIYUAN_WORKSPACE)
accessAuthCode = coalesceToEnvVar(accessAuthCode, SIYUAN_ACCESS_AUTH_CODE)
lang = coalesceToEnvVar(lang, SIYUAN_LANG)
if "" != *wdPath {
WorkingDir = *wdPath
}
@ -102,10 +127,6 @@ func Boot() {
Container = ContainerStd
if RunInContainer {
Container = ContainerDocker
if "" == AccessAuthCode {
// Priority to commandline; if not set, look into env var
AccessAuthCode = SiyuanAccessAuthCodeViaEnvvar
}
if "" == AccessAuthCode { // Still empty?
interruptBoot := true