KS梅林380固件版本免费订阅源版本Clash开发过程总结

接着上一篇文章 KS梅林380固件版本的Clash免费插件已经可用了! , 经过几天的秀秀改改,基本已经做成了我要的功能了。

基础功能

  • [x] Clash服务启动开关
  • [x] 透明代理启用开关: 选择是否需要使用透明代理(感觉不到自己使用了代理,内网应用不做任何配置即可访问Google)
  • [x] 网络状态检查(似乎这个功能有点多余)
  • [x] 节点配置:支持节点订阅provider(url)。
  • [x] DNS设置:使用无污染的DNS解析国外域名。
  • [x] 支持代理组类型切换: select/url-test/fallback/load-balance四种类型。
  • [x] 集成了 yacd Web界面:

基本界面效果

基本界面样例
基本界面样例

yacd版本Web界面

clash_yacd_main.png
clash_yacd_main.png

clash_yacd_demo.png
clash_yacd_demo.png

开发过程说明

  1. 首先是要制作一个免费的Clash订阅源,节点100个左右,不多但可用,已经内置: free_proxy_ss
  2. 定制好Clash配置文件,支持两种订阅源方式:HTTP与file。
  3. 选择正确版本clash可执行程序,官方发布版本即可找到,比如premium版本的armv7l适合树莓派使用。到这里,我们后台就可以运行clash了。
  4. 开始制作KS梅林380版本的插件,参考了一些开发教程。研究了一下开发的基本流程,算是搞明白前端与后端的交互方式。
  5. 开发插件页面,UI界面设置,参考其他插件即可,适当时候还是自己定制了一个css文件。
  6. JS调用后端脚本的设计,都是使用几个脚本,不同任务使用不同的action判断。
  7. 增加了yq命令:为了能够支持Yaml文件的验证与修改。

问题总结

  1. 这款插件最多的有点就是使用了免费订阅源URL, 但很明显,这也是最致命的问题。一旦URL无法访问,Clash也就起不来了,(还是要提供代理节点切换功能)。
  2. UI实现过程不断调整变化、最初switch开关调整后需要点击一个按钮才会生效,后来按钮有些多余,开关就是这个作用呀,于是就将switch开关的变化就会立即生效。
  3. DNS解析方案: 经过几次调整,最后使用了iptables重定向53端口请求直接到Clash的DNS服务端口1053,不使用clashDNS服务的话,可以iptables + dnsmasq + dns2socks方式。

最担心的问题

  1. 订阅源URL地址无法访问了。

解决方法:

  1. 使用文件更新方式!。
  2. 添加个人的代理节点,让更新过程走代理解决。