From d12164305de35f5624084a23466b5df274013a88 Mon Sep 17 00:00:00 2001 From: MeowOS Date: Tue, 1 Sep 2026 21:30:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(panel,=20PANEL=5FENHANCE=5FPLAN=20?= =?UTF-8?q?=E6=89=B91-A):=20=E8=AE=BF=E9=97=AE=E7=BA=A7=204=20=E4=BD=8D=20?= =?UTF-8?q?PIN=20=E9=89=B4=E6=9D=83=20+=20=E5=90=8E=E7=AB=AF=E5=8F=AA?= =?UTF-8?q?=E8=AF=BB=E7=AB=AF=E7=82=B9=20power/overview/ams/svcd=20+=20aud?= =?UTF-8?q?io=20=E7=94=B5=E5=B9=B3=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 鉴权(用户定案:访问面板即需登录): - PANEL.pin 存 sha256+salt(salt:hex,绝不含明文);与未来锁屏 PIN 同源预留 system.pin(g_sets 注记)。 - 未设 PIN → /api/auth/setup 首次设置流程;未设 PIN 前读/写端点全拦(require_auth 无条件,登录/设置流程除外)。 - token 128bit(16B→32hex) 只存进程内存(重启自然失效),3 天固定不滑动续期,多会话并存。 - 连错 5 次 PIN 锁 5 分钟(429 LOCKED,status 透出 lock_remaining_ms)。 - 旧密码机制 panel.auth_enabled/panel.auth_pass 兼容迁移:未设 PIN 时可暂用旧密码登录(status=legacy),设 PIN 后以 PIN 为准。 新只读端点(均需 PIN 会话): - /api/power: meow_powermgr MSG_PM_QUERY(0xD0)→RESULT(0xD1) battery/estimate/breakdown,confidence 原样透传。 - /api/audio: 补 rms/peak/lvlseq(追加键,ABI 兼容),抽 audio_fill() 供 overview 复用。 - /api/ams: am list 解析 App 表(pkg/name/state/pid/launches/crashes/last_kind/last_code)。 - /api/svcd: meow_svcd status all 解析服务表(name/state/pid/restart/backoff_ms/trigger/src/exit/exec)。 - /api/overview: 单线程后端只暴露聚合——perf/power/audio/net/ams/svcd 六源顺序 fan-out,任一源失败该子块 available:false,绝不假数据。 前端最小支撑:登录页(PIN 输入+首次设置双态)+ 401 自动跳登录 + token 存 localStorage 随请求带 X-MeowToken(后端亦认 Authorization: Bearer)。 红线:仅新增读级端点,未加任何写端点(音量/路由/策略等);本任务不含批1-B 页面。 md5: meowpanel 3696e85b5eaf111f530c5c39fa68886e(mipsel 静态)/ meowpanel_host 3180e4f87e77db8717597619097805eb。 验证:host+mips -Werror 0 warning;假 IPC/am/svcd 桩六源聚合(含 power 宕机降级)PASS;PIN 全流程(设置→登录→连错5次锁→token 过期)PASS;qemu-mipsel 冒烟 PASS。 --- patch_v2/meowpanel/README.md | 82 +++- patch_v2/meowpanel/meowpanel | Bin 226716 -> 236060 bytes patch_v2/meowpanel/meowpanel.c | 618 +++++++++++++++++++++++----- patch_v2/meowpanel/meowpanel_host | Bin 148080 -> 148688 bytes patch_v2/meowpanel/web/index.html | 7 +- patch_v2/meowpanel/web/meowpanel.js | 75 +++- 6 files changed, 627 insertions(+), 155 deletions(-) diff --git a/patch_v2/meowpanel/README.md b/patch_v2/meowpanel/README.md index e75307d..1b7f46d 100644 --- a/patch_v2/meowpanel/README.md +++ b/patch_v2/meowpanel/README.md @@ -28,7 +28,8 @@ 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`, - 体积约 **218 KB**(固件阈值内)。md5:`015f9cf1c12e36d133b01cf6b6648edd`(本次含 `/api/audio` 音频状态端点 + 前端「音频」「字体」页)。 + 体积约 **236 KB**(固件阈值内)。md5:`3696e85b5eaf111f530c5c39fa68886e`(批1-A:访问级 **4 位 PIN 鉴权** + `/api/{power,overview,ams,svcd}` + `/api/audio` 补 `rms/peak/lvlseq`。 + **重防火墙注意**:运行中二进制先 `.new` 再 `mv`,切勿直接覆盖运行中的 `meowpanel`)。 - `meowpanel_host`:aarch64 动态链接(宿主编译,仅供调试),体积约 **148 KB**。 - 依赖:仅 libc + Linux 内核头(`linux/input.h`),零第三方库(设备无 python3/lua)。鉴权用**内联 SHA-256**(拷贝自 `meow_verify/sha256.c` 公有领域参考写法,前缀 `mp_sha256_*` 避免符号冲突;**未改 `meow_verify/` 目录**)。 @@ -73,9 +74,10 @@ http://.local:8080/ - mDNS 由板载 `meow_mdns` 应答 `.local`。 - 端口默认 **8080**,可用 `-p PORT` / 环境变量 `MEOWPORT` / 与后端同目录 `meowpanel.conf`(`port=N`)覆盖。 (优先级:`-p` > `MEOWPORT` > `meowpanel.conf` > 默认 8080。) -- 无鉴权(设备内网信任模型;**可选**密码鉴权已实现,见 §5.9)。默认关=零回归;开启后除登录/登出/状态外 `/api/*` 需会话。 +- **访问级 PIN 鉴权(用户 2026-09-01 定案)**:访问面板即需登录(4 位 PIN,`panel.pin`,见 §5.9);未认证请求一律 401。 + 除 `/api/auth/{login,setup,logout,status}` 外全部 `/api/` 需有效会话(token 存面板进程内存,重启失效,3 天固定不滑动续期)。 - 上传/下载/管理类请求统一带 `X-MeowToken: `(或 `Authorization: Bearer ` / `Cookie: meow_token=`); - 缺/错/过期 → 401 `UNAUTHORIZED`。**默认无鉴权时请勿把 8080 暴露公网**。 + 缺/错/过期 → 401 `UNAUTHORIZED`。**HTTP 明文(无 TLS),内网使用;请勿把 8080 暴露公网**。 --- @@ -88,8 +90,9 @@ http://.local:8080/ | GET | `/`、`/meowpanel.css`、`/meowpanel.js`、`/assets/` | 静态托管 | ✅ | | GET | `/api/screen.jpeg` | 实时画面:fb0 当前帧 → RGB565→JPEG(`?q=1-100` 质量,默认 70;`?delta=1` 开启增量帧,见 §5.10) | ✅(阶段 C) | | POST | `/api/input/tap` | 触摸注入:`{x,y}`(480×720 原生坐标;write 进 goodix event1,本机实测可投递);本机触摸后 5s 内忽略注入 | ✅(阶段 C) | -| GET | `/api/auth/status` | 鉴权状态(enabled/会话有效) | ✅(公开) | -| POST | `/api/auth/login` | 密码登录发 token(sha256 带盐校验) | ✅(公开;错→401) | +| GET | `/api/auth/status` | 访问鉴权状态(auth_enabled/session/pin_set/legacy/locked/lock_remaining_ms) | ✅(公开) | +| POST | `/api/auth/setup` | 首次设置 4 位 PIN(仅未设 PIN 时;`{pin}` 4 位数字;已设→409) | ✅(公开;非法→422) | +| POST | `/api/auth/login` | PIN 登录发 token(`{pin}`;未设 PIN 时接受旧密码 `{password}` 迁移;错→401,连错 5 次→429 LOCKED) | ✅(公开) | | POST | `/api/auth/logout` | 登出失效 token | ✅(公开;幂等) | | GET | `/api/status` | 性能+系统(`meow_svc_perf` IPC subset=all 透传) | ✅ | | GET | `/api/perf` | 仅性能(subset=perf 透传) | ✅ | @@ -112,7 +115,11 @@ http://.local:8080/ | 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/audio` | 音频状态快照:meow_audiod IPC `MSG_AUDIO_QUERY→STATE` 透传(当前流/路由/音量/underrun,见 §5.12) | ✅(audiod 不在→`available:false`,不报错) | +| GET | `/api/audio` | 音频状态快照:meow_audiod IPC `MSG_AUDIO_QUERY→STATE` 透传(当前流/路由/音量/underrun + **`rms/peak/lvlseq` 电平**,见 §5.12) | ✅(audiod 不在→`available:false`,不报错) | +| GET | `/api/power` | 功耗管理:meow_powermgr IPC `MSG_PM_QUERY→RESULT`(battery/estimate/breakdown,confidence 原样透传) | ✅(powermgr 不在→503 `POWER_UNAVAILABLE`) | +| GET | `/api/ams` | App 运行表:`am list`(pkg/name/state/pid/launches/crashes/last_kind/last_code) | ✅(amsd 不在→`available:false`) | +| GET | `/api/svcd` | 服务表:`meow_svcd status all`(name/state/pid/restart/backoff_ms/trigger/src/exit/exec) | ✅(svcd 不在→`available:false`) | +| GET | `/api/overview` | **首页聚合**(单线程后端只暴露聚合):后端顺序 fan-out perf/power/audio/net/ams/svcd 六源合成一份 JSON;任一源失败→该子块 `available:false`,绝不假数据 | ✅(**读级,需 PIN 会话**) | | GET | `/api/apps` | 扫描 `MeowAPPs/` 读 `app.json` | ✅ | | GET | `/api/apps/:pkg` | 应用详情 | ✅ | | POST | `/api/apps/install` | 经 `nyai install`(multipart 或 path) | ✅ | @@ -237,21 +244,26 @@ http://.local:8080/ TF 路径仅为 launcher 不可达时的诚实降级(会显示自动过期的历史通知,直到 clear)。 - **并发**:IPC 可用时面板不写 TF(撤清由 launcher 自行归档),避免与 launcher `O_APPEND` 竞写;仅 IPC 回退到「写临时 + rename」。 -### 5.9 可选鉴权(panel.auth_enabled / panel.auth_pass) -- **设置键**:`panel.auth_enabled`(bool,默认 `0`=关)+ `panel.auth_pass`(str,存 `salt:hex`)。两者写 `settings.conf`, - 与实体设置页/CLI 同一存储契约(面板为独立进程,直接镜像文件)。`panel.auth_pass` 的 `GET /api/settings` 恒回 - `"value":"" + "set":`,**绝不回传存量哈希/明文**。 -- **门禁**:`require_auth` 在路由分发前执行——未启用直接放行(零回归);启用后除 `/api/auth/{login,logout,status}` 外全部 - `/api/` 需有效会话(token 头 / `X-MeowToken` / `Cookie meow_token`),缺/错/过期 → 401 `UNAUTHORIZED`。 - 危险端点(reboot/shutdown/ota、key 注入)在未开启时**不额外限制**(保持内网模型),开启后亦统一纳入会话校验。 -- **密码**:`PUT /api/settings/panel.auth_pass` 传明文,后端生成 16B 盐(/dev/urandom)→ `salt:hex`(sha256(salt||password)) - 落盘;空串=清除。校验时重算并恒定比较。**哈希/明文绝不进日志/响应**。`panel.auth_enabled` 置 1 时若未设密码 → 422 `请先设置面板密码`。 -- **会话**:`POST /api/auth/login` 校验后发 token(32B → 64 hex),存内存(`AUTH_MAX_SESS`=8,满淘汰最早过期)+ 卡上 - `/meowpanel.session`(` `,重启加载、防吊销失效),有效期 12h。`logout` 失效当前 token。 -- **静态屏蔽**:`serve_static` 额外拒绝后端可执行文件与 `meowpanel.session`(403),防 token 文件被 HTTP 读取。 -- **前端**:api 客户端统一带 `X-MeowToken`,收到 401 → 弹登录页(`#login` overlay);登录成功 token 存 `localStorage`; - 首次进入以 `/api/auth/status` 决定是否弹登录。设置页「面板鉴权」卡片含开关(`panel.auth_enabled`)+「设置/修改密码」 - 按钮(`panel.auth_pass`,走 `passwordDlg` 输入)。 +### 5.9 访问级 PIN 鉴权(panel.pin;用户定案 2026-09-01) +- **模型(覆盖 282 报告「默认无鉴权」前提)**:**访问面板即需登录**。未认证请求一律 401(静态登录页自身 + css/js 放行—— + `serve_static` 先于 `require_auth`);未设 PIN 前无法建立会话,故**读端点也全拦**(登录/设置流程除外),写端点自然一律拒绝。 +- **设置键**:`panel.pin`(str,存 `salt:hex` = sha256(salt||pin) 带盐哈希,绝不存明文),写板载 `settings.conf`(与实体设置页/CLI + 同一存储契约,面板独立进程直接镜像文件);**与未来 MeowOS 锁屏 PIN 同源**:设置键 `system.pin` 预留(本后端只读面板键,见 `g_sets` 注记)。 + `panel.pin` 的 `GET /api/settings` 恒回 `"value":"" + "set":`,**绝不回传哈希/明文**。 +- **PIN**:4 位数字(`pin_validate`);校验时重算 sha256(salt||pin) 并恒定比较(`memcmp`)。 +- **门禁**:`require_auth` 在路由分发前执行——除 `/api/auth/{login,setup,logout,status}` 外全部 `/api/` 需有效会话; + 缺/错/过期 → 401 `UNAUTHORIZED`。危险端点(reboot/shutdown/ota、key 注入、settings 写等)一律纳入会话校验(不再有「未开启」旁路)。 +- **会话 token**:`/dev/urandom` 16B → **32 hex(128bit)**,**只存面板进程内存**(`g_sess[]`,`AUTH_MAX_SESS`=8,满淘汰最早过期), + **无卡上持久化**——设备重启自然清(会话即失效)。有效期 **3 天**(`AUTH_TOKEN_TTL`,**固定不滑动续期**,逐 token 校验到期戳); + 多会话并存。`logout` 失效当前 token。 +- **锁定(防爆破)**:连续 `PIN_MAX_FAILS=5` 次错 PIN → 锁 `PIN_LOCK_SEC=300`s(`429 LOCKED`,响应附 `lock_remaining_ms`; + `status` 透出 `locked/lock_remaining_ms`);内存态,重启清。 +- **旧密码机制兼容迁移**(`panel.auth_enabled`/`panel.auth_pass` 保留):旧密码存在且未设 PIN 时,视为「已设访问屏障」的同等物—— + 登录可用旧密码(`{"password":…}`),`status` 透出 `legacy:true` 并提示改设 4 位 PIN;**一旦设置 `panel.pin`,新代码以 PIN 为准** + (登录只认 PIN,旧密码不再作为凭据)。`PUT /api/settings/panel.auth_pass` 仍可写(引导迁移),`panel.auth_enabled` 已不作门禁(保留兼容)。 +- **前端**:api 客户端统一带 `X-MeowToken`(token 存 `localStorage`);收到 401 → 自动切登录页;未设 PIN → 首次设置流程 + (`#login` overlay 双态:设置=输入+确认,登录=单输入);429 `LOCKED` → 显示锁定提示。设置页「面板鉴权」卡片沿用旧密码项。 +- **静态屏蔽**:`serve_static` 额外拒绝后端可执行文件(403),防可执行被 HTTP 读取。 ### 5.10 实时画面(`/api/screen.jpeg`,含增量帧 `?delta=1`)+ 触摸注入(`/api/input/tap`)— 阶段 C - **实时画面(整帧,默认)**:`GET /api/screen.jpeg` 读 `/dev/fb0` **当前显示帧**(`FBIOGET_VSCREENINFO` 取 `yoffset`/`xres`/`yres`/`bpp`, @@ -314,8 +326,10 @@ http://.local:8080/ (`active=.. app=.. sid=.. rate=.. ch=.. fmt=.. written=.. played=.. underrun=.. paused=.. route_mode=.. port=.. vol=..`, 空格分隔 k=v、NUL 结尾)。**audiod 无 MSG_HELLO 握手**(见 meow_audio.c CLI),与 perf/power/launcher 路径不同。 - **响应**:解析 k=v 为 JSON——`{available:true, active, app, sid, rate, ch, fmt, written_frames, played_frames, - underrun, paused, route_mode("auto"/"manual"), port, vol}`;`port` 为 amixer numid=9 路由口 + underrun, paused, route_mode("auto"/"manual"), port, vol, **rms, peak, lvlseq**}`;`port` 为 amixer numid=9 路由口 (0=空闲 1=lineout 2=3.5 3=4.4 4=Type-C SPDIF;宿主无 amixer 时为 -1)。 +- **电平(追加键,ABI/协议兼容)**:`rms`/`peak` = deci-dB(`-990`=‑inf;如 `-139`=‑13.9dBFS),`lvlseq` = 快照代际 + (每次结算/开流复位递增,前端可用其判「新刻度」驱动 sparkline)。仅追加键,不破坏既有字段。 - **audiod 不在**(socket 缺失/连接拒/超时/非预期应答)→ HTTP 200 `{"available":false}`,**不报错**(面板音频页显示 「audiod 不可用」)。只读端点;不放测试音(真机乱响风险,tone 留给 CLI `meow_audio tone`)。 - **前端**:「音频」页(`web/#/audio`)5s 轮询展示——当前流(app/rate/ch/fmt/已写帧/已播放帧/underrun/暂停态)+ @@ -328,6 +342,30 @@ http://.local:8080/ `family/weight` 与 `warning`(sha256 不符仅提示)/`hint`。 - 设置页原「字体库」卡保留(同一后端,互不影响)。 +### 5.14 批1-A 新增只读端点(供批1-B 前端消费;JSON 形状) +> 本批只做**后端端点 + 最小前端支撑(登录)**,首页/电源/进程页归批1-B。前端调用统一带 PIN 会话 token(见 §5.9)。 + +- **`GET /api/overview`**(首页生命线,单线程后端只暴露聚合): + ```json + { "ts": 1788268891, + "perf": { "...": "meow_svc_perf 聚合 JSON(cpu/memory/storage/tfcard/temp/system/network,透传)" }, + "power": { "mode":"meow","battery":{"state","pct","mv","health","technology","temp_c10","charger_temp_c10","cycle_count","nominal_mah_note"}, + "estimate":{"est_mw","confidence":"estimated|derived|measured|none","calibrated","degraded"}, + "breakdown":{"baseline_mw","cpu_mw","cpu_util_pct","backlight_mw","panel_mw","brightness_pct","wifi_mw","wifi_state","bt_mw","bt_state","audio_mw","audio_state","degraded"}, + "policy": null }, + "audio": { "available": true, "active","app","sid","rate","ch","fmt","written_frames","played_frames","underrun","paused", + "route_mode","port","vol","rms","peak","lvlseq" }, + "net": { "...": "netmgrd 概览 JSON(mode/ifaces[]/wifi/bt/rfkill/hostname_local,透传)" }, + "ams": { "available": true, "count": 3, "apps":[ {"pkg","name","state":"fg|bg|stop","pid","launches","crashes","last_kind":"clean|exit|sig","last_code"} ] }, + "svcd": { "available": true, "count": 3, "services":[ {"name","state":"running|stopped|stopping|disabled|failed","pid","restart","restart_str","backoff_ms","trigger","src":"board|tf","exit","exit_time","exec"} ] } + } + ``` + - **任一源失败 → 该子块 `{"available":false}`**(`perf`/`power`/`net` 失败也是 `{"available":false}`,绝不假数据); + `audio`/`ams`/`svcd` 成功时自带 `available:true`。`perf`/`power`/`net` 成功时为对应源**原始 JSON**(无 `available` 字段)。 +- **`GET /api/power`**:即 overview 的 `power` 子块(可 503 `POWER_UNAVAILABLE`,非 `available:false`)。 +- **`GET /api/ams`** / **`GET /api/svcd`**:即 overview 的 `ams`/`svcd` 子块;源不在 → `{"available":false}`。 +- **`GET /api/audio`**:overview 的 `audio` 子块 + rms/peak/lvlseq 消费说明见 §5.12。 + --- ## 6. 与协议的出入(「实现为准 + 原因」,供回改 MEOWPANEL_PROTOCOL.md) diff --git a/patch_v2/meowpanel/meowpanel b/patch_v2/meowpanel/meowpanel index 9b0768fc523ec1854d8d6a8a42a5956249d08036..965d59844f8af008fabc62d9e1fe3c935d854784 100755 GIT binary patch delta 90407 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 delta 81828 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 diff --git a/patch_v2/meowpanel/meowpanel.c b/patch_v2/meowpanel/meowpanel.c index ec35d80..ee95283 100644 --- a/patch_v2/meowpanel/meowpanel.c +++ b/patch_v2/meowpanel/meowpanel.c @@ -94,8 +94,13 @@ static const char *g_notif_log = NULL; /* 通知转储日志:/notificat #define LAUNCHER_SOCK "/usr/data/meow_ipc.sock" /* launcher 主 IPC(通知活跃集查询/撤清) */ #define AUDIO_SOCK "/usr/data/meow_audio.sock" /* meow_audiod 状态快照(MSG_AUDIO_QUERY→STATE) */ #define NET_SOCK "/usr/data/meow_net.sock" /* meow_netmgrd 网络管理(MSG_NET_*,期2 观测层/DNS 代理) */ +#define PM_SOCK "/usr/data/meow_pm.sock" /* meow_powermgr 功耗管理(MSG_PM_QUERY→RESULT) */ #define NYAI_PATH "/usr/bin/nyai" /* 固件内置(权威) */ #define NYAI_PATH_CARD "/usr/data/mnt/sd_0/MeowOS/opt/bin/nyai" /* 旧卡上路径(回退) */ +#define AMS_BIN "/usr/bin/am" /* 固件内置 amsd 用户侧 CLI(权威) */ +#define AMS_BIN_CARD "/usr/data/mnt/sd_0/MeowOS/opt/bin/am" /* 旧卡上路径(回退) */ +#define SVCD_BIN "/usr/bin/meow_svcd" /* 固件内置 svcd 服务表 CLI(权威) */ +#define SVCD_BIN_CARD "/usr/data/mnt/sd_0/MeowOS/opt/bin/meow_svcd" /* 旧卡上路径(回退) */ #define BOOT_DEFAULT_FILE "/data/meow_boot_default" #define VERSION_FILE "/etc/meowos_version" #define HOSTNAME_FILE "" @@ -127,6 +132,7 @@ static const char *g_sock_power = POWER_SOCK; static const char *g_sock_launcher = LAUNCHER_SOCK; static const char *g_sock_audio = AUDIO_SOCK; static const char *g_sock_net = NET_SOCK; /* meow_netmgrd(--sock-net / env MEOW_NET_SOCK 覆盖) */ +static const char *g_sock_pm = PM_SOCK; /* meow_powermgr(--sock-pm / env MEOW_PM_SOCK 覆盖) */ /* ---------------- 增量帧缓存(GET /api/screen.jpeg?delta=1,阶段 C 增强) ---------------- * 服务端缓存上一帧紧凑 RGB565,按 8×8 块比对,只编码变化块(外接 bbox 子图)并以响应头回传偏移。 @@ -239,6 +245,7 @@ static void panel_log(const char *fmt, ...); static int qparam(const char *query, const char *key, char *out, int outcap); /* 定义在文件后部;网络连接表 query 取值 */ static int tf_present(void); /* 定义在文件后部;net 日志卡根判定 */ static const char *web_root(void); /* 定义在文件后部;此处前向声明供鉴权会话路径使用 */ +static int run_cmd(const char *cmd, char *out, int outcap); /* 定义在文件后部;/api/ams、/api/svcd、/api/overview 用(有界收割) */ /* ---------------- CSV(enum 名/标签)非改写取值;定义在设置列表区,先声明供 settings_coerce 用 ---------------- */ static const char *csv_at(const char *s, int idx, char *buf, int buflen); @@ -516,7 +523,12 @@ static const setdef_t g_sets[] = { { "network.bluetooth_enabled", ST_BOOL, "0", 0,0, NULL, NULL, "网络" }, /* 系统 */ { "system.hostname", ST_STR, "meowos",0,0, NULL, NULL, "系统" }, - /* 面板(MeowPanel 自身,可选鉴权) */ + /* 面板(MeowPanel 自身,访问级 PIN 鉴权) + * panel.pin = 4 位数字 PIN 的 sha256+salt 哈希(`:`,绝不存明文)。 + * 与未来 MeowOS 锁屏 PIN 同源:锁屏键 `system.pin` 预留——本后端只读面板键 panel.pin;将来锁屏启用时 + * 以 system.pin 为准并做同源迁移(panel.pin 视为其缓存/别名),此处仅留兼容注记,不实现。 + * panel.auth_enabled/panel.auth_pass 为旧密码机制,保留兼容迁移(见鉴权段注释),新代码以 PIN 为准。 */ + { "panel.pin", ST_STR, "", 0,0, NULL, NULL, "面板" }, { "panel.auth_enabled", ST_BOOL, "0", 0,0, NULL, NULL, "面板" }, { "panel.auth_pass", ST_STR, "", 0,0, NULL, NULL, "面板" }, }; @@ -945,41 +957,109 @@ static long long audio_kv_ll(const char *txt, const char *key, long long defv) return strtoll(b, NULL, 10); } -static int api_audio(int sock) +/* 音频快照填充:把 `{"available":...}` 追加进 sbuf(供 /api/audio 单发与 /api/overview 聚合共用)。 + * audiod 不在/超时/应答异常一律 `{"available":false}`(HTTP 200,不报错)——面板/首页据此降级,绝不假数据。 */ +static void audio_fill(sbuf_t *s) { int fd = ipc_connect_tmo(g_sock_audio, IPC_TIMEOUT_MS); - if (fd < 0) return send_json(sock, 200, "{\"available\":false}"); + if (fd < 0) { sA(s, "{\"available\":false}"); return; } uint8_t buf[MEOW_IPC_MAX]; uint16_t type = 0; uint32_t rid = 0; int n = -1; if (send_frame(fd, MSG_AUDIO_QUERY, 5, NULL, 0) == 0) n = recv_frame(fd, &type, &rid, buf, sizeof buf - 1); close(fd); - if (n <= 0 || type != MSG_AUDIO_STATE) - return send_json(sock, 200, "{\"available\":false}"); + if (n <= 0 || type != MSG_AUDIO_STATE) { sA(s, "{\"available\":false}"); return; } buf[n] = 0; const char *txt = (const char *)buf; char app[MEOW_APP_ID_MAX + 8], fmt[32], rmode[16]; audio_kv(txt, "app", app, sizeof app); audio_kv(txt, "fmt", fmt, sizeof fmt); audio_kv(txt, "route_mode", rmode, sizeof rmode); - sbuf_t s = {0}; - sA(&s, "{\"available\":true,\"active\":%lld,\"app\":", audio_kv_ll(txt, "active", 0)); - sA_str(&s, app); - sA(&s, ",\"sid\":%lld,\"rate\":%lld,\"ch\":%lld,\"fmt\":", + sA(s, "{\"available\":true,\"active\":%lld,\"app\":", audio_kv_ll(txt, "active", 0)); + sA_str(s, app); + sA(s, ",\"sid\":%lld,\"rate\":%lld,\"ch\":%lld,\"fmt\":", audio_kv_ll(txt, "sid", 0), audio_kv_ll(txt, "rate", 0), audio_kv_ll(txt, "ch", 0)); - sA_str(&s, fmt); - sA(&s, ",\"written_frames\":%lld,\"played_frames\":%lld,\"underrun\":%lld,\"paused\":%lld,\"route_mode\":", + sA_str(s, fmt); + sA(s, ",\"written_frames\":%lld,\"played_frames\":%lld,\"underrun\":%lld,\"paused\":%lld,\"route_mode\":", audio_kv_ll(txt, "written", 0), audio_kv_ll(txt, "played", 0), audio_kv_ll(txt, "underrun", 0), audio_kv_ll(txt, "paused", 0)); - sA_str(&s, rmode); - sA(&s, ",\"port\":%lld,\"vol\":%lld}", + sA_str(s, rmode); + sA(s, ",\"port\":%lld,\"vol\":%lld", audio_kv_ll(txt, "port", -1), audio_kv_ll(txt, "vol", -1)); - int rc = send_json(sock, 200, s.b ? s.b : ""); + /* 电平监控(261):rms/peak deci-dB(-990=-inf),lvlseq=快照代际;透传时别漏(ABI 追加键)。 */ + sA(s, ",\"rms\":%lld,\"peak\":%lld,\"lvlseq\":%lld}", + audio_kv_ll(txt, "rms", -990), audio_kv_ll(txt, "peak", -990), audio_kv_ll(txt, "lvlseq", 0)); +} + +static int api_audio(int sock) +{ + sbuf_t s = {0}; + audio_fill(&s); + int rc = send_json(sock, 200, s.b ? s.b : "{\"available\":false}"); sbuf_free(&s); return rc; } +/* ---------------- 功耗管理:meow_powermgr IPC(MSG_PM_QUERY→MSG_PM_RESULT) ---------------- + * 客户端序列同 perf/power:connect → MSG_HELLO → 读 ACK → MSG_PM_QUERY(subset) → MSG_PM_RESULT(JSON)。 + * powermgr 不在/超时/应答异常 → 负错误码(调用方转 503 POWER_UNAVAILABLE;overview 里转 available:false)。 */ +static int ipc_pm_query(uint32_t subset, char *out, int cap) +{ + int fd = ipc_connect_tmo(g_sock_pm, IPC_TIMEOUT_MS); + if (fd < 0) return MEOW_ERR_NODEV; + int rc = MEOW_ERR_INTERNAL; + if (ipc_hello(fd) < 0) { rc = MEOW_ERR_INTERNAL; goto done; } + m_pm_query_t q; + memset(&q, 0, sizeof q); + q.subset = subset; + if (send_frame(fd, MSG_PM_QUERY, 0x31, &q, sizeof q) < 0) { rc = MEOW_ERR_IO; goto done; } + uint8_t buf[MEOW_IPC_MAX]; + uint16_t type; uint32_t rid; + int n = recv_frame(fd, &type, &rid, buf, sizeof buf); + if (n < 12) { rc = MEOW_ERR_IO; goto done; } /* code(4)+subset(4)+json_len(2)+pad(2) */ + if (type != MSG_PM_RESULT) { rc = MEOW_ERR_INVAL; goto done; } + uint32_t c; memcpy(&c, buf, 4); + if (c != MEOW_OK) { rc = (int)c; goto done; } + /* powermgr 发**紧凑**负载:json 从偏移 12 起(json_len 在偏移 8);同 m_pm_result_t 布局,兼容全量/紧凑。 */ + uint16_t jl; memcpy(&jl, buf + 8, 2); + if (jl > MEOW_IPC_MAX - 12) jl = (uint16_t)(MEOW_IPC_MAX - 12); + if ((size_t)jl >= (size_t)cap) jl = (uint16_t)(cap - 1); + memcpy(out, buf + 12, jl); + out[jl] = 0; + rc = MEOW_OK; +done: + close(fd); + return rc; +} + +/* GET /api/power → powermgr 聚合 JSON(battery/estimate/breakdown,confidence 原样透传)。 */ +static int api_power(int sock) +{ + char js[MEOW_IPC_MAX]; + int rc = ipc_pm_query(0, js, sizeof js); + if (rc != MEOW_OK) + return send_err(sock, 503, "POWER_UNAVAILABLE", "电源管理服务不可用"); + return send_json(sock, 200, js); +} + +/* ---- am/meow_svcd 二进制解析(popen 薄壳,复用有界收割 run_cmd) ---- + * env MEOW_AMS_BIN / MEOW_SVCD_BIN 可覆盖(宿主/qemu 测试用;设备默认 /usr/bin,回退卡上路径)。 */ +static const char *ams_bin(void) +{ + const char *e = getenv("MEOW_AMS_BIN"); + if (e && e[0]) return e; + if (!access(AMS_BIN, X_OK)) return AMS_BIN; + return AMS_BIN_CARD; +} +static const char *svcd_bin(void) +{ + const char *e = getenv("MEOW_SVCD_BIN"); + if (e && e[0]) return e; + if (!access(SVCD_BIN, X_OK)) return SVCD_BIN; + return SVCD_BIN_CARD; +} + /* ---------------- 网络管理:meow_netmgrd IPC(MSG_NET_*,期2 观测层/DNS 代理) ---------------- * 收口于独立 socket /usr/data/meow_net.sock(--sock-net / env MEOW_NET_SOCK 覆盖,宿主测试用)。 * 读级(STATUS/CONNS/DNS status|stats)netmgrd 放行任意调用者;flush 写级——HTTP 层沿用面板 @@ -1216,6 +1296,199 @@ static int api_net_log(int sock) return rc; } +/* ---------------- amsd / svcd 服务表 + 首页聚合(批1 只读) ---------------- */ + +/* 就地去掉 ANSI 转义序列(\033[...final);svcd status all 走管道时 CLI 会去色,此处双保险)。 */ +static void panel_strip_ansi(char *s) +{ + char *r = s, *w = s; + while (*r) { + if (*r == '\033' && r[1] == '[') { + r += 2; + while (*r && !(*r >= '@' && *r <= '~')) r++; + if (*r) r++; + } else { *w++ = *r++; } + } + *w = 0; +} + +/* 切分成空白分隔 token(就地改 buf,返回个数;= cap) { out[cap - 1] = 0; return; } + if (o) out[o++] = ' '; + memcpy(out + o, toks[i], strlen(toks[i])); + o += strlen(toks[i]); + } + out[o] = 0; +} + +/* GET /api/ams:`am list`(注册表+状态)parse → App 表。amsd 不在 → available:false(绝无假数据)。 */ +static void ams_fill(sbuf_t *s) +{ + char out[16384]; + char cmd[300]; + snprintf(cmd, sizeof cmd, "%s list 2>/dev/null", ams_bin()); + int code = run_cmd(cmd, out, sizeof out); + if (code != 0 || !strstr(out, "APP")) { sA(s, "{\"available\":false}"); return; } + panel_strip_ansi(out); + char *toks[256]; + sbuf_t apps = {0}; + int first = 1, count = 0; + char *ln = out; + while (*ln) { + char *nl = strchr(ln, '\n'); + if (nl) *nl = 0; + if (strncmp(ln, "APP ", 4) == 0) { + int n = txt_tokens(ln, toks, 256); + if (n >= 9) { + /* 布局:APP + * tok[0]="APP" 前缀;自右向左固定:state=tok[n-6], pid=n-5, launches=n-4, crashes=n-3, + * last_kind=n-2, last_code=n-1;pkg=tok[1],name=join(tok[2..n-6))。 */ + char nm[128]; + join_tokens(toks, 2, n - 6, nm, sizeof nm); + if (!first) sA(&apps, ","); + first = 0; count++; + sA(&apps, "{\"pkg\":"); sA_str(&apps, toks[1]); + sA(&apps, ",\"name\":"); sA_str(&apps, nm); + sA(&apps, ",\"state\":"); sA_str(&apps, toks[n-6]); + sA(&apps, ",\"pid\":%d", atoi(toks[n-5])); + sA(&apps, ",\"launches\":%d", atoi(toks[n-4])); + sA(&apps, ",\"crashes\":%d", atoi(toks[n-3])); + sA(&apps, ",\"last_kind\":"); sA_str(&apps, toks[n-2]); + sA(&apps, ",\"last_code\":%d}", atoi(toks[n-1])); + } + } + if (nl) { *nl = '\n'; ln = nl + 1; } else break; + } + sA(s, "{\"available\":true,\"count\":%d,\"apps\":[%s]}", count, apps.b ? apps.b : ""); + sbuf_free(&apps); +} + +static int api_ams(int sock) +{ + sbuf_t s = {0}; + ams_fill(&s); + int rc = send_json(sock, 200, s.b ? s.b : "{\"available\":false}"); + sbuf_free(&s); + return rc; +} + +/* GET /api/svcd:`meow_svcd status all` parse → 服务表(state/pid/restart 计数/exec/来源)。 + * svcd 未运行(exit!=0)→ available:false(绝无假数据)。 */ +static void svcd_fill(sbuf_t *s) +{ + char out[16384]; + char cmd[300]; + snprintf(cmd, sizeof cmd, "%s status all 2>/dev/null", svcd_bin()); + int code = run_cmd(cmd, out, sizeof out); + if (code != 0) { sA(s, "{\"available\":false}"); return; } + panel_strip_ansi(out); + char *toks[256]; + sbuf_t svcs = {0}; + int first = 1, count = 0; + char *ln = out; + while (*ln) { + char *nl = strchr(ln, '\n'); + if (nl) *nl = 0; + int n = txt_tokens(ln, toks, 256); + /* 数据行:NAME STATE PID RESTART BACKOFF TRIGGER SRC EXIT EXIT_TIME EXEC... + * state=tok[1] 须为合法状态;exec=join(tok[9..n))。 */ + if (n >= 10) { + const char *st = toks[1]; + int is_known = (!strcmp(st,"running") || !strcmp(st,"stopped") || + !strcmp(st,"stopping") || !strcmp(st,"disabled") || !strcmp(st,"failed")); + if (is_known) { + char exec[512]; + join_tokens(toks, 9, n, exec, sizeof exec); + int restarts = 0; + { const char *slash = strchr(toks[3], '/'); (void)slash; restarts = atoi(toks[3]); } + if (!first) sA(&svcs, ","); + first = 0; count++; + sA(&svcs, "{\"name\":"); sA_str(&svcs, toks[0]); + sA(&svcs, ",\"state\":"); sA_str(&svcs, toks[1]); + sA(&svcs, ",\"pid\":%d", atoi(toks[2])); + sA(&svcs, ",\"restart\":%d", restarts); + sA(&svcs, ",\"restart_str\":"); + sA_str(&svcs, toks[3]); + sA(&svcs, ",\"backoff_ms\":%d", atoi(toks[4])); + sA(&svcs, ",\"trigger\":"); + sA_str(&svcs, toks[5]); + sA(&svcs, ",\"src\":"); + sA_str(&svcs, toks[6]); + sA(&svcs, ",\"exit\":"); + sA_str(&svcs, toks[7]); + sA(&svcs, ",\"exit_time\":"); + sA_str(&svcs, toks[8]); + sA(&svcs, ",\"exec\":"); + sA_str(&svcs, exec); + sA(&svcs, "}"); + } + } + if (nl) { *nl = '\n'; ln = nl + 1; } else break; + } + sA(s, "{\"available\":true,\"count\":%d,\"services\":[%s]}", count, svcs.b ? svcs.b : ""); + sbuf_free(&svcs); +} + +static int api_svcd(int sock) +{ + sbuf_t s = {0}; + svcd_fill(&s); + int rc = send_json(sock, 200, s.b ? s.b : "{\"available\":false}"); + sbuf_free(&s); + return rc; +} + +/* GET /api/overview:首页生命线。**单线程后端只暴露聚合**(不放六个单测端点给首页轮询)。 + * 后端顺序 fan-out perf/power/audio/net/amsd/svcd 六源合成一份 JSON;任一源失败 → 该子块 `available:false`, + * 绝不假数据(对齐 netmgrd 503 降级语义)。 */ +static int api_overview(int sock) +{ + sbuf_t s = {0}; + sA(&s, "{\"ts\":%lld,", (long long)time(NULL)); + char pb[4096]; + if (ipc_perf_query(0, pb, sizeof pb) == MEOW_OK) sA(&s, "\"perf\":%s,", pb); + else sA(&s, "\"perf\":{\"available\":false},"); + char pw[MEOW_IPC_MAX]; + if (ipc_pm_query(0, pw, sizeof pw) == MEOW_OK) sA(&s, "\"power\":%s,", pw); + else sA(&s, "\"power\":{\"available\":false},"); + sA(&s, "\"audio\":"); + audio_fill(&s); + uint16_t nt; uint32_t ncode; char njson[MEOW_IPC_MAX]; + int nn = net_ipc(MSG_NET_STATUS_REQ, NULL, 0, &nt, &ncode, NULL, njson, sizeof njson); + if (nn > 0 && nt == MSG_NET_STATUS_RESULT && ncode == MEOW_OK && njson[0]) + sA(&s, ",\"net\":%s", njson); + else + sA(&s, ",\"net\":{\"available\":false}"); + sA(&s, ",\"ams\":"); + ams_fill(&s); + sA(&s, ",\"svcd\":"); + svcd_fill(&s); + sA(&s, "}"); + int rc = send_json(sock, 200, s.b ? s.b : "{}"); + sbuf_free(&s); + return rc; +} + /* ---------------- 路径安全 ---------------- */ static int tf_present(void) { @@ -1828,26 +2101,27 @@ static int read_request(int sock, req_t *r) return 0; } -/* ================= 可选鉴权(panel.auth_enabled / panel.auth_pass) ================= - * 设计(MEOWPANEL_PROTOCOL §1.3 落地): - * - 键 `panel.auth_enabled`(默认 0=关)开关;`panel.auth_pass` 存「sha256 带盐哈希」格式 `salt:hex`, - * 绝不落明文,也绝不进日志/响应。 - * - 启用后,除 /api/auth/{login,logout,status} 外,所有 /api/ 端点需有效会话 - * (`Authorization: Bearer ` / `X-MeowToken: ` / `Cookie: meow_token=`)。 - * - 会话 token 由 /dev/urandom 生成(32B → 64 hex),存内存 + 卡上文件持久化(防重启失效),带过期。 - * - 未启用(默认)时鉴权门禁直接放行,行为与现状完全一致(零回归);危险端点不额外限制。 +/* ================= 访问级 PIN 鉴权(PANEL_ENHANCE_PLAN 用户定案 2026-09-01) ================= + * 模型(用户二次定案,覆盖 282「默认无鉴权」前提): + * - **访问面板即需登录**:未认证请求一律 401(静态登录页自身 + css/js 放行——serve_static 先于本门禁)。 + * - 4 位数字 PIN,设置键 `panel.pin`:sha256+salt 存 settings.conf(格式 `:`, + * auth_make_hash 生成)。与未来 MeowOS 锁屏 PIN 同源:设置键 `system.pin` 预留(本后端只读面板键,见 g_sets 注记)。 + * - token 随机 **128bit**(/dev/urandom 16B → 32 hex),**只存面板进程内存**(`g_sess[]`,重启自然失效,无卡上持久化)。 + * - 会话有效期 **3 天**(AUTH_TOKEN_TTL,**固定不滑动续期**)或设备重启(内存清、先到为准);多会话并存。 + * - **未设 PIN**:首次访问走 `POST /api/auth/setup` 引导设置;未设 PIN 前无法建立任何会话,故全部 + * `/api/` 路径被拦(读端点也按「访问级」全拦——定案即全拦,登录/设置流程除外),写端点自然一律拒绝。 + * - **错误锁定**:连续 PIN_MAX_FAILS=5 次错 PIN 锁 PIN_LOCK_SEC=300s(内存态,重启清)。 + * - **旧密码机制兼容迁移**(`panel.auth_enabled`/`panel.auth_pass`):旧密码存在且未设 PIN 时, + * 视为「已设访问屏障」的同等物——登录暂可用旧密码(body `password` 字段),status 透出 `legacy:true` + * 提示改设 4 位 PIN;一旦设置 `panel.pin`,**新代码以 PIN 为准**(登录只认 PIN,旧密码不再作为凭据)。 */ -#define AUTH_TOKEN_TTL (12 * 3600) /* 会话有效期:12 小时 */ -#define AUTH_MAX_SESS 8 /* 内存最多保存的并发会话数 */ -#define AUTH_HASH_LEN 64 /* sha256 hex 长度 */ - -static char g_auth_session_file[600]; -static const char *auth_session_file(void) -{ - if (!g_auth_session_file[0]) - snprintf(g_auth_session_file, sizeof g_auth_session_file, "%s/meowpanel.session", web_root()); - return g_auth_session_file; -} +#define AUTH_TOKEN_BYTES 16 /* 128bit → 32 hex */ +#define AUTH_TOKEN_TTL (3 * 86400) /* 3 天(固定,不滑动续期) */ +#define AUTH_MAX_SESS 8 /* 内存最多保存的并发会话数 */ +#define AUTH_HASH_LEN 64 /* sha256 hex 长度 */ +#define PIN_MAX_FAILS 5 /* 连续错 PIN 锁定阈值 */ +#define PIN_LOCK_SEC 300 /* 锁定 5 分钟 */ +static time_t g_auth_ttl = AUTH_TOKEN_TTL; /* 会话 TTL(env MEOW_AUTH_TTL 可覆盖,宿主测试用) */ /* ---- 最小 SHA-256(FIPS 180-4,公有领域参考写法;内联拷贝自 meow_verify/sha256.c,前缀 mp_ 避免符号冲突) ---- */ static const uint32_t mp_sha256_k[64] = { @@ -1973,10 +2247,10 @@ static void auth_hex(const unsigned char *raw, size_t n, char *out) out[n*2] = 0; } -static int auth_token_gen(char *out, int outcap) /* 32B → 64 hex */ +static int auth_token_gen(char *out, int outcap) /* 16B → 32 hex(128bit) */ { - unsigned char raw[32]; - if (outcap < 65) return -1; + unsigned char raw[AUTH_TOKEN_BYTES]; + if (outcap < AUTH_TOKEN_BYTES * 2 + 1) return -1; if (auth_read_random(raw, sizeof raw) < 0) return -1; auth_hex(raw, sizeof raw, out); return 0; @@ -2013,12 +2287,32 @@ static int auth_make_hash(const char *password, char *out, int outcap) /* salt: return 0; } -static int auth_enabled(void) +/* ---- PIN / 旧密码 凭据校验(都走「salt:hex」哈希校验,恒定比较) ---- */ + +/* 校验 `salt:hex` 哈希是否匹配明文(恒定比较,不反解)。stored 为 `salt:hex` 完整串。 */ +static int hash_matches(const char *stored, const char *password) { - return settings_get_int("panel.auth_enabled", 0) != 0; + if (!stored || !stored[0] || !password) return 0; + char tmp[160]; + snprintf(tmp, sizeof tmp, "%s", stored); + char *colon = strchr(tmp, ':'); + if (!colon) return 0; + *colon = 0; + char want[AUTH_HASH_LEN + 1]; + if (auth_pass_hash(tmp, password, want, sizeof want) != 0) return 0; + if (strlen(colon + 1) != AUTH_HASH_LEN) return 0; + return memcmp(want, colon + 1, AUTH_HASH_LEN) == 0; } -static int auth_pass_set(void) +static int pin_set(void) /* panel.pin 是否已设(访问屏障开启) */ +{ + char *v = settings_get_value("panel.pin"); + int s = (v && v[0]) ? 1 : 0; + free(v); + return s; +} + +static int auth_pass_set(void) /* 旧密码是否已设(兼容迁移用) */ { char *v = settings_get_value("panel.auth_pass"); int s = (v && v[0]) ? 1 : 0; @@ -2026,25 +2320,57 @@ static int auth_pass_set(void) return s; } -static int auth_verify(const char *password) +static int auth_verify(const char *password) /* 旧密码校验(迁移期;见 login) */ { char *stored = settings_get_value("panel.auth_pass"); - int ok = 0; - if (stored && stored[0]) { - char *colon = strchr(stored, ':'); - if (colon) { - *colon = 0; - char want[AUTH_HASH_LEN + 1]; - if (auth_pass_hash(stored, password, want, sizeof want) == 0 && strlen(colon + 1) == AUTH_HASH_LEN - && strcmp(want, colon + 1) == 0) - ok = 1; - } - } + int ok = hash_matches(stored, password); free(stored); return ok; } -/* ---- 会话(内存 + 卡上持久化) ---- */ +static int pin_verify(const char *pin) /* PIN 校验 */ +{ + char *stored = settings_get_value("panel.pin"); + int ok = hash_matches(stored, pin); + free(stored); + return ok; +} + +/* PIN 合法:恰好 4 位数字(0-9)。 */ +static int pin_validate(const char *pin) +{ + if (!pin) return 0; + size_t l = strlen(pin); + if (l != 4) return 0; + for (size_t i = 0; i < l; i++) + if (pin[i] < '0' || pin[i] > '9') return 0; + return 1; +} + +/* ---- 错误锁定(内存态,重启清;4 位 PIN 防爆破必备) ---- */ +static int g_pin_fails = 0; +static time_t g_pin_locked_until = 0; + +static long long pin_lock_remaining(void) /* 剩余锁定秒;0=未锁 */ +{ + time_t now = time(NULL); + if (g_pin_locked_until <= now) return 0; + return (long long)(g_pin_locked_until - now); +} +static void pin_lock_reset(void) +{ + g_pin_fails = 0; + g_pin_locked_until = 0; +} +static void pin_record_fail(void) +{ + if (++g_pin_fails >= PIN_MAX_FAILS) { + g_pin_locked_until = time(NULL) + PIN_LOCK_SEC; + g_pin_fails = 0; + } +} + +/* ---- 会话(**纯内存**:重启自然失效,无卡上持久化) ---- */ typedef struct { char token[65]; time_t expires; } auth_sess_t; static auth_sess_t g_sess[AUTH_MAX_SESS]; static int g_sess_n = 0; @@ -2090,38 +2416,6 @@ static void sess_remove(const char *token) g_sess_n--; } -static void sess_save(void) -{ - FILE *f = fopen(auth_session_file(), "w"); - if (!f) return; - time_t now = time(NULL); - for (int i = 0; i < g_sess_n; i++) { - if (g_sess[i].expires > 0 && g_sess[i].expires <= now) continue; - fprintf(f, "%s %lld\n", g_sess[i].token, (long long)g_sess[i].expires); - } - fclose(f); -} - -static void sess_load(void) -{ - FILE *f = fopen(auth_session_file(), "r"); - if (!f) return; - char line[128]; - time_t now = time(NULL); - g_sess_n = 0; - while (g_sess_n < AUTH_MAX_SESS && fgets(line, sizeof line, f)) { - char tok[65]; - long long exp = 0; - if (sscanf(line, "%64s %lld", tok, &exp) >= 1) { - if (exp > 0 && exp <= (long long)now) continue; /* 已过期 */ - snprintf(g_sess[g_sess_n].token, sizeof g_sess[g_sess_n].token, "%s", tok); - g_sess[g_sess_n].expires = (time_t)exp; - g_sess_n++; - } - } - fclose(f); -} - static void auth_cp(char *dst, int dcap, const char *src) /* 有界拷贝(防 -Wformat-truncation) */ { size_t l = strlen(src); @@ -2155,48 +2449,84 @@ static int extract_token(const req_t *r, char *out, int outcap) return 0; } -/* ---- 鉴权门禁:启用后除 /api/auth 系列外全部 /api/ 端点需会话 ---- */ +/* ---- 鉴权门禁:**访问面板即需登录**——除 /api/auth 系列外,全部 /api/ 端点需有效会话。 + * 未设 PIN 时无法建立会话 → 读端点也一律 401(「全拦」定案),写端点自然一律拒绝;登录/设置流程除外。 ---- */ static int require_auth(int sock, const req_t *r) { - if (!auth_enabled()) return 1; /* 默认关:零回归 */ const char *p = r->path; - if (!strcmp(p, "/api/auth/login") || !strcmp(p, "/api/auth/logout") || !strcmp(p, "/api/auth/status")) return 1; + if (!strcmp(p, "/api/auth/login") || !strcmp(p, "/api/auth/logout") || + !strcmp(p, "/api/auth/status") || !strcmp(p, "/api/auth/setup")) return 1; char t[65]; if (extract_token(r, t, sizeof t) && t[0] && sess_valid(t)) return 1; return send_err(sock, 401, "UNAUTHORIZED", "未认证或会话已失效"); } +/* GET /api/auth/status(公开):访问屏障状态 + 当前会话 + 锁定信息。 */ static int api_auth_status(int sock, const req_t *r) { - int en = auth_enabled(); + int ps = pin_set(); + int lg = auth_pass_set(); int sess = 0; - if (en) { - char t[65]; - if (extract_token(r, t, sizeof t) && t[0]) sess = sess_valid(t); - } + char t[65]; + if (extract_token(r, t, sizeof t) && t[0]) sess = sess_valid(t); + long long rem = pin_lock_remaining(); sbuf_t s = {0}; - sA(&s, "{\"auth_enabled\":%s,\"session\":%s}", en ? "true" : "false", sess ? "true" : "false"); + sA(&s, "{\"auth_enabled\":true,\"session\":%s,\"pin_set\":%s,\"legacy\":%s,\"locked\":%s", + sess ? "true" : "false", ps ? "true" : "false", lg ? "true" : "false", rem > 0 ? "true" : "false"); + if (rem > 0) sA(&s, ",\"lock_remaining_ms\":%lld", rem * 1000LL); + sA(&s, "}"); int rc = send_json(sock, 200, s.b ? s.b : "{}"); sbuf_free(&s); return rc; } +/* 登录统一入口:PIN(panel.pin 已设,权威)或旧密码(仅未设 PIN 时;迁移期)。 + * 连续 PIN_MAX_FAILS 次错 → 锁 PIN_LOCK_SEC(429 LOCKED)。 */ static int api_auth_login(int sock, const req_t *r) { - if (!auth_enabled()) return send_err(sock, 400, "BAD_REQUEST", "面板鉴权未启用"); - if (!r->body || !r->body[0]) return send_err(sock, 400, "BAD_REQUEST", "缺少密码"); + if (!r->body || !r->body[0]) return send_err(sock, 400, "BAD_REQUEST", "缺少 PIN"); jv_t *root = jv_parse(r->body, (int)r->body_len); if (!root) return send_err(sock, 400, "BAD_REQUEST", "body 非合法 JSON"); - jv_t *pw = jv_obj_get(root, "password"); - if (!pw || pw->type != J_STR) { jv_free(root); return send_err(sock, 400, "BAD_REQUEST", "缺少 password 字段"); } - int ok = auth_verify(pw->str); + jv_t *jpin = jv_obj_get(root, "pin"); + jv_t *jpw = jv_obj_get(root, "password"); + char pin[8], pw[256]; + if (jpin && jpin->type == J_STR && jpin->str) snprintf(pin, sizeof pin, "%s", jpin->str); else pin[0] = 0; + if (jpw && jpw->type == J_STR && jpw->str) snprintf(pw, sizeof pw, "%s", jpw->str); else pw[0] = 0; jv_free(root); - if (!ok) return send_err(sock, 401, "UNAUTHORIZED", "密码错误"); + + if (pin_lock_remaining() > 0) { /* 已在锁定期 */ + sbuf_t e = {0}; + sA(&e, "{\"ok\":false,\"error\":{\"code\":\"LOCKED\",\"message\":\"已锁定,请稍后重试\"},\"lock_remaining_ms\":%lld}", + pin_lock_remaining() * 1000LL); + int rc = send_json(sock, 429, e.b ? e.b : ""); + sbuf_free(&e); + return rc; + } + + int use_legacy = 0; + const char *cred = NULL; + if (pin_set()) { cred = pin; if (!cred || !cred[0]) return send_err(sock, 400, "BAD_REQUEST", "缺少 pin 字段"); } + else if (auth_pass_set()) { use_legacy = 1; cred = pw; if (!cred || !cred[0]) return send_err(sock, 400, "BAD_REQUEST", "缺少 password 字段"); } + else return send_err(sock, 400, "BAD_REQUEST", "请先设置面板 PIN(/api/auth/setup)"); + + int ok = use_legacy ? auth_verify(cred) : pin_verify(cred); + if (!ok) { + pin_record_fail(); + if (pin_lock_remaining() > 0) { /* 本错已触发锁定 */ + sbuf_t e = {0}; + sA(&e, "{\"ok\":false,\"error\":{\"code\":\"LOCKED\",\"message\":\"连续错误次数过多,已锁定 5 分钟\"},\"lock_remaining_ms\":%lld}", + pin_lock_remaining() * 1000LL); + int rc = send_json(sock, 429, e.b ? e.b : ""); + sbuf_free(&e); + return rc; + } + return send_err(sock, 401, "UNAUTHORIZED", "PIN 错误"); + } + pin_lock_reset(); char token[65]; if (auth_token_gen(token, sizeof token) < 0) return send_err(sock, 500, "INTERNAL", "生成会话失败"); - time_t exp = time(NULL) + AUTH_TOKEN_TTL; + time_t exp = time(NULL) + g_auth_ttl; /* 固定 3 天(MEOW_AUTH_TTL 可覆盖测试用),不滑动续期 */ sess_add(token, exp); - sess_save(); sbuf_t s = {0}; sA(&s, "{\"token\":"); sA_str(&s, token); @@ -2206,10 +2536,31 @@ static int api_auth_login(int sock, const req_t *r) return rc; } +/* POST /api/auth/setup(公开):首次设置 4 位 PIN(仅未设 PIN 时可用;设置后走 login)。 + * 未设 PIN 前写端点一律拒绝;本端点即「设置流程」例外,用于引导建立首个访问屏障。 */ +static int api_auth_setup(int sock, const req_t *r) +{ + if (pin_set()) return send_err(sock, 409, "CONFLICT", "面板 PIN 已设置,请直接登录"); + if (!r->body || !r->body[0]) return send_err(sock, 400, "BAD_REQUEST", "缺少 PIN"); + jv_t *root = jv_parse(r->body, (int)r->body_len); + if (!root) return send_err(sock, 400, "BAD_REQUEST", "body 非合法 JSON"); + jv_t *jpin = jv_obj_get(root, "pin"); + char pin[8]; + if (jpin && jpin->type == J_STR && jpin->str) snprintf(pin, sizeof pin, "%s", jpin->str); + else pin[0] = 0; + jv_free(root); + if (!pin_validate(pin)) return send_err(sock, 422, "UNSUPPORTED", "PIN 必须为 4 位数字"); + char h[200]; + if (auth_make_hash(pin, h, sizeof h) < 0) return send_err(sock, 500, "INTERNAL", "生成 PIN 哈希失败"); + if (settings_write_one("panel.pin", h) < 0) return send_err(sock, 500, "INTERNAL", "写设置失败"); + pin_lock_reset(); + return send_json(sock, 200, "{\"pin_set\":true}"); +} + static int api_auth_logout(int sock, const req_t *r) { char t[65]; - if (extract_token(r, t, sizeof t) && t[0]) { sess_remove(t); sess_save(); } + if (extract_token(r, t, sizeof t) && t[0]) sess_remove(t); return send_json(sock, 200, "{\"logged_out\":true}"); } @@ -2554,8 +2905,8 @@ static void settings_item_json(sbuf_t *s, const setdef_t *d, const char *val) } else if (d->type == ST_BOOL) { sA(s, "%s", str_truthy(val) ? "true" : "false"); } else { - if (!strcmp(d->key, "panel.auth_pass")) { - /* 密码哈希绝不出现在响应里:value 恒空串,附 set 标志(是否已设密码) */ + if (!strcmp(d->key, "panel.auth_pass") || !strcmp(d->key, "panel.pin")) { + /* 密码/PIN 哈希绝不出现在响应里:value 恒空串,附 set 标志(是否已设) */ sA(s, "\"\",\"set\":%s", val[0] ? "true" : "false"); } else { sA_str(s, val); @@ -2641,6 +2992,23 @@ static int api_settings_put(int sock, const char *key, const req_t *r) } jv_free(root); char hashbuf[200]; + /* panel.pin:4 位数字 PIN,只落带盐哈希;空串=清除(回未设状态);非法(非 4 位数字)→ 422 */ + if (!strcmp(key, "panel.pin")) { + if (raw[0]) { + if (!pin_validate(raw)) return send_err(sock, 422, "UNSUPPORTED", "PIN 必须为 4 位数字"); + if (auth_make_hash(raw, hashbuf, sizeof hashbuf) < 0) + return send_err(sock, 500, "INTERNAL", "生成 PIN 哈希失败"); + } else { + hashbuf[0] = 0; /* 清空 → 回未设状态 */ + } + if (settings_write_one(key, hashbuf) < 0) return send_err(sock, 500, "INTERNAL", "写设置失败"); + pin_lock_reset(); + sbuf_t s = {0}; + settings_item_json(&s, d, hashbuf); + int rc = send_json(sock, 200, s.b ? s.b : ""); + sbuf_free(&s); + return rc; + } /* panel.auth_pass:只落带盐哈希,绝不存明文;空串=清除密码 */ if (!strcmp(key, "panel.auth_pass")) { if (raw[0]) { @@ -2656,13 +3024,13 @@ static int api_settings_put(int sock, const char *key, const req_t *r) sbuf_free(&s); return rc; } - /* panel.auth_enabled:启用前必须先设密码 */ + /* panel.auth_enabled(旧机制,兼容迁移):置 1 前须已有访问屏障(PIN 或旧密码) */ if (!strcmp(key, "panel.auth_enabled")) { char coerced[256]; if (settings_coerce(d, raw, coerced, sizeof coerced) < 0) return send_err(sock, 422, "UNSUPPORTED", "值域/枚举非法"); - if (!strcmp(coerced, "1") && !auth_pass_set()) - return send_err(sock, 422, "UNSUPPORTED", "请先设置面板密码"); + if (!strcmp(coerced, "1") && !pin_set() && !auth_pass_set()) + return send_err(sock, 422, "UNSUPPORTED", "请先设置面板 PIN 或密码"); if (settings_write_one(key, coerced) < 0) return send_err(sock, 500, "INTERNAL", "写设置失败"); sbuf_t s = {0}; settings_item_json(&s, d, coerced); @@ -2706,6 +3074,17 @@ static int api_settings_batch(int sock, const req_t *r) case J_BOOL: snprintf(raw, sizeof raw, "%d", val->bval ? 1 : 0); break; default: if (nfail) sA(&fail, ","); sA(&fail, "{\"key\":"); sA_str(&fail, p->str); sA(&fail, ",\"code\":\"BAD_REQUEST\",\"message\":\"非法值类型\"}"); nfail++; continue; } + /* panel.pin:只落带盐哈希(空=清除);非法(非 4 位数字)→ 422 */ + if (!strcmp(p->str, "panel.pin")) { + char hashbuf[200]; + if (raw[0]) { + if (!pin_validate(raw)) { if (nfail) sA(&fail, ","); sA(&fail, "{\"key\":"); sA_str(&fail, p->str); sA(&fail, ",\"code\":\"UNSUPPORTED\",\"message\":\"PIN 必须为 4 位数字\"}"); nfail++; continue; } + if (auth_make_hash(raw, hashbuf, sizeof hashbuf) < 0) { if (nfail) sA(&fail, ","); sA(&fail, "{\"key\":"); sA_str(&fail, p->str); sA(&fail, ",\"code\":\"INTERNAL\",\"message\":\"生成 PIN 哈希失败\"}"); nfail++; continue; } + } else hashbuf[0] = 0; + if (settings_write_one(p->str, hashbuf) == 0) { if (nok) sA(&ok, ","); sA_str(&ok, p->str); nok++; } + else { if (nfail) sA(&fail, ","); sA(&fail, "{\"key\":"); sA_str(&fail, p->str); sA(&fail, ",\"code\":\"INTERNAL\",\"message\":\"写失败\"}"); nfail++; } + continue; + } /* panel.auth_pass:只落带盐哈希(空=清除);panel.auth_enabled:启用前须已有密码 */ if (!strcmp(p->str, "panel.auth_pass")) { char hashbuf[200]; @@ -2722,10 +3101,10 @@ static int api_settings_batch(int sock, const req_t *r) nfail++; continue; } - /* panel.auth_enabled:启用前必须先设密码 */ - if (!strcmp(p->str, "panel.auth_enabled") && !strcmp(coerced, "1") && !auth_pass_set()) { + /* panel.auth_enabled(迁移):启用前须已有访问屏障(PIN 或旧密码) */ + if (!strcmp(p->str, "panel.auth_enabled") && !strcmp(coerced, "1") && !pin_set() && !auth_pass_set()) { if (nfail) sA(&fail, ","); - sA(&fail, "{\"key\":"); sA_str(&fail, p->str); sA(&fail, ",\"code\":\"UNSUPPORTED\",\"message\":\"请先设置面板密码\"}"); + sA(&fail, "{\"key\":"); sA_str(&fail, p->str); sA(&fail, ",\"code\":\"UNSUPPORTED\",\"message\":\"请先设置面板 PIN 或密码\"}"); nfail++; continue; } @@ -4677,8 +5056,9 @@ static int handle(int sock, req_t *r) /* ---- 可选鉴权门禁(启用后除 /api/auth 系列外全 /api/ 端点需会话) ---- */ if (require_auth(sock, r) != 1) return 0; - /* ---- 鉴权端点 ---- */ + /* ---- 鉴权端点(登录/设置/登出/状态:公开——访问面板即需登录,须先经此建立会话) ---- */ if (!strcmp(r->method, "POST") && !strcmp(p, "/api/auth/login")) return api_auth_login(sock, r); + if (!strcmp(r->method, "POST") && !strcmp(p, "/api/auth/setup")) return api_auth_setup(sock, r); if (!strcmp(r->method, "POST") && !strcmp(p, "/api/auth/logout")) return api_auth_logout(sock, r); if (!strcmp(r->method, "GET") && !strcmp(p, "/api/auth/status")) return api_auth_status(sock, r); @@ -4693,9 +5073,15 @@ static int handle(int sock, req_t *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); - /* ---- 音频状态(meow_audiod 快照,只读) ---- */ + /* ---- 音频状态(meow_audiod 快照,只读;含 rms/peak/lvlseq 电平键) ---- */ if (!strcmp(r->method, "GET") && !strcmp(p, "/api/audio")) return api_audio(sock); + /* ---- 批1 只读增强:功耗/进程服务/首页聚合(均走 PIN 鉴权读级) ---- */ + if (!strcmp(r->method, "GET") && !strcmp(p, "/api/power")) return api_power(sock); + if (!strcmp(r->method, "GET") && !strcmp(p, "/api/ams")) return api_ams(sock); + if (!strcmp(r->method, "GET") && !strcmp(p, "/api/svcd")) return api_svcd(sock); + if (!strcmp(r->method, "GET") && !strcmp(p, "/api/overview")) return api_overview(sock); + /* ---- 网络管理(meow_netmgrd 期2 透传:读级任意调用者;flush 写级走 require_auth) ---- */ if (!strcmp(r->method, "GET") && !strcmp(p, "/api/net/status")) return api_net_status(sock); if (!strcmp(r->method, "GET") && !strcmp(p, "/api/net/conns")) return api_net_conns(sock, r->query); @@ -4833,10 +5219,11 @@ int main(int argc, char **argv) else if (!strcmp(argv[i], "--sock-launcher") && i + 1 < argc) g_sock_launcher = argv[++i]; else if (!strcmp(argv[i], "--sock-audio") && i + 1 < argc) g_sock_audio = argv[++i]; else if (!strcmp(argv[i], "--sock-net") && i + 1 < argc) g_sock_net = argv[++i]; + else if (!strcmp(argv[i], "--sock-pm") && i + 1 < argc) g_sock_pm = argv[++i]; else if (!strcmp(argv[i], "--sock") && i + 1 < argc) { g_sock_perf = argv[++i]; g_sock_power = g_sock_perf; } else if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "--help")) { printf("MeowPanel backend %s\n", PANEL_VERSION); - printf("usage: meowpanel [-p PORT] [--sock-perf P] [--sock-power P] [--sock-launcher P] [--sock-audio P] [--sock-net P]\n"); + printf("usage: meowpanel [-p PORT] [--sock-perf P] [--sock-power P] [--sock-launcher P] [--sock-audio P] [--sock-net P] [--sock-pm P]\n"); return 0; } } @@ -4851,6 +5238,10 @@ int main(int argc, char **argv) if (env && env[0]) g_sock_audio = env; /* 与 audiod CLI 同 env(宿主/qemu 测试用) */ env = getenv("MEOW_NET_SOCK"); if (env && env[0]) g_sock_net = env; /* 与 netmgrd/meow_net 同 env(宿主/qemu 测试用) */ + env = getenv("MEOW_PM_SOCK"); + if (env && env[0]) g_sock_pm = env; /* 与 powermgr/meow_power 同 env(宿主/qemu 测试用) */ + env = getenv("MEOW_AUTH_TTL"); + if (env && env[0]) g_auth_ttl = (time_t)atol(env); /* 会话 TTL 覆盖(宿主测试用) */ env = getenv("MEOW_SETTINGS_FILE"); if (env && env[0]) g_settings_file = env; /* 设置文件覆盖(宿主测试用;设备默认 /usr/data/meow/settings.conf) */ @@ -4867,7 +5258,6 @@ int main(int argc, char **argv) signal(SIGPIPE, SIG_IGN); web_root(); - sess_load(); /* 加载卡上持久化的会话(防重启失效) */ panel_log("MeowPanel %s listening on port %d (web root %s)", PANEL_VERSION, g_port, web_root()); int lfd = socket(AF_INET, SOCK_STREAM, 0); diff --git a/patch_v2/meowpanel/meowpanel_host b/patch_v2/meowpanel/meowpanel_host index 628146658fd5443f038e573d40f025e43f0506e2..5f940a3b4043eb900a89e386057d6daff5ec35c7 100755 GIT binary patch literal 148688 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

UO(`{y zUrEzbu!+@Y7-C|zr9w}s9`)$K=MB^QgS}%Iq{{gBAnj`ucVHLUW+FjuGCnk2kM(DF UNSAfU@N~VuUN?xBr|aGSALM0IZ2$lO diff --git a/patch_v2/meowpanel/web/index.html b/patch_v2/meowpanel/web/index.html index f16b695..fec98d3 100644 --- a/patch_v2/meowpanel/web/index.html +++ b/patch_v2/meowpanel/web/index.html @@ -116,12 +116,13 @@ - +