tui.py: 服务器默认值读 config; 下载默认 --decrypt; 配置菜单加 token

This commit is contained in:
lou
2026-08-10 01:06:33 +08:00
parent 4af4493e03
commit d6177560ae
+23 -10
View File
@@ -8,12 +8,23 @@ vue-tui 的 raw mode 输入无法配合 IME, Python cooked-mode input() 可以)
"""
import glob
import json
import os
import subprocess
import sys
from pathlib import Path
CLIENT_DIR = "/home/lou/文档/7z-encrypt"
PYTHON = os.path.join(CLIENT_DIR, ".venv", "bin", "python")
PYTHON = f"{CLIENT_DIR}/.venv/bin/python"
def _default_server() -> str:
"""从客户端 config.json 读 server.url (无则本地默认)"""
try:
cfg = json.loads(Path(f"{CLIENT_DIR}/config/config.json").read_text(encoding="utf-8"))
return str(cfg.get("server", {}).get("url", "http://127.0.0.1:8000"))
except (OSError, json.JSONDecodeError):
return "http://127.0.0.1:8000"
def run(args: list[str]) -> int:
@@ -65,7 +76,7 @@ def upload() -> None:
if not path or not os.path.exists(path):
print(f"[错误] 文件不存在: {path}")
return
server = _clean(input("服务器 [http://127.0.0.1:8000]: ")) or "http://127.0.0.1:8000"
server = _clean(input(f"服务器 [{_default_server()}]: ")) or _default_server()
if not server.startswith(("http://", "https://")):
server = "http://" + server # 只输 IP:端口 自动补协议
chunk_size = _clean(input("卷大小 MB [10]: ")) or "10"
@@ -102,17 +113,19 @@ def config_show() -> None:
def config_edit() -> None:
url = input("服务器地址: ").strip()
if not url:
return
run(["config.py", "--set-server", url])
url = _clean(input("服务器地址: "))
if url:
run(["config.py", "--set-server", url])
token = _clean(input("认证 token (留空不改): "))
if token:
run(["config.py", "--set-token", token])
config_show()
def files_list() -> None:
"""ls: 列出服务端文件"""
print("--- 文件列表 ---")
server = _clean(input("服务器: ")) or "http://127.0.0.1:8000"
server = _clean(input(f"服务器 [{_default_server()}]: ")) or _default_server()
if not server.startswith(("http://", "https://")):
server = "http://" + server
code = run(["transfer.py", "--server", server, "--list"])
@@ -121,9 +134,9 @@ def files_list() -> None:
def download() -> None:
"""下载: 先列文件, 再选 file_id, 保存到本地"""
"""下载: 先列文件, 再选 file_id, 本地解密还原"""
print("--- 下载文件 ---")
server = _clean(input("服务器: ")) or "http://127.0.0.1:8000"
server = _clean(input(f"服务器 [{_default_server()}]: ")) or _default_server()
if not server.startswith(("http://", "https://")):
server = "http://" + server
code = run(["transfer.py", "--server", server, "--list"])
@@ -134,7 +147,7 @@ def download() -> None:
if not file_id:
return
out = _clean(input("保存路径 [当前目录/服务端文件名]: "))
args = ["transfer.py", "--server", server, "--download", file_id]
args = ["transfer.py", "--server", server, "--download", file_id, "--decrypt"]
if out:
args += ["--out", out]
code = run(args)