DanXi-Dev / DanXi

[Windows / Mac / Linux / Android / iOS] Maybe the best all-rounded service app for Fudan University students. 可能是复旦学生最好的第三方校园服务APP。
https://danxi.fduhole.com
GNU General Public License v3.0
228 stars 34 forks source link

[Feature Request] WebVPN 代理支持 #362

Open w568w opened 3 months ago

w568w commented 3 months ago

你想要什么样的功能? 由于假期学生离校,需要接入 webvpn 代理以入校访问。

如何实现? 这不难实现,只需将请求的目标 URL 改为对应的 webvpn 版本即可。可以参考:

https://github.com/DanXi-Dev/DanXi-swift/blob/e5a2b542dc7a02f744f97b90d732740194161c36/Fudan%20Kit/Classroom/ClassroomAPI.swift#L57-L60

ivanfei-1 commented 3 months ago

喜欢assign

ppolariss commented 3 months ago

图片上传下载也需加入webvpn功能

w568w commented 3 months ago

图片上传下载也需加入 webvpn 功能

自然是包括所有服务的。

Limour-dev commented 3 months ago

很久之前逆向的webvpn,不知道是否还有效:https://github.com/Limour-dev/daily_fudan_core/blob/main/FDU_WebVPN.py

w568w commented 3 months ago

从目前来看,webvpn 承载能力极其有限,开服时部分用户报告 webvpn 服务器直接无法访问。加入该功能后可能可用性不高。

@fsy2001 是否有必要急着加入 webvpn,还是继续使用 easyconnect?需要商榷。

ivanfei-1 commented 3 months ago

从目前来看,webvpn 承载能力极其有限,开服时部分用户报告 webvpn 服务器直接无法访问。加入该功能后可能可用性不高。

@fsy2001 是否有必要急着加入 webvpn,还是继续使用 easyconnect?需要商榷。

否定的,我在所有的环境下使用内置的webvpn服务从基本未出现不稳定的情况,swift目前的做法是自动切换并且给用户添加手动开关按钮,可以在webvpn宕机时退回ec

fsy2001 commented 3 months ago

从目前来看,webvpn 承载能力极其有限,开服时部分用户报告 webvpn 服务器直接无法访问。加入该功能后可能可用性不高。

@fsy2001 是否有必要急着加入 webvpn,还是继续使用 easyconnect?需要商榷。

我认为 webvpn 不足以承载树洞的并发用户量,从 iOS 端的使用体验看,确实有很多用户报告 webvpn 有时无法使用。建议待用户量稳定后做进一步的性能评估。

w568w commented 3 months ago

建议待用户量稳定后做进一步的性能评估。

那么暂且从 1.4.4 计划中移除。

ivanfei-1 commented 2 months ago

从目前来看,webvpn 承载能力极其有限,开服时部分用户报告 webvpn 服务器直接无法访问。加入该功能后可能可用性不高。 @fsy2001 是否有必要急着加入 webvpn,还是继续使用 easyconnect?需要商榷。

我认为 webvpn 不足以承载树洞的并发用户量,从 iOS 端的使用体验看,确实有很多用户报告 webvpn 有时无法使用。建议待用户量稳定后做进一步的性能评估。

最近几天我并没有见到有关webvpn出错的抱怨,“不足以承载并发数据量”缺乏有效的证据。

另一方面,假设有5%的用户(比如fsy2001自己)无法使用webvpn,我们不应为此牺牲另外95%的用户的方便性;另外,对于那5%,即使加了webvpn功能,他们也随时可以退回到ec

fsy2001 commented 2 months ago

我们已经确定之前的WebVPN无法使用是因为并发问题引起重复登录导致的,且Bug解决后WebVPN不再出现问题。我认为WebVPN可以继续开发。

需要强调的是,WebVPN似乎不支持PUT方法。

w568w commented 2 months ago

WebVPN似乎不支持PUT方法。

那 Swift 端现在如何利用 WebVPN 访问论坛?我印象里还是有一些 PUT 方法的。

fsy2001 commented 2 months ago

不作特别处理。PUT方法的使用频率不高,不涉及到浏览和发帖等关键步骤,只在一些低频场景使用,包括更新置顶贴、标记敏感贴、更新回复和修改密码等。

w568w commented 2 months ago

更新回复

这个还是比较重要的。

@JingYiJun 后端能否提供替代接口?例如 PUT /floor <=> POST /floor/put,后者直接调用前者的 handler。

JingYiJun commented 2 months ago

see OpenTreeHole/treehole_next#155

JingYiJun commented 2 months ago

后端已完成

fsy2001 commented 2 months ago

see OpenTreeHole/treehole_next#155

此条信息中的修改已过时,目前为所有PUT方法添加了PATCH方法的兼容API,URL path加上 _webvpn 后缀即可。

例如:PUT /api/floor 改为 PATCH /api/floor/_webvpn