我与 LoCyanFrp -(二)重构与升级
本文主要从我自己的视角谈一谈 LoCyanFrp 的重构和技术相关变化。
早期技术
SakuraPanel
最开始的时候,LoCyanFrp 使用的是 SakuraPanel
这一个没什么特别好提的,大多数内网穿透除去自研方案基本都是 SakuraPanel 起手
我对于 SakuraPanel 的些许看法
SakuraPanel 本身实现了一套齐全的公共 Frp 方案,但是在实际接触之后,我认为改进空间很大。
主要有以下这些我不是很满意的:
- 前后端不分离,代码混在一起
- 数据库表格混乱,包括数据列命名并不是很规范,以及数据类型混乱,隧道远程端口居然是 varchar 类型,有用户 ID,但是却用用户名查找用户等等…
- 二改并不好实现平滑的前端页面切换效果,不够现代化
- UI 风格略显老旧
- 代码并不是很好,许多回调地狱和 if 嵌套,可读性不佳
- 虽然 PHP 并不慢,但是我不喜欢这种前后端写在一起的,不好区分职能
前端升级
我们的前端先行一步进行了升级,不过这个阶段后端还是围绕 SakuraPanel 原本去实现的。
我们前端改用 Vue 3 + NaiveUI,初步实现前后端分离,这个阶段后端使用的是 ThinkPHP 框架。
整体布局是 @Daiyangcheng 写的,当时我还没有正式成为乐青团队的一员,不过给前端布局提供了一些设计思路。
PS: @Daiyangcheng 主要是写后端的,但是因为那会我们的前端都没有空,结果当时他从 0 开始手搓 Vue 3 写的,CSS 啥的都不会,有一些布局怪难看的,我就吐槽了一下,顺便给了点思路和样式。
如果你细心的话,你甚至可以发现我们前端里面有各种吐槽的注释(
那会其实还有和莱云合作,不过后面估计因为各种事情不了了之了,由于那会我还不是团队成员,具体的我也不清楚。
一点个人吐槽:你这前端保熟吗??!
新面板确实挺简洁现代化的,但是它的代码可不一定了——一个原本写后端的从 0 起手写的,要写好确实挺有难度(
由于我的强迫症,那会面板有好多细节让我觉得超级不满意,太难受了,干脆之间 fork 改。
不改还好吧,一改人差点傻了,第一次见三种变量命名法混一起的,还有各种奇葩嵌套,看完高血压那种(
没办法,看着真不爽,只能硬着头皮改了(反正我是为了自己看的爽一定要改,当时完全没想到别的用户体验xd)
一改就是整个面板重构,改完之后整个面板终于算是基本符合自己的感觉了
后端技术的演变
更换新框架…
改完新面板不久后,@Daiyangcheng 开始写新的后端了。
新后端和旧的不同,直接抛弃了一直在用的 PHP,改为 Spring 框架。
早期的 v2 API 其实代码也不怎么好,因为 @Daiyangcheng 那会根本不会 Java,也是从 0 起手的。
在这之后一段时间我一直都在修改前端,现在你看到的整个面板基本上都被我改过,毕竟重构了这也不算夸张的(不过是基于原来代码,直接写新的我这种特别 lazy 的人是绝对不会做的)
一个写前端的孩纸突然又开始捡起后端了,变成了赛博全栈!?
在改前端和写启动器的那段时间,我一直在吐槽 API 难用(
我一直在催 @Daiyangcheng 优化,但是他真的太忙了,基本上没改过啥。
但是你这接口我看了强迫症啊,刚好我涉猎过 Java 和 Kotlin,于是干脆自己动手改了。
这一改又是重构,原来的代码看的令人红温(
于是我又把每个接口的代码从参数传入到鉴权全部重写了一遍,改的那叫一个头大,顺便实现了几个一直没有的接口。
此外 API 文档和 Minecraft 联机功能也是我写的,约等于一个人把前后端全改完了,还写了份文档(byd 累死了
即将到来的下一版本 API
其实改完后我还是有很多不满意的的地方,不过后面那段时间看基本没啥问题,跑去打游戏了,一直懒得改。
后面我的 BF 去上学了,无聊也没啥可以玩的,又回来改代码了(悲
这次也有很多大改动,还算理想的实现了很多原来设想的东西,包括:
- 添加 Turnstile 人机验证
- 向外部应用提供 OAuth2.0 授权
- 修复了一些漏洞
- 将原有的 用户名 作为唯一标识改为 用户ID 作为唯一标识,API 全部改用 用户ID 进行操作
- 同时为面板实现了全部遗留 v1 接口,完全升级到 v2 API
- 一些技术上和代码逻辑的优化
还有一些提上日程但是还没来得及实现的,这些也会在后续实现:
- WebAuthn 无密码登录
- 违规使用审计与计费
- 节点详细统计数据界面
这期间也要感谢一些提供了建议的朋友,这里就不列举了。
关于未来…
其实 Frp 这种方案在将来将会被淘汰,因为那会估计大家都普及了 IPv6 公网了,现在我一个四五线城市的都已经有 IPv6 公网了,IPv6 互联是迟早的事情。
我们也推荐我们的用户通过 IPv6 公网的方案获得更好的连接质量。
我还没有设想更多未来的事情,现在只是想做好当下的事情,为用户提供更好的内网穿透解决方案,仅此而已。
我们本身也不赚钱,甚至每个月都要贴钱进去,但是初心是不会改变的,我们会一直坚持公益服务下去。
- 标题: 我与 LoCyanFrp -(二)重构与升级
- 作者: 夏沫花火zzz🌙 (Muska_Ami)
- 创建于 : 2024-12-04 05:16:48
- 更新于 : 2025-01-03 13:12:44
- 链接: https://blog.1l1.icu/2024/12/03/wo-yu-locyanfrp-er-chong-gou-yu-sheng-ji/
- 版权声明: 本文章采用 CC BY-SA 4.0 进行许可。