版本号:
- 1.5.11 越界(规则 3 规定 patch ≤ 10)→ 修正为 1.6.0(进位到 minor、patch 归 0)
- versionCode 43 不变:43 从未对外发布,本次修正只是把命名拉回约定
合并支线(原在工作区根目录、App 仓库之外,DESIGN.md 自称"支线"):
- selfhost-source/server/ 自建歌曲源服务器(纯 Python 标准库、零 pip 依赖)
- selfhost-source/deploy/、DESIGN.md、LIBRARY.md、build_inventory.py
- selfhost-source/inventory/ 小清单(playlists.csv、song-stats.md 等)
- ⚠️ inventory 生成物(songs-*.csv / singers-top.csv,共 84MB)不入库,
已写入 .gitignore;需要时用 build_inventory.py 依据 muse.db 重新生成
同时入库的 App 侧支线改动(此前为工作树未提交状态):
- Whoami.kt(whoami 设备心跳)、DeviceIdentity.kt(设备身份伪装)
- PushDownload.kt / PushDownloadClient.kt(点歌推送)
- AdVideoFilter 带 query/fragment 的地址闸门;KTV_BRIDGE_API 11 → 13
- 修 ktv_api.js 的 global.KtvBridgeApiVersion(12 → 13,与注释及 Kotlin 两处校验一致)
- 对应单测:WhoamiTest / DeviceIdentityTest / PushDownloadTest / AdVideoFilterTest(共 39 例)
文档:
- DESIGN.md 的"在 App 仓库之外"约定改为"已并入仓库统一版本化"
- AGENTS.md 版本号行更新为 1.6.0/43,并新增支线并入说明
验证:assembleRelease + testReleaseUnitTest 全过(39 例)
70 lines
4.6 KiB
XML
70 lines
4.6 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!--
|
||
麦动KTV 自建歌曲源服务器 —— IIS applicationHost.config 片段(**服务器级**配置)
|
||
|
||
⚠️ 这是一个"片段",不是可以直接替换整份 applicationHost.config 的完整文件:
|
||
请把这几个节点**手工合并**进真正的
|
||
%windir%\System32\inetsrv\config\applicationHost.config
|
||
的 <configuration><system.webServer> 里面(已有同名节点就合并子元素,别写重复节点)。
|
||
|
||
⚠️ 需要**管理员权限**:applicationHost.config 默认只有 Administrators / SYSTEM 可写;
|
||
改之前先备份(复制成 applicationHost.config.bak),改错会导致整个 IIS 起不来。
|
||
也可以**完全不动这个文件**,改用 IIS 管理器 UI 完成同样的三件事(推荐新手):
|
||
* ARR 代理: ARR → Server Proxy Settings → 勾 Enable proxy → Apply
|
||
(= 下面 <proxy> 节点;Timeout/Response buffer 也在这一页)
|
||
* 放行服务器变量: URL Rewrite → View Server Variables → Add
|
||
(= 下面 <allowedServerVariables>;四个都要加)
|
||
* 上传缓冲: IIS 管理器 → 站点 → Configuration Editor → system.webServer/serverRuntime
|
||
→ uploadReadAheadSize(= 下面 <serverRuntime>,也可留默认)
|
||
|
||
三块配置各自解决的问题(**两个站点共用**:API 站 `api-site/web.config` +
|
||
媒体站 `media-site/web.config`):
|
||
① <proxy> —— 让 ARR 真的当反向代理(不开 = 站点 502);
|
||
preserveHostHeader 保留原始 Host,避免后端看到内网主机名;
|
||
proxyTimeout/connectTimeout/sendTimeout 给到 600 秒
|
||
(媒体是大文件,默认 120 秒不够);
|
||
② <allowedServerVariables> —— 放行两份 web.config 里 <serverVariables> 用的四个头,
|
||
**不放行则站点直接 500.19 打不开**;
|
||
③ <serverRuntime> —— 大请求体(CSV 导入)读入缓冲,避免代理层把上传截断。
|
||
-->
|
||
<configuration>
|
||
|
||
<system.webServer>
|
||
|
||
<!-- ① ARR:启用代理(不开这一项,web.config 里的 Rewrite 到绝对 URL 会 502.3)
|
||
enabled="true" = 启用反向代理(IIS 管理器里的 Enable proxy)
|
||
preserveHostHeader="true" = 把原始 Host(ktv.example.com)转给后端,
|
||
后端就不会看到内网主机名(HTTPS/域名场景必须)
|
||
reverseRewriteHostInResponseHeaders="false" = 不要改写响应里的 Location/Host,
|
||
避免把内网地址/端口暴露或改错
|
||
⚠️ 下面两行是**可选**的超时设置(默认 120 秒对媒体下载偏短;媒体是大文件、
|
||
慢客户端会拖很久,建议给到 10 分钟 = 600)。若你的 ARR 版本不接受这两个属性
|
||
(配置一保存就报错),请删掉它们,改用 IIS 管理器 → ARR Cache → Server Proxy
|
||
Settings → Time-out (seconds) = 600 来设置,效果一样。
|
||
-->
|
||
<proxy enabled="true" preserveHostHeader="true" reverseRewriteHostInResponseHeaders="false"
|
||
proxyTimeout="600" connectTimeout="600" sendTimeout="600" />
|
||
|
||
<!-- ② 放行服务器变量:web.config 里的 <serverVariables> 用到这四个头。
|
||
不放行 → 站点报 500.19("This configuration section cannot be used at this path")。
|
||
也可以不加这一段,改用 IIS 管理器 → URL Rewrite → View Server Variables → Add 逐个添加。
|
||
⚠️ 若你的 ARR 已经自动追加 X-Forwarded-For(部分版本会),仍建议保留本段:
|
||
后端的 trusted_proxies 白名单才是最终依据,重复设置不会有副作用。 -->
|
||
<rewrite>
|
||
<allowedServerVariables>
|
||
<add name="HTTP_X_FORWARDED_FOR" />
|
||
<add name="HTTP_X_FORWARDED_PROTO" />
|
||
<add name="HTTP_X_REAL_IP" />
|
||
<add name="HTTP_X_FORWARDED_HOST" />
|
||
</allowedServerVariables>
|
||
</rewrite>
|
||
|
||
<!-- ③ 请求体读入缓冲(单位字节,默认只有 48KB):
|
||
反代上传(CSV 导入等)超过缓冲时会出现 413/截断类报错,这里给到 32MiB,
|
||
与 web.config 的 maxAllowedContentLength 保持一致;后端 max_body_bytes 默认 8MiB。 -->
|
||
<serverRuntime uploadReadAheadSize="33554432" />
|
||
|
||
</system.webServer>
|
||
|
||
</configuration>
|