docs: 添加涉密文件自检工具实施计划

This commit is contained in:
2026-06-08 13:53:24 +08:00
commit 31161d9a5f
1838 changed files with 455407 additions and 0 deletions

View File

@@ -0,0 +1,127 @@
import json
import base64
from io import BytesIO
from .bottle import request
from ..mission.mission_qrcode import MissionQRCode
# 从base64识别二维码图片。传入data指令字典 {"base64", "options"}
# 返回字典 {"code", "data"}
def base2text(data):
base64 = data["base64"]
opt = data.get("options", {})
res = MissionQRCode.addMissionWait(opt, [{"base64": base64}])
return res[0]["result"]
# 从文本生成base64。传入data指令字典 {"text", "xxx"}
# 返回 {"code", "data"}
def text2base(data):
text = data["text"]
opt = data.get("options", {})
format = opt.get("format", "QRCode")
w = opt.get("w", 0)
h = opt.get("h", 0)
quiet_zone = opt.get("quiet_zone", -1)
ec_level = opt.get("ec_level", -1)
try:
pil = MissionQRCode.createImage(text, format, w, h, quiet_zone, ec_level)
buffered = BytesIO()
pil.save(buffered, format="JPEG")
b64 = base64.b64encode(buffered.getvalue()).decode("ascii")
res = {"code": 100, "data": b64}
except Exception as e:
res = {"code": 200, "data": f"[Error] {str(e)}"}
return res
# 路由函数
def init(UmiWeb):
@UmiWeb.route("/api/qrcode", method="POST")
def _qrcode():
try:
data = request.json
except Exception as e:
return json.dumps({"code": 800, "data": f"请求无法解析为json。"})
if not data:
return json.dumps({"code": 801, "data": f"请求为空。"})
if "base64" in data:
return json.dumps(base2text(data))
elif "text" in data:
return json.dumps(text2base(data))
return json.dumps({"code": 802, "data": '指令中不存在 "base64""text"'})
"""
// 文本 → 二维码base64
const url = "http://127.0.0.1:1224/api/qrcode";
const text = "测试文本";
const data = {
// 必填
"text": text,
// 选填
"options": {
"format": "QRCode", // 码类型
"w": 0, // 图像宽度0为自动设为最小宽度
"h": 0, // 图像高度
"quiet_zone": -1, // 码四周的空白边缘宽度,-1为自动
"ec_level": -1, // 纠错等级,-1为自动
}
};
fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => {
if(data.code === 100) {
console.log("生成二维码base64", data.data);
}
else {
console.log("生成二维码base64失败错误码", data.code, " 错误信息:", data.data);
}
})
.catch(error => {
console.error(error);
});
// 二维码base64 → 文本
const url = "http://127.0.0.1:1224/api/qrcode";
const base64 = "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAAdAB0BAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APU/GfjM+EjAzW9o0DW8txNPdXEkSxKkkMYAEcUjMS069hjBrn3+K0yi3B0/RozO52y3OtG3gaPy7WRWV5IVJO27DFSoIEbYycCrF18Sb2z1a20u70rTbO8uLiKzigutRl3NcNDBIyAxW7rhTcIu4sAcE8Cu00LU/wC2/D2mat5Pk/brSK58rdu2b0Dbc4GcZxnAri/iSdPGs6AuqySW+nzpcW11dg27xwIzQspkimikDIZUiG/5QhK5PzCuPI1qz8ISalajUtNu1czLGsxnt7tHhhhiijNmkSF22W8aFeFWZ2RjIjeVXvrq0t/EWmaTpq3d9rTXFpCqpa2iRW92sCJOUP2WZYjEsNszrG7Bd/GNhr2zQtP/ALI8PaZpuMfY7SK3x5nmY2IF+9tXd067Vz6DpXH/ABK1LVrN7SLTIr6622k159isYYnknkjuLVUI8yGXGzzWfhc5UHPFeeSyav4dtI9R8O+Ho5dYS4WNrSK1EV2sb29ncFJY7aOPzIkkYhjhSGaME7WdHy72y8NWthbfDxrrfDDdpdXH2eVvtIu/IcStcOUaCGFMqGKNKUELZDEsU+g/DUcMXhXSI7cRrAllCsYjIKhQgxgh3BGP9t/95upk1PQtH1vyv7W0qxv/ACc+X9rt0l2ZxnG4HGcDp6Co7Xw1oNiipaaJptuiPvVYbVEAbcjZGB13RxnPqin+EYksdC0fTIo4rDSrG0jjlM6JBbpGFkKlC4AHDFSVz1wcdKuQQQ2tvFb28UcMESBI441CqigYAAHAAHGK/9k="
const data = { "base64": base64 };
fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => {
if(data.code === 100) {
console.log("识别二维码成功!图片中的二维码数量:", data.data.length);
console.log("所有码的内容:");
for (let d of data.data) {
console.log(" 文本:", d.text);
console.log(" 格式:", d.format);
console.log(" 方向:", d.orientation);
console.log(" ====");
}
}
else {
console.log("识别二维码失败!错误码:", data.code, " 错误信息:", data.data);
}
})
.catch(error => {
console.error(error);
});
"""