TUI Termux 适配: 配置读取 XDG (SZ_CLIENT_DIR env + ~/.config/7z-encrypt)
This commit is contained in:
+16
-7
@@ -16,17 +16,26 @@ import sys
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from urllib import request as urlrequest
|
from urllib import request as urlrequest
|
||||||
|
|
||||||
CLIENT_DIR = "/home/lou/文档/7z-encrypt"
|
CLIENT_DIR = os.environ.get("SZ_CLIENT_DIR", "/home/lou/文档/7z-encrypt")
|
||||||
PYTHON = f"{CLIENT_DIR}/.venv/bin/python"
|
PYTHON = f"{CLIENT_DIR}/.venv/bin/python"
|
||||||
# 编译产物优先 (Nuitka 原生二进制), 无则回退源码解释执行
|
# 编译产物优先 (Nuitka 原生二进制), 无则回退源码解释执行
|
||||||
TRANSFER_BIN = f"{CLIENT_DIR}/bin/sz-transfer"
|
TRANSFER_BIN = f"{CLIENT_DIR}/bin/sz-transfer"
|
||||||
TRANSFER_CMD = [TRANSFER_BIN] if os.path.exists(TRANSFER_BIN) else [PYTHON, "transfer.py"]
|
TRANSFER_CMD = [TRANSFER_BIN] if os.path.exists(TRANSFER_BIN) else [PYTHON, "transfer.py"]
|
||||||
|
|
||||||
|
|
||||||
|
def _tui_config() -> Path:
|
||||||
|
"""配置文件: 源码目录 config/config.json (开发) -> XDG (安装版)"""
|
||||||
|
p = Path(f"{CLIENT_DIR}/config/config.json")
|
||||||
|
if p.exists():
|
||||||
|
return p
|
||||||
|
xdg = os.environ.get("XDG_CONFIG_HOME") or str(Path.home() / ".config")
|
||||||
|
return Path(xdg) / "7z-encrypt" / "config.json"
|
||||||
|
|
||||||
|
|
||||||
def _default_server() -> str:
|
def _default_server() -> str:
|
||||||
"""从客户端 config.json 读 server.url (无则本地默认)"""
|
"""从配置文件读 server.url (无则本地默认)"""
|
||||||
try:
|
try:
|
||||||
cfg = json.loads(Path(f"{CLIENT_DIR}/config/config.json").read_text(encoding="utf-8"))
|
cfg = json.loads(_tui_config().read_text(encoding="utf-8"))
|
||||||
return str(cfg.get("server", {}).get("url", "http://127.0.0.1:8000"))
|
return str(cfg.get("server", {}).get("url", "http://127.0.0.1:8000"))
|
||||||
except (OSError, json.JSONDecodeError):
|
except (OSError, json.JSONDecodeError):
|
||||||
return "http://127.0.0.1:8000"
|
return "http://127.0.0.1:8000"
|
||||||
@@ -268,9 +277,9 @@ def delete_file() -> None:
|
|||||||
|
|
||||||
|
|
||||||
def _keyring_path() -> Path:
|
def _keyring_path() -> Path:
|
||||||
"""密钥库路径: config.json 显式指定用指定, 否则系统默认 (SZ_KEYRING env/XDG)"""
|
"""密钥库路径: 配置显式指定用指定, 否则系统默认 (SZ_KEYRING env/XDG)"""
|
||||||
try:
|
try:
|
||||||
cfg = json.loads(Path(f"{CLIENT_DIR}/config/config.json").read_text(encoding="utf-8"))
|
cfg = json.loads(_tui_config().read_text(encoding="utf-8"))
|
||||||
raw = cfg.get("crypto", {}).get("keyring_path", "")
|
raw = cfg.get("crypto", {}).get("keyring_path", "")
|
||||||
if raw:
|
if raw:
|
||||||
return Path(raw)
|
return Path(raw)
|
||||||
@@ -371,9 +380,9 @@ def import_key() -> None:
|
|||||||
|
|
||||||
|
|
||||||
def _load_token() -> str:
|
def _load_token() -> str:
|
||||||
"""从客户端 config.json 读 server.token"""
|
"""从配置文件读 server.token (源码目录优先, 安装版走 XDG)"""
|
||||||
try:
|
try:
|
||||||
cfg = json.loads(Path(f"{CLIENT_DIR}/config/config.json").read_text(encoding="utf-8"))
|
cfg = json.loads(_tui_config().read_text(encoding="utf-8"))
|
||||||
return str(cfg.get("server", {}).get("token", ""))
|
return str(cfg.get("server", {}).get("token", ""))
|
||||||
except (OSError, json.JSONDecodeError):
|
except (OSError, json.JSONDecodeError):
|
||||||
return ""
|
return ""
|
||||||
|
|||||||
Reference in New Issue
Block a user