tui.py: 服务器默认值读 config; 下载默认 --decrypt; 配置菜单加 token
This commit is contained in:
+23
-10
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user