Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
863d6ccc57 |
+29
-10
@@ -590,6 +590,24 @@ def _set_local_port(port):
|
||||
_settings_save(data)
|
||||
log(f"代理转发端口已保存: {port}(下次开启代理生效)")
|
||||
|
||||
def _ver_tuple(v):
|
||||
"""版本号转数字元组:'v0.1.0' -> (0, 1, 0),无法解析的段按 0 处理。"""
|
||||
parts = []
|
||||
for p in str(v).strip().lstrip("vV").split("."):
|
||||
try:
|
||||
parts.append(int(p))
|
||||
except ValueError:
|
||||
parts.append(0)
|
||||
return tuple(parts)
|
||||
|
||||
def _version_newer(latest, current):
|
||||
"""latest 是否比 current 新(逐段数字比较,位数不同补 0)。"""
|
||||
lt, ct = _ver_tuple(latest), _ver_tuple(current)
|
||||
n = max(len(lt), len(ct))
|
||||
lt += (0,) * (n - len(lt))
|
||||
ct += (0,) * (n - len(ct))
|
||||
return lt > ct
|
||||
|
||||
# 以下模块级取值需在 _data_path 定义之后执行
|
||||
VERSION = _config_val("version", "999908162319")
|
||||
_TLS_LOCAL_PORT = _port_val() # 本地转发器监听端口(设置 > 内置 config > 1080)
|
||||
@@ -2019,10 +2037,11 @@ class MainWindow(QWidget):
|
||||
if domain == "???":
|
||||
log("更新检查: 未配置节点(nodes.json 域名为空),跳过")
|
||||
return
|
||||
# 更新链接优先取 config.json 的 update_url,缺失时回退到域名拼接
|
||||
url = _config_val("update_url", "")
|
||||
# 基于 Gitea 仓库 releases API 检查更新;config.json 无 update_url 时用默认地址
|
||||
url = str(_config_val("update_url", "") or "").strip()
|
||||
if not url:
|
||||
url = f"https://{domain}/latest_version.json"
|
||||
url = ("https://git.bu4.ren/api/v1/repos/RoyirinRosmontis/"
|
||||
"Private-Proxy/releases/latest")
|
||||
log("正在检查更新...")
|
||||
# 显式走本地转发器隧道,不依赖系统代理状态:默认 opener 读注册表代理设置
|
||||
# (异常退出残留 127.0.0.1 代理 -> 连接被拒),不识别 PAC 的 AutoConfigURL,
|
||||
@@ -2037,12 +2056,12 @@ class MainWindow(QWidget):
|
||||
finally:
|
||||
_release_forwarder(started_here)
|
||||
info = json.loads(data)
|
||||
log("客户端认证成功")
|
||||
self._latest_version = info.get("latest_version", "")
|
||||
self._download_url = info.get("download_url", "")
|
||||
log(f"当前版本: {VERSION},最新版本: {self._latest_version}")
|
||||
if VERSION.startswith("9999"):
|
||||
log("您当前正在使用 Lite 版")
|
||||
# 基于 Gitea 仓库 releases API:版本取 tag_name,下载取 exe 附件链接
|
||||
self._latest_version = str(info.get("tag_name") or "")
|
||||
assets = info.get("assets") or []
|
||||
self._download_url = (assets[0].get("browser_download_url") or ""
|
||||
if assets else "")
|
||||
log(f"当前版本: {VERSION},最新版本: {self._latest_version or '未知'}")
|
||||
except Exception as e:
|
||||
log(f"更新检查失败: {e}")
|
||||
self._latest_version = ""
|
||||
@@ -2053,7 +2072,7 @@ class MainWindow(QWidget):
|
||||
def _on_update_done(self):
|
||||
"""更新检查完成后恢复按钮;发现新版本时弹窗询问是否下载。"""
|
||||
self.btn_toggle.setEnabled(True)
|
||||
if self._latest_version and self._latest_version > VERSION:
|
||||
if self._latest_version and _version_newer(self._latest_version, VERSION):
|
||||
reply = QMessageBox.question(
|
||||
self, "发现新版本",
|
||||
f"当前版本: {VERSION}\n最新版本: {self._latest_version}\n\n是否下载更新?",
|
||||
|
||||
Reference in New Issue
Block a user