Merge branch 'fix/device-name-display'——选择设备与所有通知显示设备名(不再显示 IP)+ 修 /locate 500/XSS
This commit is contained in:
+6
-1
@@ -6,8 +6,13 @@ import subprocess
|
||||
import shlex
|
||||
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||
|
||||
from flask import (Blueprint, jsonify, request, Response, render_template)
|
||||
from flask import (Blueprint, jsonify, request, Response, render_template,
|
||||
render_template_string)
|
||||
from flask_login import login_required
|
||||
# /locate 定位页要把 serial 拼进 HTML,而 render_template_string 的模板名是
|
||||
# "<template>"、**不会自动转义**(serial 来自 query,不转义就是一个反射 XSS),
|
||||
# 所以这里显式转义。blueprint 拆分时漏掉了这两个 import,/locate 一直 500。
|
||||
from markupsafe import escape as _esc
|
||||
|
||||
from core import device_pool
|
||||
from core.adb_helper import (screenshot, list_installed_apps, adb_connect,
|
||||
|
||||
@@ -459,6 +459,16 @@ def api_uiauto_devices():
|
||||
})
|
||||
seen.add(serial)
|
||||
added += 1
|
||||
# 设备名用**平台起的名字**(A08 / cs1):uiautodev 那份 name 是设备自己的
|
||||
# codename(实测一柜子机器全叫 "earth"),同型号好几台时等于没有——
|
||||
# 而抓取元素/试执行必须选对设备,所以池外设备宁可退回地址(地址至少唯一)。
|
||||
try:
|
||||
names = {d["serial"]: (d.get("name") or "") for d in device_pool.list_devices()}
|
||||
except Exception:
|
||||
names = {}
|
||||
for d in data:
|
||||
s = d.get("serial") or ""
|
||||
d["name"] = names.get(s) or s
|
||||
if added:
|
||||
_log.info(f"抓取元素设备列表补全 {added} 台在线设备: {list(seen)}")
|
||||
return jsonify({"ok": True, "devices": data})
|
||||
|
||||
Reference in New Issue
Block a user