feat: 工具Tab新增STF设备管理(读写220脚本DEVICES列表+docker adb connect/disconnect,220侧timeout兜底防卡死)+ 修复设备列表:5555重复显示
This commit is contained in:
+41
-1
@@ -38,8 +38,9 @@ from core.models import db, init_db, User, DeviceGroup, TaskJob, CustomAction
|
||||
from core.apk_manager import ApkManager
|
||||
from core.adb_helper import (screenshot, list_installed_apps, adb_connect_light,
|
||||
adb_connect, _ADB_LOCK, _adb)
|
||||
from core import uiauto_helper, tailscale_client
|
||||
from core import uiauto_helper, tailscale_client, stf_device_mgmt
|
||||
from core.tailscale_client import TailscaleError
|
||||
from core.stf_device_mgmt import StfDevError
|
||||
from config import ADB_PATH, STF_SSH_TARGET, STF_DOCKER_CONTAINER
|
||||
from tasks import list_task_types, get_task_class
|
||||
|
||||
@@ -992,6 +993,45 @@ def _set_device_clipboard(serial, text):
|
||||
return False, f"{type(e).__name__}: {str(e)[:120]}"
|
||||
|
||||
|
||||
@app.route("/api/stf/devmgmt/status")
|
||||
@admin_required
|
||||
def api_stf_devmgmt_status():
|
||||
"""STF 设备管理:脚本配置的 IP + 220 adb 实际连接状态。"""
|
||||
try:
|
||||
st = stf_device_mgmt.status()
|
||||
return jsonify({"ok": True, **st})
|
||||
except StfDevError as e:
|
||||
return jsonify({"ok": False, "error": str(e)}), 502
|
||||
|
||||
|
||||
@app.route("/api/stf/devmgmt/add", methods=["POST"])
|
||||
@admin_required
|
||||
def api_stf_devmgmt_add():
|
||||
"""STF 设备管理:添加设备(写入脚本 + 立即 connect)。"""
|
||||
ip = (request.json or {}).get("ip", "").strip()
|
||||
if not ip:
|
||||
return jsonify({"ok": False, "error": "请输入设备 IP"}), 400
|
||||
try:
|
||||
msgs = stf_device_mgmt.add_device(ip)
|
||||
return jsonify({"ok": True, "msgs": msgs})
|
||||
except StfDevError as e:
|
||||
return jsonify({"ok": False, "error": str(e)}), 502
|
||||
|
||||
|
||||
@app.route("/api/stf/devmgmt/remove", methods=["POST"])
|
||||
@admin_required
|
||||
def api_stf_devmgmt_remove():
|
||||
"""STF 设备管理:移除设备(脚本删除 + disconnect)。"""
|
||||
ip = (request.json or {}).get("ip", "").strip()
|
||||
if not ip:
|
||||
return jsonify({"ok": False, "error": "请输入设备 IP"}), 400
|
||||
try:
|
||||
msgs = stf_device_mgmt.remove_device(ip)
|
||||
return jsonify({"ok": True, "msgs": msgs})
|
||||
except StfDevError as e:
|
||||
return jsonify({"ok": False, "error": str(e)}), 502
|
||||
|
||||
|
||||
@app.route("/api/stf/restart", methods=["POST"])
|
||||
@admin_required
|
||||
def api_stf_restart():
|
||||
|
||||
Reference in New Issue
Block a user