mirror of
https://gitee.com/xmz7891/ykxmz.git
synced 2026-10-18 14:50:45 +00:00
下载区
- 管理页加一张「下载最新版」卡片,就一个按钮
自动指向 /v1/downloads 里最新的被控端整包,不用每次改页面
- GET /v1/downloads 列出成品
- GET /download/<文件> 直接给文件
只允许白名单后缀(.apk/.zip/.txt/.exe/.idsig)
文件名严格校验,挡目录穿越(../ 和 ..%2F 都试过)
- 卡片下面附一个 Gitee 历史版本入口
大文件
- 原来 read_bytes() 一次性读进内存再 write。
19MB 在 460MB 的设备上勉强,更要命的是 Cloudflare
有 100 秒的源站响应上限,数据越晚开始流动越容易被掐。
- 改成 64KB 分块流式发送,边读边发
实测:19MB 公网下载 40 秒完成,字节数完全一致
版本
- 三端分开打包(原来是一个合并 zip)
ykxmz-agent-1.5.0.zip 被控端
ykxmz-server-1.5.0.zip 服务器端
ykxmz-watch-1.5.0.apk 控制端(直接给 APK)
65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
r"""下载区加上 Gitee 仓库 / Release 的入口。
|
|
|
|
用户要求:"把下载链接 release 放到那个中转网站上"
|
|
|
|
中转站自己已经能直接给文件了(/download/<文件>),
|
|
但再挂一个 Gitee 的入口更完整:
|
|
* 想看源码 -> 点仓库
|
|
* 想看历史版本 / Release -> 点 release 页
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import ast
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
RELAY = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote\relay" r"\relay.py")
|
|
|
|
REPO = "https://gitee.com/xmz7891/ykxmz"
|
|
RELEASES = "https://gitee.com/xmz7891/ykxmz/releases"
|
|
|
|
OLD = ''' <div class=panel id=dlPanel>
|
|
<div class=label>下载 —— 最新版本</div>
|
|
<div id=dlBody class=tip>正在读…</div>
|
|
</div>'''
|
|
|
|
NEW = ''' <div class=panel id=dlPanel>
|
|
<div class=label>下载 —— 最新版本</div>
|
|
<div id=dlBody class=tip>正在读…</div>
|
|
<div class=tip style="margin-top:10px;padding-top:8px;border-top:1px solid #30363d">
|
|
源码仓库
|
|
<a href="''' + REPO + '''" target="_blank" rel="noopener"
|
|
style="color:#79c0ff">gitee.com/xmz7891/ykxmz</a>
|
|
·
|
|
<a href="''' + RELEASES + '''" target="_blank" rel="noopener"
|
|
style="color:#79c0ff">历史版本</a>
|
|
</div>
|
|
</div>'''
|
|
|
|
|
|
def main() -> int:
|
|
text = RELAY.read_text(encoding="utf-8")
|
|
if "gitee.com/xmz7891" in text:
|
|
print(" 已经加过")
|
|
return 0
|
|
if OLD not in text:
|
|
print(" [失败] 锚点没找到")
|
|
return 1
|
|
|
|
text = text.replace(OLD, NEW, 1)
|
|
RELAY.write_text(text, encoding="utf-8", newline="\n")
|
|
print(" 下载区加了 Gitee 仓库 + 历史版本入口")
|
|
|
|
try:
|
|
ast.parse(text)
|
|
print(" relay.py 语法 OK")
|
|
except SyntaxError as exc:
|
|
print(f" 语法错误: 行 {exc.lineno}: {exc.msg}")
|
|
return 1
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|