From d8b95c0aab77f6bd227c67f67488b1bfb6478993 Mon Sep 17 00:00:00 2001 From: MeowOS Date: Mon, 31 Aug 2026 20:45:52 +0800 Subject: [PATCH] =?UTF-8?q?MeowPanel:=20=E5=AD=97=E4=BD=93=E5=BA=93=20tar.?= =?UTF-8?q?gz=20=E5=AF=BC=E5=85=A5/=E5=AF=BC=E5=87=BA=20+=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=AE=A1=E7=90=86=E8=87=AA=E7=84=B6=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20+=20multipart=20=E4=BA=8C=E8=BF=9B?= =?UTF-8?q?=E5=88=B6=E8=BE=B9=E7=95=8C=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 字体库导入/导出(用户 2026-08-31 定案):放弃 zip,与 .mpk 同构走 busybox 'gzip -dc | tar' 管道 (设备必带 tar/gzip,零新增依赖)。导入 POST /api/fonts/import(multipart file=<.tar.gz>,上限32MB, ?force=1 覆盖):tar -t 成员预校验(sanitize_member 拒绝对/../shell 危险字符,恰为三件套平铺)→ 解压到临时目录 → opendir/lstat 锁(拒软链/目录/设备/多出条目/解压后超大)→ font.json 解析 family/weight (safe_dir_segment 消毒)→ 覆盖冲突 409 → sha256_png/idx 仅 WARN → rename 到 MeowOS/fonts///。 导出 GET /api/fonts/export?family=&weight=:tar -cf - | gzip -c 打包 -.font.tar.gz 流式下载。 列表 GET /api/fonts:扫描三件套齐。前端设置页加「字体库」卡(导入 zip/tar.gz + 409 confirm 后 force=1 重试 + 导出按钮)。 - 文件管理排序修复:/api/files 排序改为目录优先 + 名称自然排序(数字感知 track2 218508 bytes patch_v2/meowpanel/meowpanel.c | 475 +++++++++++++++++++++++++- patch_v2/meowpanel/meowpanel_host | Bin 146792 -> 147480 bytes patch_v2/meowpanel/web/meowpanel.js | 49 +++ 7 files changed, 580 insertions(+), 23 deletions(-) diff --git a/docs/MEOWOS_SPEC_REF.md b/docs/MEOWOS_SPEC_REF.md index 2a6d187..b721d25 100644 --- a/docs/MEOWOS_SPEC_REF.md +++ b/docs/MEOWOS_SPEC_REF.md @@ -178,7 +178,7 @@ - **默认字库目录**:默认字体统一放 **`<卡根>/MeowOS/fonts/default/regular/`**(`font.png`+`font.idx`,可选 `font.json`),不再用 `MeowAPPs/fonts/font.png`;设备旧 `MeowAPPs/fonts/` 及旧 `MeowOS/fonts//`(无 weight 级)**保留**(勿删,避免破坏老约定/已有文件),仅新引用一律指向 `MeowOS/fonts/default/regular`。 - **`font.file` 变更即 unload+reload 生效**(设置页回调);拔卡 → 回退固件内置。 - **preset 动态化(两级扫描)**:启动/进设置页扫描一次 `MeowOS/fonts///`,重建「字体文件」下拉(默认字体 + ≤16 套卡内 /;上限防爆)。扫描仅此二时机,勿放热路径。**存量卡片迁移**:旧版扫 `MeowOS/fonts//`(图片直接在该层);迁移到 `/regular/` 后,旧 `/` 下不再有三件套 → 新扫默认按两级找,故若未重做成 `//` 则扫不到(需先用 mv 迁成 `//` 再重扫)。 - - **MeowPanel 预留**:`meow_font_import_zip()`/`meow_font_export_zip()` 为 TODO 声明(不实现),供 MeowPanel 后续接入(`.zip` 导入校验→解压到 `MeowOS/fonts///`、导出打包)。 + - **MeowPanel 预留 → 已落地(2026-08-31 用户定案:**改为 `.tar.gz`、放弃 zip**,与 .mpk 同构走 busybox `gzip -dc | tar` 管道,设备必带 tar/gzip)**:面板以 `POST /api/fonts/import` + `GET /api/fonts/export` 接入(见 §5.7.6 与 `patch_v2/meowpanel/README.md` §5.11)。`meow_font_import_zip()`/`meow_font_export_zip()` 原 TODO 声明**不再按 zip 实现**,语义为 tar.gz(函数名可保留或改 `_tgz`)。导入校验→解压到 `MeowOS/fonts///`、导出打包。 - **多字体(M2.5x,`display.multi_font`)**:按字符类别(CJK/CJK_SYM/NUM/LATIN/LATIN_SYM/OTHER)逐字符路由,每类可各选一套字库(`font.class_*`,默认空=跟随全局 `font.file`);同 family 去重、同时装载不同字体 ≤4 套(超出 WARN「过多不同字体会增内存」并截断);开关关 = 单字体(现状)。详见 §5.7.7「多字体」。 - **字体档位 / 大字库(M2.5x,本次实现)**:抽象出**字库大小档位**,让系统/应用/设置页都知道选的是多大字库 `[源:用户 2026-08-30]`。**定案见 `devdocs/plan/FONT_SYSTEM.md`**(字体系统定案:三级目录 `///`、`font.json` 增 `tier`/`languages`/`label`、`charset` 改指编码、按语言选字体;本小节以下为旧口径)。 - 档位枚举:`MEOW_FONT_TIER_COMMON`(**默认 / ≈4k** 码位)/ `MEOW_FONT_TIER_GBK`(**大 / ≈20k+**)/ `MEOW_FONT_TIER_FULL`(**全 / 可选**,码位/体积最大)。 @@ -313,12 +313,19 @@ int lh = meow_ui_text_height_h(20, hBody); ``` - 说明:句柄状态为 app 进程内**全局**;同一屏需混排时,推荐每段绘制前显式 `meow_ui_use_font`,或全部走 `*_h` 显式传 handle,避免依赖上次绘制遗留的句柄状态。 -- **5.7.6 MeowPanel 上传 / 导出(.zip,预留)** `[源:meow_font.h]` - - 复用已声明的 `meow_font_import_zip(zip_path)` / `meow_font_export_zip(family,out_zip)`(§5.2 已列为 TODO,未实现)。 - - **系统字库导入**:`.zip` 内含 `font.png+font.idx+font.json` 三件套;校验三件套就绪 + `font.json` 可解析;sha256 沿用 `font.json` 约定(建议与运行时同口径 = **WARN**,仅缺件/不可解析硬失败);`family`/`weight` 取自 `font.json.family`/`font.json.weight`(缺省 `regular`)或 zip 名;解压到 `MeowOS/fonts///`;**覆盖冲突需先确认**;导入后应触发 launcher 重扫(刷新 §5.7.1 列表)。 - - **应用字库导入**:目标 `MeowAPPs//fonts//`,与 `app.json "fonts"` 声明对齐,校验同上。 - - **导出**:系统库把 `MeowOS/fonts///` 三件套打包;应用库把 `MeowAPPs//fonts//` 打包。 - - 约定:`.zip` 布局与校验沿用 `font.json` schema(§5.2);导入/导出后的一致性(列表刷新、应用声明同步)归 MeowPanel + launcher 协作,本小节仅列接口语义。 +- **5.7.6 MeowPanel 上传 / 导出(.tar.gz,2026-08-31 用户定案:放弃 zip,与 .mpk 同构)** `[源:meow_font.h][源:patch_v2/meowpanel/README.md §5.11]` + - **已由 MeowPanel 后端落地**:`POST /api/fonts/import`(multipart `file`=<.tar.gz>)+ `GET /api/fonts/export?family=&weight=` + + `GET /api/fonts`(列表)。**不用 zip**——设备 busybox `gzip`/`tar` 必带,后端走 `gzip -dc | tar` 管道(与 nyai .mpk 同款), + 零新增依赖、不引入 zlib/miniz/自研 zip。原 `meow_font_import_zip(zip_path)` / `meow_font_export_zip(family,out_zip)` TODO + 声明**不再按 zip 实现**,语义即 tar.gz(函名可保留或改 `_tgz`,注明即可)。 + - **系统字库导入**:`.tar.gz` 内含 `font.png+font.idx+font.json` 三件套;校验三件套就绪 + `font.json` 可解析; + sha256 沿用 `font.json` 约定(= **WARN**,仅缺件/不可解析硬失败);`family`/`weight` 取自 `font.json.family`/ + `font.json.weight`(缺省 `regular`);解压到 `MeowOS/fonts///`;**覆盖冲突需先确认**(409 → 前端 confirm 后 + `force=1` 重试);导入后进设备「设置→字体」页自动重扫(扫描时机=启动/进设置页,面板**不**主动触发重扫)。 + - **应用字库导入**:目标 `MeowAPPs//fonts//`,与 `app.json "fonts"` 声明对齐,校验同上(待面板后续扩展)。 + - **导出**:系统库把 `MeowOS/fonts///` 三件套打包为 `-.font.tar.gz`;应用库同理(待扩展)。 + - 约定:`.tar.gz` 布局与校验沿用 `font.json` schema(§5.2);导入/导出后的一致性(列表刷新、应用声明同步)归 MeowPanel + + launcher 协作。**安全**:tar 解出条目逐个校验(拒绝对路径/`..`/软链/多出条目/子目录包裹),沿用 nyai 的 sanitize 思路。 - **5.7.7 多字体(按字符类别逐字符路由,`display.multi_font`,M2.5x 新增)** `[源:meow_font.h][源:MEOWOS_SPEC_REF §5.2/§5.5]` - **背景**:一款字体难兼顾中文(大图集、字形全)与拉丁/数字(干净、省内存)。多字体让**不同字符类别各用一套字库**,按 codepoint 逐字符路由取字形。 - **设置键**(launcher 读,SDK 经 env 读同一映射): diff --git a/patch_v2/meowpanel/README.md b/patch_v2/meowpanel/README.md index 19cf79d..adaa3e0 100644 --- a/patch_v2/meowpanel/README.md +++ b/patch_v2/meowpanel/README.md @@ -28,12 +28,14 @@ cd /home/Aska/Project/R3ProII/patch_v2/meowpanel - 两分支均以 `-Os -Wall -Wextra` 复核,**0 warning**(`-Werror` 亦通过)。 - 产出(本次构建实测): - `meowpanel`:mipsel 静态,`ELF 32-bit LSB executable, MIPS, MIPS32 rel2, statically linked, stripped`, - 体积约 **206 KB**(固件阈值内)。md5:`24f53b40fd556f758e5eba3417a52c3c`(本次含通知 IPC 实时化 + 增量帧)。 - - `meowpanel_host`:aarch64 动态链接(宿主编译,仅供调试),体积约 **146 KB**。 + 体积约 **218 KB**(固件阈值内)。md5:`be74e2ac0423718073a5a27fc7bbf96a`(本次含字体库 tar.gz 导入/导出 + 排序修复)。 + - `meowpanel_host`:aarch64 动态链接(宿主编译,仅供调试),体积约 **148 KB**。 - 依赖:仅 libc + Linux 内核头(`linux/input.h`),零第三方库(设备无 python3/lua)。鉴权用**内联 SHA-256**(拷贝自 `meow_verify/sha256.c` 公有领域参考写法,前缀 `mp_sha256_*` 避免符号冲突;**未改 `meow_verify/` 目录**)。 阶段 C 实时画面用**自研最小 baseline JPEG 编码器** `mp_jpeg.c`(顺序 DCT + 4:2:0 + 标准 Huffman 表 Annex K; 无 libm、零依赖,仅 malloc/realloc),质量 70 下 480×720 帧约 41 KB。 + **字体库导入/导出(用户 2026-08-31 定案)**:与 `.mpk` 同构、**放弃 zip,改走 busybox `gzip -dc | tar` 管道** + (设备必带 tar/gzip,零新增依赖、不引入 zlib/miniz/自研 zip,见 §5.11)。 **性能**:设备为 mipsel muslsf **无 FPU**,初版逐块 `double` 矩阵 DCT 编码 480×720 一帧约 **3.96 s**(掉帧到 5-6 s/帧的根因)。 已改为**整数定点 DCT + 整数 YCbCr**(FSCALE=13,BT.601 256 系数,纯整型乘加), 实测编码降至约 **0.19 s(≈20×)**,单请求端到端(本机 localhost)约 0.20 s、LAN 约 0.22-0.31 s, @@ -107,6 +109,9 @@ http://.local:8080/ | POST | `/api/files/mkdir` | 新建目录(已存在→409) | ✅ | | POST | `/api/files/rename` | 重命名 | ✅ | | DELETE | `/api/files?path=` | 删除(可 recursive=1;非空未 recursive→409) | ✅ | +| GET | `/api/fonts` | 字体库列表(扫描 `MeowOS/fonts///` 三件套齐) | ✅(无卡→503) | +| POST | `/api/fonts/import` | 上传字体库 `.tar.gz`(multipart `file`,可带 `?force=1` 覆盖) | ✅(缺件/坏json/穿越→400,冲突→409,超限→413) | +| GET | `/api/fonts/export` | 导出 `//` 三件套为 `.tar.gz`(`?family=&weight=`) | ✅(缺件→404) | | GET | `/api/apps` | 扫描 `MeowAPPs/` 读 `app.json` | ✅ | | GET | `/api/apps/:pkg` | 应用详情 | ✅ | | POST | `/api/apps/install` | 经 `nyai install`(multipart 或 path) | ✅ | @@ -274,6 +279,33 @@ http://.local:8080/ 防重叠 + 旧 URL 回收;后端不可达提示「后端未连接」);默认 **1fps**,滑条 **0.2–2fps**(存 `screen.fps`,页面隐藏/切走即停刷, `visibilitychange` 回前台续刷);点击画面按 480×720 比例换算坐标 → `POST /api/input/tap`,`dispatched:false` 时 toast「本机触摸中」。 +### 5.11 字体库 tar.gz 导入 / 导出(`/api/fonts*`,新增) +- **定位**(MEOWOS_SPEC_REF §5.7.6 / FONT_SYSTEM.md,**2026-08-31 用户定案:放弃 zip,与 .mpk 同构走 tar.gz**): + 系统字库按 `MeowOS/fonts///` 三件套存放(schema 见 SPEC_REF §5.2:family/weight/name/ + glyph_count/charset/tier/size_list/bit_depth/sha256_png/sha256_idx…)。**设备 busybox tar/gzip 必定存在**, + 后端全部走 `gzip -dc | tar` 管道(nyai .mpk 同款),**零新增依赖、不引入 zlib/miniz/自研 zip**。 +- **导入 `POST /api/fonts/import`**(multipart `file`=<.tar.gz>,上限 **`MAX_FONT_UPLOAD`=32MB**,可带 `?force=1`): + 1. multipart `file` 落临时 `/tmp/mp_font_...tar.gz`(`multipart_extract_file`,二进制安全 `mem_find`)。 + 2. **成员预校验**:`gzip -dc '' | tar -t`,每成员经 `sanitize_member`(去前导 `/`/`./`,拒 `..` 组件与 + shell 危险字符)且**恰为三件套平铺**(多出条目/子目录/绝对/`..` → 400)。 + 3. **解压到临时目录**:`gzip -dc | tar -x -C stg` → opendir/lstat 锁:**恰为 3 个普通文件** + (拒软链/目录/设备;总大小 ≤ `FONT_EXTRACT_MAX`=32MB 防 gzip 炸弹)→ 缺件/坏 json 400。 + 4. `font.json` 手写 JSON 解析 → `family`(缺省回退 `name`)/`weight`(缺省 `regular`),`safe_dir_segment` + 消毒(拒 `/`、`\`、控制符、`.`/`..`)→ 非法 422。 + 5. **覆盖冲突**:目标目录任一文件已存在且非 `force=1` → **409 `CONFLICT`**(前端 confirm 后带 `force=1` 重试)。 + 6. **sha256 仅 WARN**(对齐 font.json 约定):流式重算 `sha256_png`/`sha256_idx` 与声明比对,不符写 `warning` + 字段、仍导入成功(**不硬失败**);响应含 `family`/`weight`/`imported`/`hint`(提示进设备「设置→字体」页 + 列表自动重扫生效——**后端不触发 launcher 重扫**,扫描时机=启动/进设置页,勿加热路径)。 + 7. `mkdir`(系统调用,**不用 `system()`**,防注入)→ `rename` 三件套到目标目录(原子替换)。 +- **导出 `GET /api/fonts/export?family=&weight=`**:校验 family/weight 段 → 目标目录三件套须齐(缺件 404)→ + `tar -cf - -C font.png font.idx font.json | gzip -c > ` 落临时文件(求 `Content-Length`)→ + `Content-Disposition: attachment; filename="-.font.tar.gz"` + `application/gzip` → 流式下发。 +- **列表 `GET /api/fonts`**:扫描 `MeowOS/fonts///`,三件套齐才列出,读 `font.json` 取 + name/tier/glyph_count(容错)。无卡 → 503。 +- **往返验证**(宿主):Python tarfile 生成的平铺三件套 `.tar.gz` 导入→导出→逐字节比对源文件一致;本后端导出 + 再导入→逐字节一致;GNU tar/`tarfile` 均能读;目录穿越 `../`/绝对路径/软链成员/缺件/坏 font.json/多出条目/ + 子目录包裹/非 gzip——全部拒绝;打包文件名 `-.font.tar.gz`。见 §7 宿主测试备注。 + --- ## 6. 与协议的出入(「实现为准 + 原因」,供回改 MEOWPANEL_PROTOCOL.md) @@ -304,12 +336,25 @@ http://.local:8080/ 11. **实时画面/触摸注入(阶段 C)**:协议 §6 待定案项称「实时画面(`/api/frame` 等,本文件暂未定义)」。本面板落地为 **`GET /api/screen.jpeg` + `POST /api/input/tap`**(命名自定:`.jpeg` 表达二进制帧 + `input/tap` 表达触摸注入), 见 §5.10。回改协议时可补这两端点(以及 `frames` 语义、`/api/input/tap` 的 `dispatched:false/reason` 软失败约定)。 +12. **multipart 二进制查找修正(strstr→memmem,本次修复,属 bug 修复非出入变更)**:`parse_multipart`/`multipart_extract_file` + 均用 `strstr(data_start, boundary)` 定位 part 数据边界——**strstr 遇到数据中的 NUL 字节即提前停止**(含 NUL 的二进制 + .tar.gz/.mpk/图会误把后续 boundary 与拖尾算进数据 → 解压出错)。已改**二进制安全**的 `mem_find`(memmem 语义,手写字节扫描, + 不依赖 glibc/musl 扩展)。这修复了字体库 tar.gz 导入,也顺带修复了二进制 `.mpk`/文件上传的潜在同病。**实现优先**,供回改协议/审计。 +13. **`/api/fonts*`(新增,§5.11)**:协议 §2 端点总览无此组;按 SPEC_REF §5.7.6「MeowPanel 预留 .zip 导入/导出」落地——**但用户 + 2026-08-31 定案:改 tar.gz、放弃 zip**(与 .mpk 同构)。落地为 `/api/fonts`(列表)/`/api/fonts/import`(导入,POST multipart, + 上限 32MB,`?force=1` 覆盖)/`/api/fonts/export`(导出,GET,`-.font.tar.gz`)。前两者由前端设置页「字体库」卡接入。 + 还修正了 `/api/files` 排序:**目录优先 + 名称自然排序**(数字感知 track2.local:8080/ ``` patch_v2/meowpanel/ -├── meowpanel.c # 后端源码(约 4100 行,-Wall -Wextra 0 warning;含可选鉴权/内联 SHA-256/实时画面+增量帧/触摸注入/通知 IPC 实时化) +├── meowpanel.c # 后端源码(约 4560 行,-Wall -Wextra 0 warning;含可选鉴权/内联 SHA-256/实时画面+增量帧/触摸注入/通知 IPC 实时化/字体库 tar.gz 导入导出/自然排序) ├── mp_jpeg.c # 最小 baseline JPEG 编码器(顺序 DCT + 4:2:0 + 标准 Huffman,整数定点,无 libm,-Wall -Wextra 0 warning) ├── mp_jpeg.h # mp_jpeg.c 接口(RGB565 → 内存 JPEG) -├── build_meowpanel.sh # 交叉编译 + host 分支(-Wall -Wextra 0 warning) -├── meowpanel # 交叉产物(mipsel 静态,约 206 KB,md5 24f53b40…) +├── build_meowpanel.sh # 交叉编译 + host 分支(-Wall -Wextra 0 warning;meowpanel.c + mp_jpeg.c) +├── meowpanel # 交叉产物(mipsel 静态,约 218 KB,md5 be74e2ac…) ├── meowpanel_host # 宿主编译(本机 ld,调试用) ├── services.d/ │ └── meowpanel.conf # 部署到 TF 卡 MeowOS/services.d/meowpanel.conf diff --git a/patch_v2/meowpanel/build_meowpanel.sh b/patch_v2/meowpanel/build_meowpanel.sh index 920bdd5..ac10a90 100755 --- a/patch_v2/meowpanel/build_meowpanel.sh +++ b/patch_v2/meowpanel/build_meowpanel.sh @@ -2,12 +2,13 @@ # build_meowpanel.sh — MeowPanel 后端交叉编译(mipsel 静态)+ 宿主编译可选。 # # 目标:R3 Pro II / MeowOS(mipsel-linux-muslsf,静态)。后端仅 POSIX + Linux 基接口 -# (复用 meow_ipc.h 帧格式,无 launcher 依赖),单文件满足「卡上、静态、零第三方依赖」。 +# (复用 meow_ipc.h 帧格式,无 launcher 依赖),多文件满足「卡上、静态、零第三方依赖」。 # # 用法: # ./build_meowpanel.sh # 交叉编译 → patch_v2/meowpanel/meowpanel(mipsel 静态) # ./build_meowpanel.sh host # 宿主编译 → patch_v2/meowpanel/meowpanel_host # 源码:meowpanel.c + mp_jpeg.c(最小 baseline JPEG 编码器,阶段 C 实时画面)。 +# 字体库导入/导出走 busybox `gzip -dc | tar` 管道(与 nyai .mpk 同构),零额外源文件。 set -e cd "$(dirname "$0")" ROOT="$HOME/Project/R3ProII" diff --git a/patch_v2/meowpanel/meowpanel b/patch_v2/meowpanel/meowpanel index f62fa1c5476f30e6030f0e5cdb421e3cebd27825..babe7344ccdc1added8c3968a0aaa809ea938cfd 100755 GIT binary patch delta 82324 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 UF1*q7wc3?v8V|F&(QNns0lkw$LjV8( diff --git a/patch_v2/meowpanel/meowpanel.c b/patch_v2/meowpanel/meowpanel.c index b423b70..1a5cb38 100644 --- a/patch_v2/meowpanel/meowpanel.c +++ b/patch_v2/meowpanel/meowpanel.c @@ -19,7 +19,9 @@ * - 文件/应用/日志/通知:白名单根 /usr/data/mnt/sd_0 下 MeowOS/Music/MeowData/MeowAPPs/book。 * * 编译(mipsel 静态):build_meowpanel.sh;宿主编译 build_meowpanel.sh host。 - * 依赖:仅 POSIX + libc(含 linux/input.h 内核头),零第三方库。设备无 python3/lua。 + * 依赖:仅 POSIX + libc(含 linux/input.h 内核头),零第三方库(mp_jpeg.c 自研最小 JPEG; + * 字体库导入/导出走 busybox `gzip -dc | tar` 管道——与 nyai .mpk 同构,设备必带 tar/gzip)。 + * 设备无 python3/lua。 */ #include #include @@ -100,6 +102,7 @@ static const char *g_notif_log = NULL; /* 通知转储日志:/notificat #define MAX_HTTP_HEADER (64 * 1024) #define MAX_HTTP_BODY (16 * 1024 * 1024) /* 通用 body 上限(JSON/小件) */ #define MAX_UPLOAD_BODY (8 * 1024 * 1024) /* multipart 上传上限(14MB 内存约束:不整读超 8MB) */ +#define MAX_FONT_UPLOAD (32 * 1024 * 1024) /* 字体库 tar.gz 上传上限(gbk 字库 png+idx 可能 10-20MB) */ #define MAX_JSON_IN 65536 /* JSON body 解析上限 */ #define MAX_STATIC_FREEBUF (2 * 1024 * 1024) #define LOG_MAX_LINES 1000 @@ -1039,13 +1042,48 @@ static void fmt_json_item(sbuf_t *s, const char *name, int isdir, long long size } struct fent { char name[256]; int isdir; long long size, mtime; }; -/* 目录优先 + 名称不区分大小写(再按大小写敏感定序保证稳定) */ + +/* 自然字符串比较:数字段按数值比较(track2 < track10),ASCII 字母大小写不敏感 + * (同字母时原始字节作 tie-break),其余按**无符号字节序**(UTF-8 中文等直接按字节序, + * 设备无 locale,避免 strcasecmp 对高位字节的 locale 依赖导致乱序)。 + * 实现:逐字节;遇到连续数字则各取整段,比「有效位数→数值→原始长度」;否则比字节。 */ +static int nat_strcmp(const char *a, const char *b) +{ + const unsigned char *pa = (const unsigned char *)a; + const unsigned char *pb = (const unsigned char *)b; + while (*pa && *pb) { + unsigned char ca = *pa, cb = *pb; + if (ca >= '0' && ca <= '9' && cb >= '0' && cb <= '9') { + const unsigned char *na = pa, *nb = pb; + while (*na == '0') na++; + while (*nb == '0') nb++; + const unsigned char *da = na, *db = nb; + while (*da >= '0' && *da <= '9') da++; + while (*db >= '0' && *db <= '9') db++; + int la = (int)(da - na), lb = (int)(db - nb); /* 有效数字位数(去前导0) */ + if (la != lb) return la - lb; /* 位数小者数小 */ + int c = memcmp(na, nb, (size_t)la); + if (c) return c; + int ta = (int)(da - pa), tb = (int)(db - pb); /* 原始数字串长(含前导0) */ + if (ta != tb) return ta - tb; + pa = da; pb = db; + continue; /* 数字段完全相同,继续 */ + } + unsigned char la = (ca >= 'A' && ca <= 'Z') ? (unsigned char)(ca + 32) : ca; + unsigned char lbc = (cb >= 'A' && cb <= 'Z') ? (unsigned char)(cb + 32) : cb; + if (la != lbc) return (int)la - (int)lbc; + if (ca != cb) return (int)ca - (int)cb; /* 大小写 tie-break:大写在前 */ + pa++; pb++; + } + return (int)*pa - (int)*pb; +} + +/* 目录优先 + 名称自然排序(数字感知 + 无符号字节序) */ static int fent_cmp(const void *a, const void *b) { const struct fent *fa = a, *fb = b; if (fa->isdir != fb->isdir) return fb->isdir - fa->isdir; - int c = strcasecmp(fa->name, fb->name); - return c ? c : strcmp(fa->name, fb->name); + return nat_strcmp(fa->name, fb->name); } static int files_list(int sock, const char *relpath) @@ -1303,6 +1341,7 @@ typedef struct { } req_t; static void req_free(req_t *r) { free(r->body); r->body = NULL; r->body_len = 0; } +static int multipart_extract_file(const req_t *r, const char *outpath); /* 定义在文件后部;字体导入用(写 multipart file 到临时文件) */ static int is_hex(char c) { return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'); } static int hexval(char c) { if (c >= '0' && c <= '9') return c - '0'; if (c >= 'a' && c <= 'f') return c - 'a' + 10; return c - 'A' + 10; } @@ -1451,9 +1490,11 @@ static int read_request(int sock, req_t *r) } char *body_start = buf + hend + 4; /* body 实际起点 */ size_t buffered = (hn > (size_t)(body_start - buf)) ? (hn - (size_t)(body_start - buf)) : 0; - /* 上传(multipart)走更严上限:14MB 内存约束下不整读超 MAX_UPLOAD_BODY。超限 → -2(413)。 */ + /* 上传(multipart)走更严上限:14MB 内存约束下不整读超 MAX_UPLOAD_BODY。超限 → -2(413)。 + * 字体库 tar.gz 端点例外:gbk/full 字库 png+idx 可能 10-20MB,放宽到 MAX_FONT_UPLOAD(32MB)。 */ size_t cap = MAX_HTTP_BODY; - if (strncasecmp(r->content_type, "multipart/form-data", 19) == 0) cap = MAX_UPLOAD_BODY; + if (strncasecmp(r->content_type, "multipart/form-data", 19) == 0) + cap = (!strcmp(r->path, "/api/fonts/import")) ? MAX_FONT_UPLOAD : MAX_UPLOAD_BODY; if (clen > cap) { free(buf); return -2; } if (clen == 0) { free(buf); r->body = NULL; r->body_len = 0; return 0; } char *body = malloc(clen + 1); @@ -1974,6 +2015,22 @@ static int send_file(int sock, int status, const char *ctype, const char *abspat return 0; } +/* 二进制安全子串查找:strstr 会因数据中的 NUL 提前停止,二进制(zip/mpk/图)必须用 memmem。 + * 返回 needle 在 hay[0..hlen) 中首次出现的指针;找不到 NULL。 + * 仅当 mot 出现,用 memmem(_GNU_SOURCE 已定义,glibc/musl 均提供)。 + * 若无 memmem(极端环境),退回手写字节扫描,保证可移植。 */ +static const char *mem_find(const void *hay, size_t hlen, const char *needle) +{ + size_t nl = strlen(needle); + if (!nl || hlen < nl) return NULL; + const char *h = (const char *)hay; + for (size_t i = 0; i + nl <= hlen; i++) { + if (h[i] == needle[0] && memcmp(h + i, needle, nl) == 0) + return h + i; + } + return NULL; +} + /* ---------------- multipart/form-data 解析(文件上传) ---------------- * 解析 body,提取 name= 字段与 name=file 字段(可多个)。写到 target dir(白名单校验)。 * 返回 0=成功(把写入的 item 用 items_json 回填),负错误码语义同协议。 @@ -2023,7 +2080,7 @@ static int parse_multipart(const req_t *r, upfile_t *files, int maxfiles) int nfiles = 0; char curpath[1024] = ""; while (p < end) { - const char *fstart = strstr(p, dmark); + const char *fstart = mem_find(p, (size_t)(end - p), dmark); if (!fstart) break; fstart += strlen(dmark); if (*fstart == '-') break; /* 结束标记 --boundary-- */ @@ -2051,8 +2108,8 @@ static int parse_multipart(const req_t *r, upfile_t *files, int maxfiles) if (nm) { nm += 6; char *q = strchr(nm, '"'); if (q) { *q = 0; name = nm; } } } } - /* 数据结束:下一个 "--boundary" 之前 */ - const char *data_end = strstr(data_start, dmark); + /* 数据结束:下一个 "--boundary" 之前(二进制安全) */ + const char *data_end = mem_find(data_start, (size_t)(end - data_start), dmark); if (!data_end) data_end = end; /* 去掉数据尾部 \r\n */ while (data_end > data_start && (data_end[-1] == '\r' || data_end[-1] == '\n')) data_end--; @@ -3333,6 +3390,399 @@ static int api_files_delete(int sock, const req_t *r) return send_json(sock, 200, "{\"removed\":true}"); } +/* ---------------- 字体库 tar.gz 导入 / 导出(MeowOS/fonts///) ---------------- + * 定案(用户 2026-08-31):**与 .mpk 同构,放弃 zip**——设备 busybox tar/gzip 必定存在, + * 后端全部走 `gzip -dc | tar` 管道(nyai .mpk 同款),零新增依赖、不再自实现 zip 读写/miniz。 + * 导入(POST /api/fonts/import,multipart file=<.tar.gz> [&force=1]): + * - 上传 tar.gz(上限 MAX_FONT_UPLOAD=32MB,gbk/full 字库 png+idx 可能 10-20MB)→ + * `gzip -dc | tar -t` 预校验成员名(sanitize_member:拒绝对路径/`..`/shell 危险字符,含三个以上条目疑拒); + * 解压到临时目录 → opendir/lstat 逐个校验:恰为 font.png/font.idx/font.json 三个**普通文件** + * (拒软链/目录/设备,拒解压后超大)→ 缺件/坏 json 硬失败。 + * - family/weight 取 font.json 的 family(缺省回退 name)/weight(缺省 regular),safe_dir_segment 消毒。 + * - rename 到 MeowOS/fonts///;目标已存在则 409(前端确认后带 force=1 重试)。 + * - sha256_png/sha256_idx 仅 WARN(含在响应 warning 里);导入后**不触发 launcher 重扫** + * (扫描时机=启动/进设置页,勿加热路径),响应用 hint 提示。 + * 导出(GET /api/fonts/export?family=&weight=): + * - `tar -cf - -C font.png font.idx font.json | gzip -c > ` 打包为 + * `-.font.tar.gz` 下载流(先落临时文件求 Content-Length 再流式)。 + * 列表(GET /api/fonts):扫描 fonts///(三件套齐)供导出选择。 + */ +#define FONT_EXTRACT_MAX (32u * 1024u * 1024u) /* 三件套解压后总大小上限(防 gzip 炸弹;gbk/full 亦在界内) */ + +static void fonts_root(char *buf, size_t cap) { snprintf(buf, cap, "%s/MeowOS/fonts", TF_ROOT); } + +static int safe_dir_segment(const char *s, char *out, size_t cap) +{ + if (!s || !s[0]) return -1; + if (!strcmp(s, ".") || !strcmp(s, "..")) return -1; + for (const char *p = s; *p; p++) { + unsigned char c = (unsigned char)*p; + if (c == '/' || c == '\\' || c < 0x20 || c == 0x7f) return -1; + } + if (strlen(s) + 1 > cap) return -1; + snprintf(out, cap, "%s", s); + return 0; +} + +/* ---- tar 成员 sanitize(沿用 nyai 语义:拒绝对路径/`..` 组件/shell 危险字符) ---- */ +static int unsafe_path(const char *s) +{ + return s && strpbrk(s, " ;`$'\"&|<>") != NULL; +} +static int has_dotdot_comp(const char *p) +{ + const char *s = p; + while (*s) { + if (s[0] == '.' && s[1] == '.' && + (s == p || s[-1] == '/') && (s[2] == 0 || s[2] == '/')) + return 1; + s++; + } + return 0; +} +/* 校验并相对化为平铺成员名:去前导 '/' 与重复 './',禁绝对/`..`/危险字符。返回 0=ok 写 out。 */ +static int sanitize_member(const char *in, char *out, int n) +{ + if (!in || !*in) return -1; + const char *p = in; + while (*p == '/' || (p[0] == '.' && p[1] == '/')) p++; + if (*p == '/' || !*p) return -1; + if (has_dotdot_comp(p)) return -1; + if (unsafe_path(p)) return -1; + size_t l = strlen(p); + if (l + 1 > (size_t)n) return -1; + memcpy(out, p, l + 1); /* memcpy 而非 snprintf:p 可能来自长行缓冲,防 -Wformat-truncation 误报 */ + return 0; +} +/* 递归建目录(mkdir 系统调用;已存在 EEXIST 忽略)。 */ +static int mkdir_p(const char *path) +{ + char buf[1600]; + snprintf(buf, sizeof buf, "%s", path); + for (char *p = buf + 1; *p; p++) { + if (*p == '/') { *p = 0; mkdir(buf, 0755); *p = '/'; } + } + return mkdir(buf, 0755) == 0 || errno == EEXIST ? 0 : -1; +} + +/* 逐一手写从 font.json 取字段(family/weight/name/tier/glyph_count/sha256_png/sha256_idx)。 + * 返回 0=ok;*pf 指向解析出的 J_STR(供复制)。 */ +static const jv_t *font_json_str(const jv_t *root, const char *key) +{ + const jv_t *v = jv_obj_get(root, key); + if (v && v->type == J_STR && v->str) return v; + return NULL; +} + +/* 得到已装载字体库(family/weight 三级扫描 + 三件套齐)JSON 数组。 */ +static int api_fonts_list(int sock) +{ + if (!tf_present()) return send_err(sock, 503, "NO_CARD", "未识别到 TF 卡"); + char root[1100]; + fonts_root(root, sizeof root); + DIR *fd = opendir(root); + if (!fd) return send_json(sock, 200, "{\"fonts\":[]}"); + sbuf_t s = {0}; + sA(&s, "{\"fonts\":["); + int first = 1; + struct dirent *fe; + while ((fe = readdir(fd))) { + if (fe->d_name[0] == '.') continue; + char famdir[1700]; + snprintf(famdir, sizeof famdir, "%s/%s", root, fe->d_name); + struct stat fst; + if (stat(famdir, &fst) < 0 || !S_ISDIR(fst.st_mode)) continue; + DIR *wd = opendir(famdir); + if (!wd) continue; + struct dirent *we; + while ((we = readdir(wd))) { + if (we->d_name[0] == '.') continue; + char wdir[2200]; + snprintf(wdir, sizeof wdir, "%s/%s", famdir, we->d_name); + struct stat wst; + if (stat(wdir, &wst) < 0 || !S_ISDIR(wst.st_mode)) continue; + char pp[2560], pi[2560], pj[2560]; + snprintf(pp, sizeof pp, "%s/font.png", wdir); + snprintf(pi, sizeof pi, "%s/font.idx", wdir); + snprintf(pj, sizeof pj, "%s/font.json", wdir); + if (access(pp, R_OK) || access(pi, R_OK) || access(pj, R_OK)) continue; + /* 解析 font.json(可选增强字段) */ + char name[256] = "", tier[64] = ""; + long long gc = 0; + char jbuf[4096]; + if (read_small_file(pj, jbuf, sizeof jbuf) >= 0) { + jv_t *jr = jv_parse(jbuf, (int)strlen(jbuf)); + if (jr) { + const jv_t *v = font_json_str(jr, "name"); + if (v) snprintf(name, sizeof name, "%s", v->str); + v = font_json_str(jr, "tier"); + if (v) snprintf(tier, sizeof tier, "%s", v->str); + else { v = font_json_str(jr, "charset"); if (v) snprintf(tier, sizeof tier, "%s", v->str); } + v = jv_obj_get(jr, "glyph_count"); + if (v && v->type == J_NUM) gc = v->inum; + jv_free(jr); + } + } + if (!name[0]) snprintf(name, sizeof name, "%s", fe->d_name); + if (!first) sA(&s, ","); + sA(&s, "{\"family\":"); + sA_str(&s, fe->d_name); + sA(&s, ",\"weight\":"); + sA_str(&s, we->d_name); + sA(&s, ",\"name\":"); + sA_str(&s, name); + sA(&s, ",\"tier\":"); + sA_str(&s, tier); + sA(&s, ",\"glyph_count\":%lld,\"mtime\":%lld}", gc, (long long)wst.st_mtime); + first = 0; + } + closedir(wd); + } + closedir(fd); + sA(&s, "]}"); + return send_json(sock, 200, s.b ? s.b : "{\"fonts\":[]}"); +} + +/* 在 multipart body 中定位 name="file" 字段数据区间(r->body 内)。 */ +/* 对文件算 sha256 hex(64 字符,流式,不整读进内存)。返回 0=ok;-1=打开/读失败。 */ +static int sha256_file_hex(const char *path, char out[65]) +{ + int fd = open(path, O_RDONLY); + if (fd < 0) return -1; + mp_sha256_ctx c; + mp_sha256_init(&c); + uint8_t buf[8192]; + ssize_t n; + while ((n = read(fd, buf, sizeof buf)) > 0) mp_sha256_update(&c, buf, (size_t)n); + close(fd); + if (n < 0) return -1; + uint8_t h[32]; + mp_sha256_final(&c, h); + auth_hex(h, sizeof h, out); + out[64] = 0; + return 0; +} + +static int api_fonts_import(int sock, const req_t *r) +{ + if (!tf_present()) return send_err(sock, 503, "NO_CARD", "未识别到 TF 卡"); + char force[8] = "0"; + qparam(r->query, "force", force, sizeof force); + long uni = (long)time(NULL); + char tmpdir[1500], tmpgz[1500], stg[1500]; + snprintf(tmpdir, sizeof tmpdir, "%s/tmp", TF_CARD_DIR); + if (mkdir_p(tmpdir) != 0) return send_err(sock, 500, "INTERNAL", "建临时目录失败"); + snprintf(tmpgz, sizeof tmpgz, "%s/tmp/mp_font_%d_%ld.tar.gz", TF_CARD_DIR, (int)getpid(), uni); + snprintf(stg, sizeof stg, "%s/tmp/mp_font_stg_%d_%ld", TF_CARD_DIR, (int)getpid(), uni); + + /* ① 写 multipart file 到临时 tar.gz */ + if (multipart_extract_file(r, tmpgz) < 0) + return send_err(sock, 400, "BAD_REQUEST", "缺字体库 tar.gz(multipart 字段 file)"); + + /* ② 成员名预校验:gzip -dc | tar -t → 每名 sanitize,且恰为三件套平铺(拒绝对/.. / 多出条目) */ + { + char cmd[3200]; + snprintf(cmd, sizeof cmd, "gzip -dc '%s' 2>/dev/null | tar -t 2>/dev/null", tmpgz); + FILE *pf = popen(cmd, "r"); + if (!pf) { unlink(tmpgz); return send_err(sock, 500, "INTERNAL", "无法列 tar 成员"); } + int bad = 0, have_png = 0, have_idx = 0, have_json = 0, nent = 0; + char line[512]; + while (fgets(line, sizeof line, pf)) { + char *e = strchr(line, '\n'); if (e) *e = 0; + if (!line[0]) continue; + char san[128]; + if (sanitize_member(line, san, sizeof san) < 0) { bad = 1; break; } + if (!strcmp(san, "font.png")) have_png = 1; + else if (!strcmp(san, "font.idx")) have_idx = 1; + else if (!strcmp(san, "font.json")) have_json = 1; + else { bad = 1; break; } + nent++; + } + pclose(pf); + if (bad || nent != 3 || !have_png || !have_idx || !have_json) { + unlink(tmpgz); + return send_err(sock, 400, "BAD_REQUEST", "tar 缺三件套或含非法成员(拒绝绝对路径/../多出条目)"); + } + } + + /* ③ 解压到临时目录 */ + rm_recursive(stg); + if (mkdir_p(stg) != 0) { unlink(tmpgz); return send_err(sock, 500, "INTERNAL", "建临时目录失败"); } + { + char cmd[3200]; + snprintf(cmd, sizeof cmd, "gzip -dc '%s' 2>/dev/null | tar -x -C '%s' 2>/dev/null", tmpgz, stg); + if (system(cmd) != 0) { rm_recursive(stg); unlink(tmpgz); return send_err(sock, 400, "BAD_REQUEST", "tar 解压失败(非 gzip/tar?)"); } + } + + /* ④ 目录锁:恰为 3 个普通文件(lstat 拒软链/目录/设备),总大小 ≤ FONT_EXTRACT_MAX(防炸弹) */ + { + static const char *names[3] = { "font.png", "font.idx", "font.json" }; + int seen[3] = {0,0,0}, cnt = 0, ok = 1; + DIR *d = opendir(stg); + if (!d) { rm_recursive(stg); unlink(tmpgz); return send_err(sock, 500, "INTERNAL", "读临时目录失败"); } + struct dirent *de; + while ((de = readdir(d))) { + if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, "..")) continue; + int idx = -1; + for (int i = 0; i < 3; i++) if (!strcmp(de->d_name, names[i])) { idx = i; break; } + if (idx < 0) { ok = 0; break; } + char fp[1800]; snprintf(fp, sizeof fp, "%s/%s", stg, de->d_name); + struct stat st; + if (lstat(fp, &st) != 0 || !S_ISREG(st.st_mode)) { ok = 0; break; } /* 拒软链/目录/设备 */ + seen[idx] = 1; cnt++; + } + closedir(d); + long long tot = 0; + for (int i = 0; i < 3; i++) { + if (!seen[i]) { ok = 0; break; } + char fp[1600]; snprintf(fp, sizeof fp, "%s/%s", stg, names[i]); + struct stat st; + if (stat(fp, &st) != 0) { ok = 0; break; } + tot += (long long)st.st_size; + } + if (!ok || cnt != 3 || tot > (long long)FONT_EXTRACT_MAX) { + rm_recursive(stg); unlink(tmpgz); + return send_err(sock, 400, "BAD_REQUEST", "tar 内容非法(缺件/软链/多出条目/解压后超大)"); + } + } + + /* ⑤ 读 font.json → family/weight(可解析硬失败) */ + char jpath[1600]; snprintf(jpath, sizeof jpath, "%s/font.json", stg); + char jbuf[8192]; + if (read_small_file(jpath, jbuf, sizeof jbuf) < 0) { rm_recursive(stg); unlink(tmpgz); return send_err(sock, 400, "BAD_REQUEST", "font.json 缺失"); } + jv_t *jr = jv_parse(jbuf, (int)strlen(jbuf)); + if (!jr) { rm_recursive(stg); unlink(tmpgz); return send_err(sock, 400, "BAD_REQUEST", "font.json 解析失败"); } + char family[128] = "font", weight[64] = "regular"; + const jv_t *v = font_json_str(jr, "family"); + if (v) snprintf(family, sizeof family, "%s", v->str); + else { v = font_json_str(jr, "name"); if (v) snprintf(family, sizeof family, "%s", v->str); } + v = font_json_str(jr, "weight"); + if (v) snprintf(weight, sizeof weight, "%s", v->str); + char fam_s[128], wt_s[64]; + if (safe_dir_segment(family, fam_s, sizeof fam_s) < 0) { jv_free(jr); rm_recursive(stg); unlink(tmpgz); return send_err(sock, 422, "UNSUPPORTED", "font.json family 非法"); } + if (safe_dir_segment(weight, wt_s, sizeof wt_s) < 0) { jv_free(jr); rm_recursive(stg); unlink(tmpgz); return send_err(sock, 422, "UNSUPPORTED", "font.json weight 非法"); } + snprintf(family, sizeof family, "%s", fam_s); + snprintf(weight, sizeof weight, "%s", wt_s); + + /* ⑥ 目标目录 + 覆盖冲突(409,除非 force=1) */ + char root[1100], target[1500]; + fonts_root(root, sizeof root); + snprintf(target, sizeof target, "%s/%s/%s", root, family, weight); + if (strcmp(force, "1") != 0) { + static const char *names3[] = { "font.png", "font.idx", "font.json" }; + char tp[1600]; int conflicted = 0; + for (int i = 0; i < 3; i++) { snprintf(tp, sizeof tp, "%s/%s", target, names3[i]); if (access(tp, F_OK) == 0) { conflicted = 1; break; } } + if (conflicted) { jv_free(jr); rm_recursive(stg); unlink(tmpgz); return send_err(sock, 409, "CONFLICT", "目标字库已存在,请确认覆盖"); } + } + + /* ⑦ sha256 仅 WARN(对齐 font.json 约定,不硬失败) */ + char warn[256] = ""; + { + const jv_t *wp = font_json_str(jr, "sha256_png"); + const jv_t *wi = font_json_str(jr, "sha256_idx"); + char need[65], got[65]; + if (wp && wp->str[0]) { + snprintf(need, sizeof need, "%s", wp->str); + char fp[1600]; snprintf(fp, sizeof fp, "%s/font.png", stg); + if (sha256_file_hex(fp, got) == 0 && strcasecmp(need, got) != 0) + snprintf(warn, sizeof warn, "sha256_png 不匹配(源库校验失败,但已导入)"); + } + if (wi && wi->str[0] && !warn[0]) { + snprintf(need, sizeof need, "%s", wi->str); + char fp[1600]; snprintf(fp, sizeof fp, "%s/font.idx", stg); + if (sha256_file_hex(fp, got) == 0 && strcasecmp(need, got) != 0) + snprintf(warn, sizeof warn, "sha256_idx 不匹配(源库校验失败,但已导入)"); + } + } + + /* ⑧ 建目标目录 + rename 三件套(原子替换) */ + { + char p1[1400]; + snprintf(p1, sizeof p1, "%s/%s", root, family); + mkdir(p1, 0755); + mkdir(target, 0755); + } + { + static const char *names3[] = { "font.png", "font.idx", "font.json" }; + int ok = 1; + for (int i = 0; i < 3; i++) { + char sp[1600], tp[1600]; + snprintf(sp, sizeof sp, "%s/%s", stg, names3[i]); + snprintf(tp, sizeof tp, "%s/%s", target, names3[i]); + if (rename(sp, tp) < 0) ok = 0; + } + if (!ok) { rm_recursive(stg); unlink(tmpgz); jv_free(jr); return send_err(sock, 500, "INTERNAL", "写入字体文件失败(磁盘满?)"); } + } + rm_recursive(stg); + unlink(tmpgz); + + sbuf_t s = {0}; + sA(&s, "{\"family\":"); + sA_str(&s, family); + sA(&s, ",\"weight\":"); + sA_str(&s, weight); + sA(&s, ",\"imported\":true,\"hint\":\"字体已导入。请进设备「设置 → 字体」页,字体列表在进入时自动重扫生效。\",\"warning\":"); + sA_str(&s, warn[0] ? warn : ""); + sA(&s, "}"); + jv_free(jr); + return send_json(sock, 200, s.b ? s.b : ""); +} + +static int api_fonts_export(int sock, const req_t *r) +{ + if (!tf_present()) return send_err(sock, 503, "NO_CARD", "未识别到 TF 卡"); + char family[128], weight[64]; + if (!qparam(r->query, "family", family, sizeof family)) family[0] = 0; + if (!qparam(r->query, "weight", weight, sizeof weight)) weight[0] = 0; + char f[128], w[64]; + if (safe_dir_segment(family, f, sizeof f) < 0) return send_err(sock, 400, "BAD_REQUEST", "family 非法"); + if (!weight[0]) snprintf(w, sizeof w, "%s", "regular"); + else if (safe_dir_segment(weight, w, sizeof w) < 0) return send_err(sock, 400, "BAD_REQUEST", "weight 非法"); + char root[1100], dir[1500]; + fonts_root(root, sizeof root); + snprintf(dir, sizeof dir, "%s/%s/%s", root, f, w); + static const char *names3[] = { "font.png", "font.idx", "font.json" }; + for (int i = 0; i < 3; i++) { + char ap[1600]; + snprintf(ap, sizeof ap, "%s/%s", dir, names3[i]); + struct stat st; + if (stat(ap, &st) < 0) { + sbuf_t s = {0}; + sA(&s, "font."); sA_str(&s, names3[i]); + sA(&s, " 缺失(字库 <"); + sA_str(&s, f); sA(&s, "/"); sA_str(&s, w); sA(&s, "> 不完整)"); + int rc = send_err(sock, 404, "NOT_FOUND", s.b ? s.b : "字体三件套缺失"); + sbuf_free(&s); + return rc; + } + } + /* 打包:tar -cf - -C 三件套 | gzip -c > ,落临时文件求 Content-Length 再流式下发 */ + long uni = (long)time(NULL); + char tmpdir[1500], tmp[1500]; + snprintf(tmpdir, sizeof tmpdir, "%s/tmp", TF_CARD_DIR); + if (mkdir_p(tmpdir) != 0) return send_err(sock, 500, "INTERNAL", "建临时目录失败"); + snprintf(tmp, sizeof tmp, "%s/tmp/mp_font_exp_%d_%ld.tar.gz", TF_CARD_DIR, (int)getpid(), uni); + char cmd[3600]; + snprintf(cmd, sizeof cmd, "tar -cf - -C '%s' font.png font.idx font.json 2>/dev/null | gzip -c > '%s' 2>/dev/null", dir, tmp); + if (system(cmd) != 0) { unlink(tmp); return send_err(sock, 500, "INTERNAL", "打包失败"); } + struct stat st; + if (stat(tmp, &st) < 0 || !S_ISREG(st.st_mode)) { unlink(tmp); return send_err(sock, 500, "INTERNAL", "打包文件不可读"); } + char fname[220]; + snprintf(fname, sizeof fname, "%s-%s.font.tar.gz", f, w); + char extra[300]; + snprintf(extra, sizeof extra, "Content-Disposition: attachment; filename=\"%s\"", fname); + if (send_head(sock, 200, "application/gzip", (long long)st.st_size, extra) < 0) { unlink(tmp); return -1; } + int fd = open(tmp, O_RDONLY); + if (fd < 0) { unlink(tmp); return -1; } + char buf[8192]; + ssize_t n; + while ((n = read(fd, buf, sizeof buf)) > 0) + if (write_full(sock, buf, (size_t)n) < 0) { close(fd); unlink(tmp); return -1; } + close(fd); + unlink(tmp); + return 0; +} + /* ---------------- 应用(MeowAPPs 扫描 + nyai) ---------------- */ /* 执行命令(sh -c),捕获 stdout(上限 cap-1),返回退出状态(-1=无法启动)。 */ static int run_cmd(const char *cmd, char *out, int outcap) @@ -3433,7 +3883,7 @@ static int multipart_extract_file(const req_t *r, const char *outpath) } } const char *ds = he + 4; - const char *de = strstr(ds, dmark); + const char *de = mem_find(ds, (size_t)((r->body + r->body_len) - ds), dmark); if (!de) de = r->body + r->body_len; while (de > ds && (de[-1] == '\r' || de[-1] == '\n')) de--; if (isfile) { @@ -3930,6 +4380,11 @@ static int handle(int sock, req_t *r) if (!strcmp(r->method, "GET") && !strcmp(p, "/api/system")) return api_system(sock); + /* ---- 字体库(导入/导出/列表) ---- */ + if (!strcmp(r->method, "POST") && !strcmp(p, "/api/fonts/import")) return api_fonts_import(sock, r); + if (!strcmp(r->method, "GET") && !strcmp(p, "/api/fonts")) return api_fonts_list(sock); + if (!strcmp(r->method, "GET") && !strcmp(p, "/api/fonts/export")) return api_fonts_export(sock, r); + /* ---- 实时画面(阶段 C) ---- */ if (!strcmp(r->method, "GET") && !strcmp(p, "/api/screen.jpeg")) return api_screen_jpeg(sock, r); diff --git a/patch_v2/meowpanel/meowpanel_host b/patch_v2/meowpanel/meowpanel_host index a83d7f572720ed8a7d2133f3e040e6d5908c16cf..fadde8466c95760e2a8de6f6c1d58e6e5841b85c 100755 GIT binary patch literal 147480 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 diff --git a/patch_v2/meowpanel/web/meowpanel.js b/patch_v2/meowpanel/web/meowpanel.js index a55f019..4cee681 100644 --- a/patch_v2/meowpanel/web/meowpanel.js +++ b/patch_v2/meowpanel/web/meowpanel.js @@ -608,8 +608,49 @@ if (!g[1].length) return; h += '

' + g[0] + '

' + g[1].map(settingControl).join('') + '
'; }); + // 字体库(.zip 导入 / 导出) + h += '

字体库(.tar.gz 导入 / 导出)

' + + '
' + + '
' + + '

加载字体库列表…

' + + '

导入 tar.gz(内含 font.png + font.idx + font.json)→ 校验后解压到 MeowOS/fonts/<family>/<weight>/;导出把该三件套打包为 tar.gz。导入后进设备「设置 → 字体」页列表自动重扫生效。

'; h += ''; $('#content').innerHTML = h; + loadFonts(); + } + async function loadFonts() { + const box = $('#font-list'); if (!box) return; + let d; + try { d = await api('GET', '/api/fonts'); } + catch (e) { box.innerHTML = '

字体库列表加载失败:' + esc(errText(e)) + '

'; return; } + const fs = (d && d.fonts) || []; + if (!fs.length) { box.innerHTML = '

暂无字库(TF 卡 MeowOS/fonts 下无完整三件套)。

'; return; } + box.innerHTML = fs.map(f => { + const nm = esc(f.name || f.family || ''); + const meta = esc((f.family || '') + '/' + (f.weight || '') + (f.tier ? ' · ' + f.tier : '') + (f.glyph_count ? ' · ' + f.glyph_count + ' 字' : '')); + return '
' + + '
' + nm + '
' + meta + '
' + + '
'; + }).join(''); + } + async function importFont(files) { + if (!files || !files.length) return; + const f = files[0]; + const fd = new FormData(); fd.append('file', f); + toast('正在导入 ' + f.name + '…'); + let res; + try { res = await api('POST', '/api/fonts/import', fd); } + catch (err) { + if (err.code === 'CONFLICT') { + const ok = await confirmDlg('覆盖字库', '目标字库已存在,覆盖导入吗?', true); + if (!ok) return; + try { res = await api('POST', '/api/fonts/import?force=1', fd); } + catch (e2) { toast('导入失败:' + errText(e2)); return; } + } else { toast('导入失败:' + errText(err)); return; } + } + toast('已导入 ' + ((res && res.family) || '') + '/' + ((res && res.weight) || '')); + if (res && res.hint) toast(res.hint); + loadFonts(); } function bindSettings() { const c = $('#content'); @@ -619,6 +660,7 @@ updateSetting(r.dataset.skey, +r.value, 'int'); }); c.addEventListener('change', function (e) { + if (e.target.id === 'font-file') { importFont(e.target.files); return; } const t = e.target; const sk = t.dataset.skey; if (!sk) return; if (t.dataset.stype === 'bool') updateSetting(sk, t.checked, 'bool'); @@ -626,6 +668,13 @@ else if (t.dataset.stype === 'str') updateSetting(sk, t.value, 'str'); }); c.addEventListener('click', async function (e) { + if (e.target.closest('#font-import')) { const inp = $('#font-file'); if (inp) { inp.value = ''; inp.click(); } return; } + const fe = e.target.closest('[data-fexport]'); + if (fe) { + const f = fe.dataset.fexport, w = fe.dataset.fweight; + doDownload('/api/fonts/export?family=' + encodeURIComponent(f) + '&weight=' + encodeURIComponent(w), (f || 'font') + '-' + (w || 'regular') + '.font.tar.gz'); + return; + } if (e.target.closest('[data-stype="pass"]')) { setPanelPassword(); return; } if (e.target.closest('#set-restore')) { const ok = await confirmDlg('恢复全部默认', '将把全部设置恢复为出厂默认(含主题/亮度/音量)。继续?', true);