laoyang
|
286a01beb8
|
安装向导 install.php + data/ 防护文件入库
install.php(新增):
- 环境自检(PHP 版本 / PDO SQLite / mbstring / GD / 网络抓取 / fileinfo
/ data 与 uploads 可写性),缺 GD 只警告不阻断
- 输入校验:用户名格式、密码 ≥6 位、两次一致
- 建库 + 建管理员 + 写 data/install.lock
- 已存在管理员时拒绝安装(防删锁重装夺权);锁文件删掉也不认
- 装完展示数据库信息(类型/路径/大小/表内条目数)
data/ 防护文件入库(关键安全修复):
- 原 .gitignore 整目录排除 /data/,导致 data/.htaccess 永远进不了仓库,
部署后 data/ 没有禁止 Web 访问的规则 —— nav.db 可被公网直接下载,
里面是管理员密码哈希和全部站点数据
- 改为 /data/* + 白名单放行 .htaccess、index.html
|
2026-11-03 21:14:40 +08:00 |
|
laoyang
|
92eb9d90be
|
后台上传站点图标:首页品牌图 + favicon + PWA 图标一起换
需求:后台新增设置,允许管理员上传自己的图标;上传后首页品牌图标与浏览器
标签页 favicon(以及「添加到手机主屏」图标)一起换成它。
要点:
- 一张上传图服务端居中裁剪成正方形,生成 16/32/48/64/180/192/512 +
maskable 192/512 整套尺寸,并手工拼装多帧 favicon.ico。
- 单一来源 site_icon_url() 统一取址;site_icon_head() 被首页/登录页/后台
三处共用;PWA manifest 改由 manifest.php 动态输出、maskable 也跟随 ——
三处防线共同杜绝「首页换了、标签页还是旧的」这类半生效。
- 目录可写则落静态文件(最快);不可写的保守环境整套压进设置、由
site-icon.php 按需输出,功能不因权限限制整块不可用。
- 与「网站列表里每个网站自己的图标」是两个维度:目录与设置键都分开,
清理时互不误伤。
顺手修掉两个真问题:
- login.php / admin/_auth.php 各留了一行写死的 favicon,与新的
site_icon_head() 并存 → head 里两条 rel="icon",是「上传了却没换」的
温床。已删掉写死那两行。
- 自定义 favicon.ico 原先只塞 16+32 两帧,而内置是 16/32/48/64 四帧 ——
换图标反而退步。已补齐 icon-64 并统一为 4 帧。
- setting() 的请求内缓存导致「同请求写后再读」拿到旧值(真实坑):
settings_cache() 支持强制重载 + settings_reload(),写入后立即失效。
验证:单测 44/44(含只读目录动态回退)、HTTP 56/56、e2e 174/0、
反向验证 5 变体全部被抓住(含「写死残留」与「ico 只塞两帧」两个新哨兵)、
真机几何 360/390/768/1440 无溢出、线上直连桌面+移动端几何全绿、
线上诊断页走通「上传→前台全换→复原」。
|
2026-09-28 22:28:23 +08:00 |
|
laoyang
|
273074218c
|
chore: 清除仓库中的开发者个人信息
面向公开仓库做一次脱敏,去掉与开发者个人绑定的域名、内网入口与环境路径。
- db.php:默认数据里的个人地址全部换成通用示例(原先是开发者的私有基础设施:
带路径令牌的面板地址、若干内网服务入口,以及暴露学校身份的校内系统如教务 / BB / VPN / 财务)。
分组结构(2 个网格板块 + 3 个合集板块)与条目数量保持不变,新装仍是一份可用的示例导航。
- README.md:去掉「复刻某站风格」的表述与示例路径里的个人域名;部署步骤改为通用写法
(不再指向仓库外的私有脚本目录),并补上 Nginx 的 /data/ 拦截规则。
顺带修正一处与实际不符的描述:原文档称「页面缓存插件无需任何特殊配置」,实测该插件读不到
FastCGI 的 Cache-Control,实际是靠根 .htaccess 在请求侧注入 X_CACHE=1 才旁路掉的。
- .htaccess / config.php / functions.php / assets/css/style.css:注释里的个人域名改为通用表述。
- .gitignore:去掉开发者本机目录约定。
- LICENSE:版权署名由个人昵称改为 The SimpleNav Authors。
默认数据只在空库时写入,线上现有数据不受影响;本次无运行期行为变更。
验证:本地 php -l 全过;e2e 93/93;部署(双版本 php -l + 静态断言 + 文件哈希逐字节一致 +
HTTP 冒烟 + 缓存旁路自检 + Web 身份诊断)全绿,退出码 0。
|
2026-09-28 18:34:44 +08:00 |
|
laoyang
|
b4b81ec45e
|
chore: 把 deploy/ 与 data/ 移出版本库
- .gitignore 改为整目录忽略 /data/ 与 /deploy/(原先用 /data/* + 白名单,
反而把 data/.htaccess、data/index.html 放进仓库)
- git rm --cached 移除 data/.htaccess、data/index.html、
deploy/setup-simplenav-user.sh、deploy/nginx-simplenav-deny-data.conf
- 部署脚本移到 ~/code/_tooling/simplenav-deploy/,不再属于应用源码
- /data/ 的保护由站点根 .htaccess(RewriteRule ^data/ - [F,L])负责;
nav.db 从未被提交,无凭据泄露
|
2026-09-28 16:18:09 +08:00 |
|
laoyang
|
6e83cc3ecc
|
feat: 简航 SimpleNav 个人网站导航系统(PHP + SQLite)
- 前台:搜索引擎切换+联想下拉、网格板块(常用/工具)、合集标签页
- 后台:初始化/登录、网站/板块/引擎增删改、上下移排序
- 添加网站自动抓取名称与图标(存储于服务器),支持自定义简称
- 一键全部更新(批量刷新图标+名称,保留自定义简称)
- 搜索联想服务端代理(必应/百度/谷歌/搜狗/360/DuckDuckGo)
- 零依赖:原生 CSS/JS,PDO SQLite
|
2026-09-28 15:48:35 +08:00 |
|