246 Commits

Author SHA1 Message Date
juewuy
56f588be92 v1.0.0beta16.1
~适配支持wget
~增加脚本日志以及查看日志功能
~新增自定义http/sock5代理认证功能
~新增支持安装内置yacd面板
~增加自定义DNS配置功能
~Redir模式增加基于tproxy的udp代理
~增加Gnome以及KDE桌面的自动设置本机代理功能

~同步GeoIP数据库及Dashboard面板文件
~回退premium测试版核心,修复bug

~优化了本机代理实现方式,增加了选项菜单
~优化了定时任务实现方式,适配更多设备
~优化了配置文件修饰方式
~优化安装脚本

~修复部分情况下开机自启显示错误的bug
~修复部分设备无法正常显示局域网连接ip/mac的bug
~修复iptables报错的bug
~修复各种更新检测失败的bug
~修复关闭时报错的bug
~修复安装时同时下载多次的bug
~修复新手引导报错的bug
2020-11-01 11:38:26 +08:00
juewuy
3f8b3944bb 由于新版本核心导致崩溃的严重bug,回退版本到20201026 2020-11-01 09:13:04 +08:00
juewuy
797eb85e47 v1.0.0beta16
~更新Geoip数据库
2020-10-31 12:58:09 +08:00
juewuy
d39e52216b v1.0.0beta16
~更新Geoip数据库
2020-10-31 12:57:42 +08:00
juewuy
5d5ba2a2e1 Merge branch 'master' of https://github.com/juewuy/clash-for-Miwifi into master 2020-10-30 16:21:25 +08:00
juewuy
1afe716ce3 v1.0.0beta15.7
~同步premium最新测试版核心,修复tun模式下回环bug
~优化了本机代理实现方式,增加了选项菜单
~优化了定时任务实现方式,适配更多设备
~优化了配置文件修饰方式
~优化了启动和关闭进程时的检测,修复错误
~优化了非root用户体验
~优化脚本结构
2020-10-30 16:21:09 +08:00
juewuy
e909bec1bb Update README.md 2020-10-30 16:18:48 +08:00
juewuy
c43a927280 v1.0.0beta15.7
~同步premium最新测试版核心,修复tun模式下回环bug
~优化了本机代理实现方式,增加了选项菜单
~优化了定时任务实现方式,适配更多设备
~优化了配置文件修饰方式
~优化了启动和关闭进程时的检测,修复错误
~优化了非root用户体验
~优化脚本结构
2020-10-28 13:56:51 +08:00
juewuy
a0b31a4905 v1.0.0beta15.7
~优化了本机代理实现方式,增加了选项菜单
~优化了定时任务实现方式,适配更多设备
~优化了配置文件修饰方式
~优化了启动和关闭进程时的检测,修复错误
~优化了非root用户体验
~优化脚本结构
2020-10-28 13:49:45 +08:00
juewuy
335c466520 v1.0.0beta15.7
~优化了本机代理实现方式,增加了选项菜单
~优化了定时任务实现方式,适配更多设备
~优化了配置文件修饰方式
~优化了启动和关闭进程时的检测,修复错误
~优化了非root用户体验
~优化脚本结构
2020-10-28 11:09:26 +08:00
juewuy
d9bff51afc v1.0.0beta15.7
~优化了定时任务实现方式,适配更多设备
~优化了配置文件修饰方式
~优化了启动和关闭进程时的检测,修复错误
~优化了非root用户体验
~优化脚本结构
2020-10-27 16:36:01 +08:00
juewuy
d4aba59988 v1.0.0beta15.7
~修改了定时任务实现方式,适配更多设备
~修改了配置文件修饰方式
~优化了非root用户体验
~优化脚本结构
2020-10-27 09:42:12 +08:00
juewuy
f41440a118 v1.0.0beta15.7
~修改了定时任务实现方式,适配更多设备
~修改了配置文件修饰方式
~优化了非root用户体验
~优化脚本结构
2020-10-27 09:40:58 +08:00
juewuy
af6922e2da v1.0.0beta15.6
~Redir模式增加基于tproxy的udp代理
~增加自动生成pac逻辑
~增加Gnome以及KDE桌面的自动设置本机代理功能
~修复各种更新检测失败的bug
~修复关闭时报错的bug
~修复安装时同时下载多次的bug
~修复新手引导报错的bug
2020-10-25 23:17:17 +08:00
juewuy
81d97502e1 v1.0.0beta15.6
~Redir模式增加基于tproxy的udp代理
~增加自动生成pac逻辑
~增加Gnome以及KDE桌面的自动设置本机代理功能
~修复各种更新检测失败的bug
~修复关闭时报错的bug
~修复安装时同时下载多次的bug
~修复新手引导报错的bug
2020-10-25 16:31:30 +08:00
juewuy
c98e69cce6 v1.0.0beta15.6
~Redir模式增加基于tproxy的udp代理
~增加自动生成pac逻辑
~增加Gnome以及KDE桌面的自动设置本机代理功能
~修复各种更新检测失败的bug
~修复关闭时报错的bug
~修复安装时同时下载多次的bug
~修复新手引导报错的bug
2020-10-25 16:31:08 +08:00
juewuy
81159b6176 v1.0.0beta15.6
~Redir模式增加基于tproxy的udp代理
~增加自动生成pac逻辑
~增加Gnome以及KDE桌面的自动设置本机代理功能
~修复各种更新检测失败的bug
~修复关闭时报错的bug
2020-10-25 16:11:45 +08:00
juewuy
d6e532c639 v1.0.0beta15.5
~Redir模式增加基于tproxy的udp代理
~增加自动生成pac逻辑
~增加Gnome以及KDE桌面的自动设置本机代理功能
~修复各种更新检测失败的bug
2020-10-25 15:42:44 +08:00
juewuy
78a3f1d68b v1.0.0beta15.5
~Redir模式增加基于tproxy的udp代理
~增加自动生成pac逻辑
~增加Gnome以及KDE桌面的自动设置本机代理功能
~修复各种更新检测失败的bug
2020-10-25 15:42:23 +08:00
juewuy
0d65f13af9 v1.0.0beta15.5
~Redir模式增加基于tproxy的udp代理
~修复各种更新检测失败的bug
~增加自动生成pac逻辑
2020-10-25 13:48:22 +08:00
juewuy
1b39b2ebd4 v1.0.0beta15.4
~Redir模式增加基于tproxy的udp代理
~修复更新检测失败的bug
2020-10-25 10:01:58 +08:00
juewuy
0f6fc088d8 v1.0.0beta15.3
~优化脚本语句和结构
~完美适配支持wget!!!
~优化非root用户体验
~增加Gitee下载源
~增加脚本日志以及查看日志功能
~修复部分情况下开机自启显示错误的bug
2020-10-24 21:27:13 +08:00
juewuy
de920ddd8a v1.0.0beta15.3
~优化脚本语句和结构
~完美适配支持wget!!!
~优化非root用户体验
~增加Gitee下载源
~增加脚本日志以及查看日志功能
~修复部分情况下开机自启显示错误的bug
2020-10-24 21:13:34 +08:00
juewuy
7091319fcb v1.0.0beta15.3
~优化脚本语句和结构
~完美适配支持wget!!!
~优化非root用户体验
~增加Gitee下载源
~增加脚本日志以及查看日志功能
~修复部分情况下开机自启显示错误的bug
2020-10-24 21:13:06 +08:00
juewuy
4743965c58 v1.0.0beta15.3
~优化脚本语句和结构
~完美适配支持wget!!!
~增加Gitee下载源
~增加脚本日志以及查看日志功能
~修复部分情况下开机自启显示错误的bug
2020-10-24 20:09:49 +08:00
juewuy
c642ca4b8c v1.0.0beta15.3
~优化脚本语句和结构
~增加wget下载方式,统一下载逻辑
~增加Gitee下载源
~增加脚本日志以及查看日志功能
~修复部分情况下开机自启显示错误的bug
2020-10-24 09:54:14 +08:00
juewuy
f72bc273c7 v1.0.0beta15.3
~优化脚本语句和结构
~增加wget下载方式
~修复部分情况下开机自启显示错误的bug
2020-10-23 19:08:35 +08:00
juewuy
a4b84dc55b v1.0.0beta15.2
~新增自定义http/sock5代理认证功能
~新增支持安装内置yacd面板
~增加自定义DNS配置功能
~优化安装脚本
~修复部分设备无法正常显示局域网连接ip/mac的bug
~修复iptables报错的bug
~同步最新版本Geoip数据库文件
2020-10-23 07:23:38 +08:00
juewuy
9e7799981b v1.0.0beta15.1
~新增自定义http/sock5代理认证功能
~新增支持安装内置yacd面板
~增加自定义DNS配置功能
~优化安装脚本
~修复部分设备无法正常显示局域网连接ip/mac的bug
~修复iptables报错的bug
~同步最新版本Geoip数据库文件
2020-10-22 20:53:22 +08:00
juewuy
e51069fc79 v1.0.0beta15.1
~新增自定义http/sock5代理认证功能
~新增支持安装内置yacd面板
~增加自定义DNS配置功能
~修复部分设备无法正常显示局域网连接ip/mac的bug
~同步最新版本Geoip数据库文件
2020-10-22 13:01:54 +08:00
juewuy
0106db9a92 v1.0.0beta15.1
~新增自定义http/sock5代理认证功能
~新增支持安装内置yacd面板
~增加自定义DNS配置功能
~修复部分设备无法正常显示局域网连接ip/mac的bug
~同步最新版本Geoip数据库文件
2020-10-22 13:01:32 +08:00
juewuy
eb094bd40e Merge branch 'master' of https://github.com/juewuy/clash-for-Miwifi into master
# Conflicts:
#	README.md
2020-10-22 00:01:12 +08:00
juewuy
d7d9c6efa7 v1.0.0beta15.1
~新增自定义http/sock5代理认证功能
~新增支持安装内置yacd面板
~增加自定义DNS配置功能
~修复fake-ip模式下偶尔会出现大量回环流量的bug
~修复部分设备无法正常显示局域网连接ip/mac的bug
~同步最新版本Geoip数据库文件
2020-10-21 23:57:10 +08:00
juewuy
31160a6ef2 v1.0.0beta15.1
~新增自定义http/sock5代理认证功能
~增加自定义DNS配置功能
~修复fake-ip模式下偶尔会出现大量回环流量的bug
~修复部分设备无法正常显示局域网连接ip/mac的bug
2020-10-21 10:54:47 +08:00
juewuy
cbf1a47979 v1.0.0beta15.1
~新增自定义http/sock5代理认证功能
~增加自定义DNS配置功能
~修复fake-ip模式下偶尔会出现大量回环流量的bug
2020-10-21 10:53:20 +08:00
juewuy
82c352973f v1.0.0beta15.1
~新增自定义http/sock5代理认证功能
~增加自定义DNS配置功能
~修复fake-ip模式下偶尔会出现大量回环流量的bug
2020-10-21 00:42:59 +08:00
juewuy
d69dce0fb4 v1.0.0beta15.1
~新增自定义http/sock5代理认证功能
~增加自定义DNS配置功能
~修复fake-ip模式下偶尔会出现大量回环流量的bug
2020-10-20 11:04:47 +08:00
juewuy
e60b0ad59b Update README.md 2020-10-15 16:40:32 +08:00
juewuy
60bb6da692 v1.0.0beta15
~新增对使用mips-softfloat核心设备的适配
~新增手动指定核心架构的菜单
~增加了按照关键字白名单筛选节点的功能
~新增了帮助:-h,测试:-t脚本运行参数
~优化节点保存方式,现在每10分钟检测一次,仅在检测到文件变动后方进行保存
~修复部分ssr节点不可用的bug
~mac过滤功能增加移除单个设备以及添加全部设备功能
~修复设置本机代理时直接跳出的bug
~优化安装脚本,增加root用户检测
~优化ipv6dns拦截方式
~回滚对循环计算的方式
2020-10-14 17:26:41 +08:00
juewuy
6d79038393 Update README.md 2020-10-14 17:25:56 +08:00
juewuy
4079d1525f v1.0.0beta15
~新增对使用mips-softfloat核心设备的适配
~新增手动指定核心架构的菜单
~增加了按照关键字白名单筛选节点的功能
~新增了帮助:-h,测试:-t脚本运行参数
~优化节点保存方式,现在每10分钟检测一次,仅在检测到文件变动后方进行保存
~修复部分ssr节点不可用的bug
~mac过滤功能增加移除单个设备以及添加全部设备功能
~修复设置本机代理时直接跳出的bug
~优化安装脚本,增加root用户检测
~优化ipv6dns拦截方式
~回滚对循环计算的方式
2020-10-14 17:22:13 +08:00
juewuy
0219fcd94e v1.0.0beta14fix5
~新增对使用mips-softfloat核心设备的适配
~优化节点保存方式,现在每10分钟检测一次,仅在检测到文件变动后方进行保存
~修复部分ssr节点不可用的bug
~mac过滤功能增加移除单个设备以及添加全部设备功能
~修复设置本机代理时直接跳出的bug
~优化安装脚本,增加root用户检测
~优化ipv6dns拦截方式
~回滚对循环计算的方式
2020-10-14 16:19:44 +08:00
juewuy
30b3a34d8e v1.0.0beta14fix4
~优化节点保存方式,现在每10分钟检测一次,仅在检测到文件变动后方进行保存
~修复部分ssr节点不可用的bug
~mac过滤功能增加移除单个设备以及添加全部设备功能
~修复设置本机代理时直接跳出的bug
~优化安装脚本,增加root用户检测
~优化ipv6dns拦截方式
~回滚对循环计算的方式
2020-10-14 09:39:42 +08:00
juewuy
8dc3c3fdc2 v1.0.0beta14fix5
~优化节点保存方式,现在每10分钟检测一次,仅在检测到文件变动后方进行保存
~修复部分ssr节点不可用的bug
~mac过滤功能增加移除单个设备以及添加全部设备功能
~修复设置本机代理时直接跳出的bug
~优化安装脚本,增加root用户检测
~优化ipv6dns拦截方式
~回滚对循环计算的方式
2020-10-14 09:12:23 +08:00
juewuy
68e7519fdf v1.0.0beta14fix4
~优化节点保存方式,现在每10分钟检测一次,仅在检测到文件变动后方进行保存
~修复部分ssr节点不可用的bug
~mac过滤功能增加移除单个设备以及添加全部设备功能
~修复设置本机代理时直接跳出的bug
~优化安装脚本,增加root用户检测
~优化ipv6dns拦截方式
~修复部分设备开机启动显示不正常的bug
~修复部分设备时间显示不正常的bug
2020-10-13 17:25:04 +08:00
juewuy
fd267e6316 v1.0.0beta14fix4
~优化节点保存方式,现在每10分钟检测一次,仅在检测到文件变动后方进行保存
~修复部分ssr节点不可用的bug
~mac过滤功能增加移除单个设备以及添加全部设备功能
~修复设置本机代理时直接跳出的bug
~优化安装脚本,增加root用户检测
~优化ipv6dns拦截方式
~修复部分设备开机启动显示不正常的bug
~修复部分设备时间显示不正常的bug
2020-10-13 17:24:29 +08:00
juewuy
c1ac05fd36 v1.0.0beta14fix4
~修复部分ssr节点不可用的bug
~mac过滤功能增加移除单个设备以及添加全部设备功能
~修复设置本机代理时直接跳出的bug
~优化安装脚本,增加root用户检测
~优化ipv6dns拦截方式
~修复部分设备开机启动显示不正常的bug
~修复部分设备时间显示不正常的bug
2020-10-13 17:06:21 +08:00
juewuy
fc5dc18348 v1.0.0beta14fix4
~修复部分ssr节点不可用的bug
~mac过滤功能增加移除单个设备以及添加全部设备功能
~修复设置本机代理时直接跳出的bug
~优化安装脚本,增加root用户检测
~优化ipv6dns拦截方式
~修复部分设备开机启动显示不正常的bug
~修复部分设备时间显示不正常的bug
2020-10-12 17:17:30 +08:00
juewuy
94c0ed99ef v1.0.0beta14fix4
~修复部分ssr节点不可用的bug
~mac过滤功能增加移除单个设备以及添加全部设备功能
~修复设置本机代理时直接跳出的bug
~优化安装脚本,增加root用户检测
~优化ipv6dns拦截方式
2020-10-12 16:48:30 +08:00
juewuy
5598809f57 Update README.md 2020-10-12 15:01:35 +08:00
juewuy
9ea1fb7df6 Rename install.sh to install_cdn.sh 2020-10-12 10:40:35 +08:00
juewuy
f607cfbc70 Update install.sh 2020-10-12 10:38:05 +08:00
juewuy
8484ffae3b v1.0.0beta14fix3
~修复部分ssr节点不可用的bug
~mac过滤功能增加移除单个设备以及添加全部设备功能
~修复设置本机代理时直接跳出的bug
~优化安装脚本,增加root用户检测
2020-10-11 21:33:40 +08:00
juewuy
87ae8b78be v1.0.0beta14fix3
~修复部分ssr节点不可用的bug
~mac过滤功能增加移除单个设备以及添加全部设备功能
~修复设置本机代理时直接跳出的bug
~优化安装脚本,增加root用户检测
2020-10-11 21:30:20 +08:00
juewuy
156d9193ee v1.0.0beta14fix2
~修复部分ssr节点不可用的bug
~mac过滤功能增加移除单个设备以及添加全部设备功能
2020-10-11 13:08:02 +08:00
juewuy
12f3babe47 v1.0.0beta14fix1
~修复部分ssr节点不可用的bug
2020-10-11 00:03:03 +08:00
juewuy
1f00c32e5a v1.0.0beta14
~新增保存面板配置功能(每小时/手动停止服务时自动保存)
~同步最新1.2.0版本clash核心以及pre版核心
~同步最新版GeoIP数据库
~修改导入配置文件时的规则,现在会自动尝试最多5次
~修复了使用systemd无法正常启动进程的bug
~修复了导入未经转换配置文件时报错的bug
~屏蔽了部分已经无法使用的sub后端服务器地址
~修改了本机代理实现方式,现在会随着clash服务停止而取消
2020-10-10 17:07:14 +08:00
juewuy
cd8a885618 v1.0.0beta14
~新增保存面板配置功能(每小时/手动停止服务时自动保存)
~同步最新1.2.0版本clash核心以及pre版核心
~同步最新版GeoIP数据库
~修改导入配置文件时的规则,现在会自动尝试最多5次
~修复了使用systemd无法正常启动进程的bug
~修复了导入未经转换配置文件时报错的bug
~屏蔽了部分已经无法使用的sub后端服务器地址
~修改了本机代理实现方式,现在会随着clash服务停止而取消
2020-10-10 17:02:53 +08:00
juewuy
a33da9f15f v1.0.0beta14
~同步最新1.2.0版本clash核心以及pre版核心
~同步最新版GeoIP数据库
~修复了使用systemd无法正常启动进程的bug
~修复了导入未经转换配置文件时报错的bug
~屏蔽了部分已经无法使用的sub后端服务器地址
~修改了本机代理实现方式,现在会随着clash服务停止而取消
2020-10-10 09:00:23 +08:00
juewuy
cb413622eb v1.0.0beta13fix3
~修复了使用systemd无法正常启动进程的bug
2020-10-09 19:21:28 +08:00
juewuy
420aeeba3d v1.0.0beta13fix2
~修复了导入未经转换配置文件时报错的bug
~屏蔽了部分已经无法使用的sub后端服务器地址
~修改了本机代理实现方式,现在会随着clash服务停止而取消
2020-10-07 16:31:39 +08:00
juewuy
8827f2d561 v1.0.0beta13fix1
~修复了导入未经转换配置文件时报错的bug
~屏蔽了部分已经无法使用的sub后端服务器地址
2020-10-07 11:21:05 +08:00
juewuy
23b8c2265e v1.0.0beta13
~支持Padavan系统(仅保守模式)
~进阶功能菜单增加修改默认端口功能
~优化版本检测机制以及显示效果
~优化定时任务功能,修复部分设备不可用的bug
~优化检测端口占用流程
~优化安装脚本安装流程,支持覆盖安装
~修复部分设备因开启ipv6导致的DNS污染(待测试)
~修复小米R2D等博通芯片设备使用ARMv7核心报错的bug
~修复部分旧设备无法正确显示运行时间的bug
~修复无法正常导入个人更新源的bug
2020-10-06 20:10:07 +08:00
juewuy
6dc8545ddd v1.0.0beta13
~支持Padavan系统(仅保守模式)
~进阶功能菜单增加修改默认端口功能
~优化版本检测机制以及显示效果
~优化定时任务功能,修复部分设备不可用的bug
~优化检测端口占用流程
~优化安装脚本安装流程,支持覆盖安装
~修复部分设备因开启ipv6导致的DNS污染(待测试)
~修复小米R2D等博通芯片设备使用ARMv7核心报错的bug
~修复部分旧设备无法正确显示运行时间的bug
~修复无法正常导入个人更新源的bug
2020-10-06 20:05:07 +08:00
juewuy
dea883c011 v1.0.0beta13
~支持Padavan系统(仅保守模式)
~进阶功能菜单增加修改默认端口功能
~优化版本检测机制以及显示效果
~优化定时任务功能,修复部分设备不可用的bug
~优化检测端口占用流程
~优化安装脚本安装流程,支持覆盖安装
~修复部分设备因开启ipv6导致的DNS污染(待测试)
~修复小米R2D等博通芯片设备使用ARMv7核心报错的bug
~修复部分旧设备无法正确显示运行时间的bug
~修复无法正常导入个人更新源的bug
2020-10-06 17:56:17 +08:00
juewuy
7baff049dc v1.0.0pre1
~增加fake-ip屏蔽域名列表,修复各种fakeip下服务出错
~增加fallbackDNS跳过GeoIPCN,优化响应速度
~使用upx3.9.3版本压缩mipsle核心文件,优化兼容性(待测试)
~调整导入订阅时的提示信息,尽可能减少歧义
~屏蔽导入节点功能,请自行转换配置文件!
~增加新版本clash核心对内置hosts的支持(待测试)
2020-10-03 17:05:11 +08:00
juewuy
78d8c31f57 v1.0.0pre1
~增加fake-ip屏蔽域名列表,修复各种fakeip下服务出错
~增加fallbackDNS跳过GeoIPCN,优化响应速度
~使用upx3.9.3版本压缩mipsle核心文件,优化兼容性(待测试)
~调整导入订阅时的提示信息,尽可能减少歧义
~屏蔽导入节点功能,请自行转换配置文件!
2020-10-03 15:51:14 +08:00
juewuy
c4b8836b6e v1.0.0pre1
~增加fake-ip屏蔽域名列表,修复各种fakeip下服务出错
~增加fallbackDNS跳过GeoIPCN,优化响应速度
~使用upx3.9.3版本压缩mipsle核心文件,优化兼容性(待测试)
~调整导入订阅时的提示信息,尽可能减少歧义
~屏蔽导入节点功能,请自行转换配置文件!
2020-10-02 11:56:42 +08:00
juewuy
da80a6bba8 v1.0.0pre1
~增加fake-ip屏蔽域名列表,修复各种fakeip下服务出错
~增加fallbackDNS跳过GeoIPCN,优化响应速度
~使用upx3.9.3压缩mipsle核心文件,优化兼容性
~调整导入节点时的提示信息,尽可能减少歧义
2020-10-02 11:29:09 +08:00
juewuy
f0d2b7e16c v1.0.0pre1
~增加fake-ip屏蔽域名列表,修复各种fakeip下服务出错
~增加fallbackDNS跳过GeoIPCN,优化响应速度
~不再使用upx压缩mipsle核心文件,优化兼容性
~调整导入节点时的提示信息,尽可能减少歧义
2020-10-02 09:43:46 +08:00
juewuy
3ad9294037 v1.0.0pre1
~增加fake-ip屏蔽域名列表,修复各种fakeip下服务出错
~增加fallbackDNS跳过GeoIPCN,优化响应速度
2020-10-02 09:19:38 +08:00
juewuy
eaac6ea43f v1.0.0beta11
~同步最新GeoIP数据库
~修复启动失败后依然提示服务启动的bug
~屏蔽经常出现的netstat命令提示
~优化节点链接导入功能
~修复部分设备开启ipv6后造成dns污染的问题
~修复cdn更新脚本或核心失败的bug
2020-10-02 09:17:04 +08:00
juewuy
100a32f2a3 Merge branch 'master' of https://github.com/juewuy/clash-for-Miwifi into master 2020-10-02 09:16:27 +08:00
juewuy
d5b1bfa0f5 v1.0.0beta11
~同步最新GeoIP数据库
~修复启动失败后依然提示服务启动的bug
~屏蔽经常出现的netstat命令提示
~优化节点链接导入功能
~修复部分设备开启ipv6后造成dns污染的问题
~修复cdn更新脚本或核心失败的bug
2020-10-02 09:16:12 +08:00
juewuy
0fec04488e Update README.md 2020-10-02 07:36:44 +08:00
juewuy
ac2386be93 v1.0.0beta11
~同步最新GeoIP数据库
~修复启动失败后依然提示服务启动的bug
~屏蔽经常出现的netstat命令提示
~优化节点链接导入功能
~修复部分设备开启ipv6后造成dns污染的问题
2020-10-01 19:17:54 +08:00
juewuy
f16ba5a49d v1.0.0beta11
~同步最新GeoIP数据库
~修复启动失败后依然提示服务启动的bug
~屏蔽经常出现的netstat命令提示
~优化节点链接导入功能
~修复部分设备开启ipv6后造成dns污染的问题
2020-10-01 19:14:29 +08:00
juewuy
b83104a888 v1.0.0beta10fix3
~修复启动失败后依然提示服务启动的bug
~屏蔽经常出现的netstat命令提示
~优化节点链接导入功能
~修复部分设备开启ipv6后造成dns污染的问题
2020-10-01 18:45:26 +08:00
juewuy
e9674a1ca6 v1.0.0beta10fix2
~增加大量订阅内置规则
~修复偶尔无法正常更新的bug
~修复导入订阅时无法正常启动的bug
~修复ac2100核心无法正常工作的bug
~修复切换更新源后无法正常更新的bug
2020-09-29 19:40:07 +08:00
juewuy
29f7ba1518 v1.0.0beta10fix2
~增加大量订阅内置规则
~修复偶尔无法正常更新的bug
~修复导入订阅时无法正常启动的bug
~修复ac2100核心无法正常工作的bug
~修复切换更新源后无法正常更新的bug
2020-09-29 19:31:12 +08:00
juewuy
baf0b1adc5 v1.0.0beta10fix2
~增加大量订阅内置规则
~修复偶尔无法正常更新的bug
~修复导入订阅时无法正常启动的bug
~修复ac2100核心无法正常工作的bug
2020-09-29 19:03:45 +08:00
juewuy
dbe7ca280a v1.0.0beta10fix1
~增加大量订阅内置规则
~修复偶尔无法正常更新的bug
~修复导入订阅时无法正常启动的bug
~修复ac2100核心无法正常工作的bug
2020-09-29 19:02:28 +08:00
juewuy
87e1d5773c v1.0.0beta10
~同步Premium核心版本至20200927
~增加对小米/红米AC2100系列设备的支持
~修复了默认配置设置显示与实际设置不符的bug
2020-09-28 22:05:18 +08:00
juewuy
e78b336edf v1.0.0beta10
~同步Premium核心版本至20200927
~增加对小米/红米AC2100系列设备的支持
~修复了默认配置设置显示与实际设置不符的bug
2020-09-28 21:11:00 +08:00
juewuy
aa2f16a7d9 v1.0.0beta10
~同步Premium核心版本至20200927
~增加对小米/红米AC2100系列设备的支持
~修复了默认配置设置显示与实际设置不符的bug
2020-09-28 21:10:37 +08:00
juewuy
7c18992e9b v1.0.0beta10
~同步Premium核心版本至20200927
~增加对小米/红米AC2100系列设备的支持
~修复了默认配置设置显示与实际设置不符的bug
2020-09-28 21:02:46 +08:00
juewuy
99af6fe1d9 v1.0.0beta10
~同步Premium核心版本至20200927
~增加对小米/红米AC2100系列设备的支持
~修复了默认配置设置显示与实际设置不符的bug
2020-09-28 20:56:00 +08:00
juewuy
38aeddd90d v1.0.0beta9fix2
~修复ipv6开启后dns被污染的问题
~修复导入订阅后不显示本机host地址的问题
~修复卸载时未清理本机代理的bug
2020-09-25 10:10:33 +08:00
juewuy
ddf17bf39a v1.0.0beta9fix1
~修复部分设备启动时报错的bug
~修改更新脚本,优化更新流程
~安装systemd启动脚本时增加reload
~进一步优化安装脚本
2020-09-21 23:53:27 +08:00
juewuy
85af5ed310 v1.0.0beta9
~修复部分设备启动时报错的bug
~修改更新脚本,优化更新流程
~安装systemd启动脚本时增加reload
~进一步优化安装脚本
2020-09-21 23:51:03 +08:00
juewuy
84cda4034a v1.0.0beta9
~优化本机代理功能
~修复GoogleHome无法使用的问题(待测试)
~调整启动脚本,适配Openwrt旧版本设备
~修复非Openwrt系统下定时任务不生效的bug
~修复保守模式守护进程不生效的bug
~修复手动更新订阅功能出错的bug
~优化更新订阅时的启动逻辑
~屏蔽ClashR核心下载,如有必要请在选择界面输入“3”以切换
2020-09-21 17:04:04 +08:00
juewuy
8bc51d57eb v1.0.0beta9
~优化本机代理功能
~修复GoogleHome无法使用的问题(待测试)
~调整启动脚本,适配Openwrt旧版本设备
~修复非Openwrt系统下定时任务不生效的bug
~修复保守模式守护进程不生效的bug
~修复手动更新订阅功能出错的bug
~优化更新订阅时的启动逻辑
~屏蔽ClashR核心下载,如有必要请在选择界面输入“3”以切换
2020-09-21 16:51:14 +08:00
juewuy
cafef2f413 v1.0.0beta9
~修复手动更新订阅功能出错的bug
~调整本机代理功能设置
~修复GoogleHome无法使用的问题
~调整启动脚本,适配旧版本设备
~修复非Openwrt系统下定时任务不生效的bug
~修复保守模式守护进程不生效的bug
~优化更新订阅时的启动逻辑
2020-09-21 16:21:26 +08:00
juewuy
93e74b5579 v1.0.0beta8fix2
~修复手动更新订阅功能出错的bug
~调整本机代理功能设置
~修复GoogleHome无法使用的问题
~调整启动脚本,适配部分采用openwrt12等旧版本的设备
2020-09-20 19:12:48 +08:00
juewuy
b74ae6b114 v1.0.0beta8fix2
~修复手动更新订阅功能出错的bug
~调整本机代理功能设置
~修复GoogleHome无法使用的问题
~调整启动脚本,适配部分采用openwrt12等旧版本的设备
2020-09-20 18:48:27 +08:00
juewuy
60a01d0358 v1.0.0beta8fix2
~修复手动更新订阅功能出错的bug
~调整本机代理功能设置
~修复GoogleHome无法使用的问题
~调整启动脚本,适配部分采用openwrt12等旧版本的设备
2020-09-20 18:47:13 +08:00
juewuy
1194671896 v1.0.0beta8fix2
~修复手动更新订阅功能出错的bug
~调整本机代理功能设置
~修复GoogleHome无法使用的问题
~调整启动脚本,适配部分采用openwrt12等旧版本的设备
2020-09-20 18:23:05 +08:00
juewuy
1ab371b08e v1.0.0beta8fix2
~修复手动更新订阅功能出错的bug
~调整本机代理功能设置
~修复GoogleHome无法使用的问题
~调整启动脚本,适配部分采用openwrt12等旧版本的设备
2020-09-20 17:57:21 +08:00
juewuy
af50730d3a v1.0.0beta8fix
~修复手动更新订阅功能出错的bug
~调整本机代理功能设置
~修复GoogleHome无法使用的问题
2020-09-20 14:37:35 +08:00
juewuy
0abe34884e 增加测试安装脚本 2020-09-20 12:25:19 +08:00
juewuy
4c2222a75e v1.0.0beta8
~修复手动更新订阅功能出错的bug
~调整本机代理功能设置
~修复GoogleHome无法使用的问题
2020-09-20 12:16:53 +08:00
juewuy
bc5ca550fb v1.0.0beta8
~修复手动更新订阅功能出错的bug
~调整本机代理功能设置
~修复GoogleHome无法使用的问题
2020-09-20 12:01:10 +08:00
juewuy
95bc9d6d55 v1.0.0beta8
~修复手动更新订阅功能出错的bug
~调整本机代理功能设置
~修复GoogleHome无法使用的问题
2020-09-20 11:59:01 +08:00
juewuy
1c76af82aa v1.0.0beta8
~修复手动更新订阅功能出错的bug
~调整本机代理功能设置
~修复GoogleHome无法使用的问题
2020-09-20 11:47:50 +08:00
juewuy
cf621a47ac v1.0.0beta7fix
~修复手动更新订阅功能出错的bug
~调整本机代理功能设置
2020-09-19 22:06:01 +08:00
juewuy
9dc284572b v1.0.0beta7
~全面兼容Debian/Armbian/Centos等标准Linux系统
~增加配置本机代理功能
~重写启动脚本,优化在不同系统下的启动方式
~支持以systemd方式启动及守护进程
~~大幅度优化优化安装脚本及更新机制,修复cdn更新延迟
~修改定时任务机制,增加稳定性
2020-09-19 17:06:01 +08:00
juewuy
de77a9b821 v1.0.0beta7
~全面兼容Debian/Armbian/Centos等标准Linux系统
~增加配置本机代理功能
~重写启动脚本,优化在不同系统下的启动方式
~支持以systemd方式启动及守护进程
~~大幅度优化优化安装脚本及更新机制,修复cdn更新延迟
~修改定时任务机制,增加稳定性
2020-09-19 16:54:05 +08:00
juewuy
78b8c0ac82 v1.0.0beta7
~全面兼容Debian/Armbian/Centos等标准Linux系统
~增加配置本机代理功能
~重写启动脚本,优化在不同系统下的启动方式
~支持以systemd方式启动及守护进程
~~大幅度优化优化安装脚本及更新机制,修复cdn更新延迟
~修改定时任务机制,增加稳定性
2020-09-19 16:51:34 +08:00
juewuy
a21c767300 v1.0.0beta7
~全面兼容Debian/Armbian/Centos等标准Linux系统
~增加配置本机代理功能
~重写启动脚本,优化在不同系统下的启动方式
~支持以systemd方式启动及守护进程
~~大幅度优化优化安装脚本及更新机制,修复cdn更新延迟
~修改定时任务机制,增加稳定性
2020-09-19 16:46:22 +08:00
juewuy
307e490dd4 v1.0.0beta7
~全面兼容Debian/Armbian/Centos等标准Linux系统
~增加配置本机代理功能
~重写启动脚本,优化在不同系统下的启动方式
~支持以systemd方式启动及守护进程
~~大幅度优化优化安装脚本及更新机制,修复cdn更新延迟
~修改定时任务机制,增加稳定性
2020-09-19 16:38:21 +08:00
juewuy
d9003e50eb v1.0.0beta7
~大幅度优化更新机制
~重写启动脚本,全面兼容debian及centos
~支持以systemd方式启动及守护进程
~优化安装脚本,修复cdn更新延迟
~修改定时任务机制,增加稳定性
~增加配置本机代理功能
2020-09-19 16:32:50 +08:00
juewuy
230fcb6649 调整安装脚本 2020-09-19 09:29:50 +08:00
juewuy
3247a85a69 调整安装脚本 2020-09-19 00:20:42 +08:00
juewuy
c702520e97 调整安装脚本 2020-09-19 00:17:34 +08:00
juewuy
6434abcfdd v1.0.0beta6
~优化定时任务脚本,修复bug
~优化版本更新机制
~重写启动脚本,全面兼容debian及centos
~支持linux的systemd方式启动
~优化cdn下载链接
2020-09-18 21:17:16 +08:00
juewuy
4014f2ddc8 v1.0.0beta6
~优化定时任务脚本,修复bug
~优化版本更新机制
~重写启动脚本,全面兼容debian及centos
~支持linux的systemd方式启动
~优化cdn下载链接
2020-09-18 21:16:28 +08:00
juewuy
51c877de88 v1.0.0beta6
~优化定时任务脚本,修复bug
~优化版本更新机制
~重写启动脚本,全面兼容debian及centos
~支持linux的systemd方式启动
~优化cdn下载链接
2020-09-18 21:10:41 +08:00
juewuy
e394982270 Merge branch 'master' of https://github.com/juewuy/clash-for-Miwifi 2020-09-18 21:09:13 +08:00
juewuy
d151100c25 v1.0.0beta6
~优化定时任务脚本,修复bug
~优化版本更新机制
~重写启动脚本,全面兼容debian及centos
~支持linux的systemd方式启动
~优化cdn下载链接
2020-09-18 21:09:06 +08:00
juewuy
248e85d7a5 增加 2020-09-18 21:07:13 +08:00
juewuy
33ef70e041 Update README.md
更新安装地址
2020-09-18 20:08:53 +08:00
juewuy
a2fced324e v1.0.0beta6
~优化定时任务脚本,修复bug
~优化版本更新机制
2020-09-17 14:50:29 +08:00
juewuy
56e89cf9b6 Update README.md
1
2020-09-15 20:53:43 +08:00
juewuy
1b0e620413 Update README.md 2020-09-13 21:02:04 +08:00
juewuy
c604739456 v1.0.0beta5
~更名为ShellClash,支持更多设备
~调整脚本更新链接
~修复debian等系统下的大量bug
~添加amd64支持
2020-09-13 20:13:53 +08:00
juewuy
2db14f7e2d 加入amd64支持 2020-09-13 20:12:00 +08:00
juewuy
7be54e1031 v1.0.0beta5
~更名为ShellClash,支持更多设备
~调整脚本更新链接
~修复debian等系统下使用dash运行时报错的bug
2020-09-13 19:33:39 +08:00
juewuy
5b90f49c4f v1.0.0beta4
~更名为ShellClash,支持更多设备
~调整脚本更新链接
2020-09-12 16:42:57 +08:00
juewuy
094489be69 1 2020-09-12 16:23:54 +08:00
juewuy
1409f6e584 Update README.md 2020-09-12 16:07:19 +08:00
juewuy
6652b918b9 Update README.md 2020-09-12 15:59:40 +08:00
juewuy
e64194bf4b Update README.md 2020-09-12 15:58:23 +08:00
juewuy
c111cdcfd3 Update README.md 2020-09-12 15:56:13 +08:00
juewuy
0777cdf2e7 Update README.md 2020-09-12 15:45:27 +08:00
juewuy
49803762b8 Update README.md 2020-09-12 15:44:37 +08:00
juewuy
d47273ca01 Update README.md 2020-09-12 15:43:47 +08:00
juewuy
bd7909d281 Update README.md 2020-09-12 15:37:28 +08:00
juewuy
63be19b81d v1.0.0beta3
~新增纯净模式
~新增用于纯净模式的PAC生成功能
~新增重置配置文件功能
~本地DNS服务默认设置调整为不启用
~同步GeoIP数据库文件
2020-09-08 18:35:49 +08:00
juewuy
564c831c37 v1.0.0beta3
~新增纯净模式
~新增用于纯净模式的PAC生成功能
~新增重置配置文件功能
~本地DNS服务默认设置调整为不启用
2020-09-08 18:12:18 +08:00
juewuy
6aa9077907 v1.0.0beta2
~修复未开启ipv6的设备启动时报错的bug
~测试菜单部分功能优化
~启动失败后的检查逻辑优化
2020-08-29 16:09:52 +08:00
juewuy
b17200ae05 v1.0.0beta1
~安装脚本细节调整
~修改iptables规则,解决部分dns污染问题
~优化了核心下载逻辑
~同步最新版Geoip数据库
2020-08-27 10:46:34 +08:00
juewuy
1f7ab1e88a v0.9.10
~新增了导入订阅时通过关键字过滤节点的功能
~优化了导入节点/订阅流程
~优化了跳过证书验证的方式
~调整了部分前后端规则地址
~同步最新Geoip数据库文件
~修复了保守模式下定时任务无法生效的bug
2020-08-24 20:14:31 +08:00
juewuy
0396957f42 v0.9.10
~新增了导入订阅时通过关键字过滤节点的功能
~优化了导入节点/订阅流程
~优化了跳过证书验证的方式
~调整了部分前后端规则地址
~修复了保守模式下定时任务无法生效的bug
2020-08-24 19:39:50 +08:00
juewuy
6fc597847f v0.9.9fix
~bug修复
2020-08-23 00:35:48 +08:00
juewuy
6c7a999fc8 v0.9.9
~新增保守方式启动,适配更多设备(小米3HD,以及其他linux系统)
~新增进阶功能菜单
~修复了geoip数据库偶尔丢失的bug(感谢Pan Peter同学提交bug!)
~增加了另一种本地面板的安装方式
~UI优化
~bug修复
2020-08-22 23:57:28 +08:00
juewuy
a30c958a6f v0.9.9
~新增保守方式启动,适配更多设备(小米3HD,以及其他linux系统)
~新增进阶功能菜单
~修复了geoip数据库偶尔丢失的bug(感谢Pan Peter同学提交bug!)
~增加了另一种本地面板的安装方式
~UI优化
~bug修复
2020-08-22 22:54:31 +08:00
juewuy
ed6ec52e34 v0.9.9
~新增保守方式启动,适配更多设备(小米3HD,以及其他linux系统)
~新增进阶功能菜单
~修复了geoip数据库偶尔丢失的bug(感谢Pan Peter同学提交bug!)
~增加了另一种本地面板的安装方式
~UI优化
2020-08-22 22:22:24 +08:00
juewuy
08243de4e4 v0.9.9
~新增保守方式启动,适配更多设备(小米3HD,以及其他linux系统)
~新增进阶功能菜单
~修复了geoip数据库偶尔丢失的bug(感谢Pan Peter同学提交bug!)
~增加了另一种本地面板的安装方式
~UI优化
2020-08-22 22:01:58 +08:00
juewuy
e8876a17de Merge branch 'master' of https://github.com/juewuy/clash-for-Miwifi 2020-08-22 20:08:36 +08:00
juewuy
7971101f16 v0.9.8
~新增保守方式启动,适配更多设备(小米3HD,以及其他linux系统)
~新增进阶功能菜单
~修复了geoip数据库偶尔丢失的bug(感谢Pan Peter同学提交bug!)
~UI优化
2020-08-22 20:08:23 +08:00
juewuy
d090e2d9a9 v0.9.8
~新增保守方式启动,适配更多设备(小米3HD,以及其他linux系统)
~新增进阶功能菜单
~修复了geoip数据库偶尔丢失的bug(感谢Pan Peter同学提交bug!)
2020-08-22 19:05:02 +08:00
juewuy
29c0516850 Update README.md 2020-08-22 18:58:53 +08:00
juewuy
c61f8fa504 v0.9.7
~优化了订阅链接导入提示
~增加了对不支持的加密方式检测
~增加了对不支持的配置文件检测
2020-08-19 15:38:45 +08:00
juewuy
ee4ec97d32 v0.9.7
~优化了订阅链接导入提示
~增加了对不支持的加密方式检测
~增加了对不支持的配置文件检测
2020-08-19 14:29:55 +08:00
juewuy
e456baaad8 v0.9.6
~新增了是否使用本地dnsmasq作为dns服务器的选项开关
~修复了部分情况下误报端口占用的bug
~找回了安装面板时检测并修复文件目录只读的代码
~优化了导入节点链接时的提示
2020-08-18 20:30:05 +08:00
juewuy
3a54ff8eb7 v0.9.5
~根据sayo-melu的pr,新增了下载dashboard面板后修改默认host端口为本机端口的功能
~增加了启动clash时对端口占用进行检测的功能
~同步官方v1.1.0正式版核心以及最新Premium核心
~同步更新最新的GeoIP数据库文件
2020-08-17 19:46:40 +08:00
juewuy
3903711218 Merge branch 'master' of https://github.com/juewuy/clash-for-Miwifi 2020-08-17 14:03:19 +08:00
juewuy
82c5c7d185 v0.9.5
~根据sayo-melu的pr,新增了下载dashboard面板后修改默认host端口为本机端口的功能
~增加了启动clash时对端口占用进行检测的功能
~同步官方v1.1.0正式版核心以及最新Premium核心
2020-08-17 14:03:06 +08:00
juewuy
2fc2c0f53e Update README.md 2020-08-17 14:00:37 +08:00
juewuy
c809eaa26c v0.9.5
~根据sayo-melu的pr,新增了下载dashboard面板后修改默认host端口为本机端口的功能
~增加了启动clash时对端口占用进行检测的功能
~同步官方v1.1.0正式版核心以及最新Premium核心
2020-08-17 13:55:09 +08:00
juewuy
763c1782ef Merge branch 'master' of https://github.com/juewuy/clash-for-Miwifi 2020-08-17 12:45:13 +08:00
juewuy
9da9606c57 v0.9.5
~根据sayo-melu的pr,新增了下载dashboard面板后修改默认host端口为本机端口的功能
~增加了启动clash时对端口占用进行检测的功能
~界面优化
2020-08-17 12:44:55 +08:00
juewuy
292cca30ee Update README.md 2020-08-15 14:41:23 +08:00
juewuy
8ef22a2c34 Update README.md 2020-08-15 14:38:36 +08:00
juewuy
8178a577df Merge branch 'master' of https://github.com/juewuy/clash-for-Miwifi 2020-08-15 14:30:53 +08:00
juewuy
9ca638e3a4 111 2020-08-15 14:30:35 +08:00
juewuy
b48f5c22bf Update README.md 2020-08-15 11:48:08 +08:00
juewuy
235886c79c v0.9.4
~调整安装初始化流程
~优化下载更新流程
~修复下载更新相关bug
2020-08-15 11:17:24 +08:00
juewuy
454f885f38 移除 2020-08-15 10:55:23 +08:00
juewuy
5cabf6559e v0.9.4
~调整安装初始化流程
~优化下载更新流程
~修复下载更新相关bug
2020-08-15 10:51:12 +08:00
juewuy
be13387179 v0.9.3
~修复文件格式bug
2020-08-14 23:04:34 +08:00
juewuy
2aaeb8c12f Merge branch 'master' of https://github.com/juewuy/clash-for-Miwifi 2020-08-14 22:26:38 +08:00
juewuy
c7e6f4a079 v0.9.2
~添加局域网设备过滤功能
~修复本地版本号不正常的bug
~修复规则偶尔显示为0的bug
2020-08-14 22:26:24 +08:00
juewuy
161e1c7602 Update README.md 2020-08-14 21:43:40 +08:00
juewuy
233dd75a67 Update README.md 2020-08-14 21:43:23 +08:00
juewuy
ab272e3a7c v0.9.2
~添加局域网设备过滤功能
~修复本地版本号不正常的bug
~修复规则偶尔显示为0的bug
2020-08-14 21:39:41 +08:00
juewuy
6d0162f65f v0.9.2
~添加局域网设备过滤功能
~修复本地版本号不正常的bug
~修复规则偶尔显示为0的bug
2020-08-14 21:38:51 +08:00
juewuy
a8f128106a v0.9.2
~添加局域网设备过滤功能
~修复本地版本号不正常的bug
~修复规则偶尔显示为0的bug
2020-08-14 21:36:44 +08:00
juewuy
85de9d0bbd v0.9.2
~添加局域网设备过滤功能
~修复本地版本号不正常的bug
2020-08-14 21:31:06 +08:00
juewuy
d2d19e01ae v0.9.2
~添加局域网设备过滤功能
2020-08-14 21:26:16 +08:00
juewuy
ad34cda6e9 v0.9.2
~添加局域网设备过滤功能
2020-08-14 20:55:15 +08:00
juewuy
691964fe3b v0.9.1
~新增更多设备支持,理论上支持小米全系路由器设备(待测试)
~增加了对设备核心架构的自动检测,适配armv5,armv7,armv8(aarch64),mipsle及x86平台
~增加了一部分acl规则模版
~修复了几处偶尔报错的小bug
2020-08-14 17:26:19 +08:00
juewuy
93f7ceb3c8 Update README.md 2020-08-14 16:46:45 +08:00
juewuy
e4aa9d702d v0.9.1
~新增更多设备支持,理论上支持小米全系路由器设备(待测试)
~增加了对设备核心架构的自动检测,适配armv5,armv7,armv8(aarch64),mipsle及x86平台
~增加了一部分acl规则模版
~修复了几处偶尔报错的小bug
2020-08-14 16:42:52 +08:00
juewuy
724968474f 增加其他核心版本支持 2020-08-14 15:26:30 +08:00
juewuy
b5561d5e20 修复安装时出现奇怪报错的bug 2020-08-14 15:22:24 +08:00
juewuy
f09a7a7599 v0.9.0
~新增定时任务功能(实验性,欢迎测试)
~修复测试命令时一个报错的小bug
~安装本地面板增加自动挂载/www目录
2020-08-14 15:00:47 +08:00
juewuy
2a60440585 修复bug 2020-08-14 14:56:38 +08:00
juewuy
11e0231506 Merge branch 'master' of https://github.com/juewuy/clash-for-Miwifi 2020-08-13 23:02:16 +08:00
juewuy
0f58916149 v0.9.0
~新增定时任务功能(实验性,欢迎测试)
~修复测试命令时一个报错的小bug
~安装本地面板增加自动挂载/www目录
2020-08-13 23:02:02 +08:00
juewuy
74ba7e2fb7 Update README.md 2020-08-13 22:47:47 +08:00
juewuy
2dee375ac0 Update README.md 2020-08-13 22:46:47 +08:00
juewuy
a0cd5c1b1f Update README.md 2020-08-13 22:46:26 +08:00
juewuy
2ed3c33b24 修改安装源 2020-08-13 22:43:17 +08:00
juewuy
2026fe5adc v0.9.0
~新增定时任务功能(实验性,欢迎测试)
~修复测试命令时一个报错的小bug
2020-08-13 22:38:51 +08:00
juewuy
0e442ce5ad 增加定时任务功能 2020-08-13 19:15:43 +08:00
juewuy
5564eec2a4 尝试修复CDN同步失败的bug 2020-08-13 19:13:08 +08:00
juewuy
b1cd0611c5 尝试修复CDN同步失败的bug 2020-08-11 20:34:06 +08:00
juewuy
bf42f321d3 Merge branch 'master' of https://github.com/juewuy/clash-for-Miwifi 2020-08-11 20:30:46 +08:00
juewuy
6909358d3a 尝试修复CDN同步失败的bug 2020-08-11 20:30:32 +08:00
juewuy
987e7fdf66 Update README.md
xf
2020-08-11 17:53:15 +08:00
juewuy
384e8957a1 v0.8.7
~修复了脚本更新路径不正确的bug
~调整了geoip数据库下载源地址
~增加了自定义源输入检测
2020-08-11 12:53:25 +08:00
juewuy
18143d2392 Update README.md 2020-08-11 10:59:29 +08:00
juewuy
e456862a4f Update README.md 2020-08-11 10:58:53 +08:00
juewuy
4b6f3c1417 Update README.md 2020-08-11 10:58:13 +08:00
juewuy
71f1fe12fa Update README.md 2020-08-11 10:57:29 +08:00
juewuy
ed95ecf786 Update README.md 2020-08-11 10:55:05 +08:00
juewuy
5684020deb Update README.md 2020-08-11 10:53:47 +08:00
juewuy
dc3bb04b9c v0.8.7
~修复了脚本更新路径不正确的bug
~调整了geoip数据库下载源地址
~增加了自定义源输入检测
2020-08-11 10:43:33 +08:00
juewuy
8cc5784a65 v0.8.7
~修复了脚本更新路径不正确的bug
~调整了geoip数据库下载源地址
~增加了自定义源输入检测
2020-08-11 10:33:31 +08:00
juewuy
3fdc5b451f v0.8.7
~修复了脚本更新路径不正确的bug
~调整了geoip数据库下载源地址
~增加了自定义源输入检测
2020-08-11 10:25:02 +08:00
juewuy
ebd1e10c03 v0.8.7
~修复了脚本更新路径不正确的bug
~调整了geoip数据库下载源地址
~增加了自定义源输入检测
2020-08-11 10:17:00 +08:00
juewuy
99f2644392 修复更新脚本时提示路径错误 2020-08-10 20:46:10 +08:00
juewuy
43804fa170 同步官方最新测试版本 2020-08-10 20:29:20 +08:00
juewuy
31865ff734 v0.8.6
~新增CDN下载源和Github下载源,下载更新速度更快
~新增了切换下载源的选项菜单
~界面UI优化及bug修复
2020-08-10 20:24:28 +08:00
juewuy
022cd07935 增加版本号控制 2020-08-10 18:14:24 +08:00
juewuy
45015d852f 增加版本号控制 2020-08-10 18:06:18 +08:00
juewuy
2d2c7ec2f4 Update README.md 2020-08-09 14:07:26 +08:00
juewuy
5fcc2d060a v0.8.5
~新增了Tun/Redir混合模式
~新增是否支持ipv6的开关
~新增了更新核心时的版本检测
~新增了本地面板重复安装提示
~修复了部分报错提示
~修复了部分设定未及时更新的bug
2020-08-09 14:03:57 +08:00
juewuy
1bb016c063 v0.8.5
~新增了Tun/Redir混合模式
~新增是否支持ipv6的开关
~新增了更新核心时的版本检测
~新增了本地面板重复安装提示
~修复了部分报错提示
~修复了部分设定未及时更新的bug
2020-08-09 13:51:37 +08:00
juewuy
8ce2598ff2 v0.8.4
~更新在线下载GeoIP数据库功能
~更新在线下载及部署Dashboard面板功能
~UI小幅度优化
2020-08-07 19:18:14 +08:00
juewuy
119f34894a v0.8.3
~紧急更新修复部分用户无法获取dns的bug
2020-08-07 17:03:11 +08:00
juewuy
3c221ca26d Merge branch 'master' of https://github.com/juewuy/clash-for-Miwifi 2020-08-07 16:35:53 +08:00
juewuy
054a7a359b v0.8.1
~修复bug
2020-08-07 16:35:26 +08:00
juewuy
3b2b6c2d5b Update clash.sh 2020-08-07 16:30:25 +08:00
juewuy
433951f987 v0.8.2
~修复无法正常开机启动的bug
2020-08-07 13:04:50 +08:00
juewuy
e81df087b1 v0.8.1
~修改了修饰config的方式,增强了兼容性
~调整http和sock5代理端口统一为7890
~增加了是否使用内置配置修饰config.yaml的开关
~界面UI优化
2020-08-07 12:25:20 +08:00
juewuy
f2e8bc4d89 v0.8.0更新
~大幅度优化脚本UI及层级
~增加在线更新脚本功能
~增加在线更新、替换clash核心功能
~内置dns增加redir-host支持,解决了部分应用无法连接的bug
~优化了配置文件修饰途径,现在支持通过scp上传任意yaml配置文件
~增加了直接导入完整订阅链接的选项(待测试)
~增加了更多的订阅后端服务器
2020-08-06 20:05:39 +08:00
juewuy
16cf5897c3 v0.8.0更新
~大幅度优化脚本UI及层级
~增加在线更新脚本功能
~增加在线更新、替换clash核心功能
~内置dns增加redir-host支持,解决了部分应用无法连接的bug
~优化了配置文件修饰途径,现在支持通过scp上传任意yaml配置文件
~增加了直接导入完整订阅链接的选项(待测试)
~增加了更多的订阅后端服务器
2020-08-06 20:02:52 +08:00
juewuy
bd455f222e v0.8.0更新
~大幅度优化脚本UI及层级
~增加在线更新脚本功能
~增加在线更新、替换clash核心功能
~内置dns增加redir-host支持,解决了部分应用无法连接的bug
~优化了配置文件修饰途径,现在支持通过scp上传任意yaml配置文件
~增加了直接导入完整订阅链接的选项(待测试)
~增加了更多的订阅后端服务器
2020-08-06 19:57:28 +08:00
juewuy
39246316ca v0.8.0更新
~大幅度优化脚本UI及层级
~增加在线更新脚本功能
~增加在线更新、替换clash核心功能
~内置dns增加redir-host支持,解决了部分应用无法连接的bug
~优化了配置文件修饰途径,现在支持通过scp上传任意yaml配置文件
~增加了直接导入完整订阅链接的选项(待测试)
~增加了更多的订阅后端服务器
2020-08-06 18:11:00 +08:00
juewuy
487ec9a27e 0.8大版本更新 2020-08-06 17:20:45 +08:00
juewuy
61ae2e3899 0.8大版本更新 2020-08-06 17:17:05 +08:00
juewuy
345ebee3d3 v0.7.1
新增了仅代理常用端口功能(用于屏蔽P2P流量)
新增了导入订阅节点链接时选择清空还是追加的选项
2020-08-04 12:37:38 +08:00
juewuy
7df4bed760 bug修复 2020-08-04 11:04:00 +08:00
juewuy
1471b7e021 Merge branch 'master' of https://github.com/juewuy/clash-for-Miwifi 2020-08-03 19:53:39 +08:00
juewuy
edf083c1ec ~新增一键安装脚本
~优化导入订阅流程
~增加跳过本地证书验证
~增加功能测试菜单
~其他bug修复及使用优化
2020-08-03 19:53:18 +08:00
juewuy
e43b903557 Update README.md 2020-08-03 19:26:13 +08:00
juewuy
f944e0bdbf Update README.md 2020-08-03 19:25:34 +08:00
juewuy
c45461d2aa Update README.md 2020-08-03 19:22:52 +08:00
juewuy
8175cc9002 ~新增一键安装脚本
~优化导入订阅流程
~增加跳过本地证书验证
~增加功能测试菜单
~其他bug修复及使用优化
2020-08-03 19:21:39 +08:00
juewuy
02c9b16eec 新增一键安装脚本
修改大量bug
优化节点订阅
增加跳过本地证书验证
2020-08-03 19:00:34 +08:00
juewuy
655885e31d 正式版 2020-08-03 15:35:45 +08:00
juewuy
350ba369b2 切换目录名 2020-08-03 15:16:33 +08:00
juewuy
321fd510a4 1.修改目录结构,适配一键安装脚本
2.增加核心选择(脚本有待适配)
3.增加一键安装脚本
2020-08-03 15:12:16 +08:00
juewuy
f3b7c8763d 修改打包 2020-08-02 05:25:20 +08:00
35 changed files with 2929 additions and 728 deletions

151
README.md
View File

@@ -1,86 +1,101 @@
# clash-for-Miwifi
在小米AX3600/AX1800/AX5等路由器上使用clash做透明代理
# ShellClash原Clash for Miwifi
在Shell环境下一键部署及管理[Clash](https://github.com/Dreamacro/clash)
=====
更新日志:
功能简介:
--
~通过管理脚本在Shell环境下便捷使用[Clash](https://github.com/Dreamacro/clash)<br>
~支持在Shell环境下管理[Clash各种功能](https://lancellc.gitbook.io/clash)<br>
~支持在线导入[Clash](https://github.com/Dreamacro/clash)支持的节点、订阅及配置链接<br>~支持配置定时任务,以及定时更新订阅<br>~支持在线安装及使用网页面板管理规则组<br>
~支持局域网透明代理/纯净模式等多种模式切换<br>~支持GNOME、KDE桌面自动配置本机系统级代理<br>~支持在线更新<br>
设备支持:
--
•旧版本请重新下载[除config.yaml和Country.mmdb以外的3个文件](https://github.com/juewuy/clash-for-Miwifi/tree/master/clash)并上传到etc/clash后并重新使用安装命令安装以完成更新<br>
#### v0.5
•新增订阅功能,功能强大,欢迎体验!<br>
•修改了配置记录的位置和格式,大幅度增加了脚本可用性<br>
•clash核心使用upx压缩大幅度缩减了体积<br>
•更新到新版本clash核心修复Tun模式电报无法正常代理的bug<br>
•新增若干小功能及使用优化<br>
#### v0.2
•合并Tun和Redir模式为一套文件可以通过管理脚本直接切换<br>
•同步官方最新premium版核心全面支持ssr<br>
•大幅度优化管理脚本,增加部分实用功能<br>
#### v0.1
•支持redir模式<br>
•增加了一个简单的管理脚本<br>
•支持ss、v2ray以及trojan协议Redir模式额外支持ssr协议<br>
•支持Tun模式<br>
使用依赖:
--
•请确认路由器或设备已经开启SSH并获取root权限小米AX系列可参考https://www.right.com.cn/forum/thread-4032490-1-1.html 开启<br>
•SSH连接工具例如puttybitviseJuiceSSH支持安卓手机请自行安装使用<br>
•SCP连接工具如winscp<br>
•以上都不了解或者看不懂的朋友暂不推荐使用<br>
~支持小米/红米全系使用官方系统或官方开发版系统的路由器设备<br>
~支持各种基于OpenWrt或使用OpenWrt二次定制开发的路由器设备<br>
~支持各种运行标准Linux系统如Debian/CenOS/Armbian等的设备<br>~兼容Padavan固件保守模式、潘多拉固件<br>——————————
~更多设备支持请提issue或前往TG群反馈需提供设备名称及运行uname -a返回的设备核心信息<br>
使用方式:
--
•下载 [目录中全部5个文件](https://github.com/juewuy/clash-for-Miwifi/tree/master/clash)到本地电脑 <br>
•将下载并修改后的5个文件通过winSCP上传到路由器/etc/clash文件夹clash文件夹请自行创建最终应该是/etc/clash/"5个文件"<br>
•登陆SSH并在SSH中用root用户执行下方的命令即可使用<br>
~确认路由器设备已经开启SSH并获取root权限带GUI桌面的Linux设备可使用自带终端安装<br>
~使用SSH连接工具如puttyJuiceSSH系统自带终端等路由器或Linux设备的SSH管理界面或终端界面并切换到root用户<br>
~确认设备已经安装curl或者wget下载工具。如未安装LInux设备请[参考此处](https://www.howtoing.com/install-curl-in-linux)安装curl基于OpenWrt小米官方系统、潘多拉、高恪等的设备请使用如下命令安装curl<br>
**首次安装**
```Shell
mv /etc/clash/clashservice /etc/init.d/clash #移动clash服务文件
mv /etc/clash/clashsh /bin/clash #移动clash管理脚本
chmod 777 /etc/clash/clash #授予权限
chmod 777 /etc/init.d/clash #授予权限
chmod 777 /bin/clash #授予权限
clash #使用管理脚本
```shell
opkg update && opkg install curl
```
**管理脚本**
~之后在SSH界面执行如下安装命令并按照后续提示完成安装<br>
~**使用curl安装**<br>
```Shell
clash #使用管理脚本
#Release版本-github直连
sh -c "$(curl -kfsSl --resolve raw.githubusercontent.com:443:199.232.68.133 https://raw.githubusercontent.com/juewuy/ShellClash/master/install.sh)" && source /etc/profile &> /dev/null
#Release版本-jsdelivrCDN源
sh -c "$(curl -kfsSl https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master/install.sh)" && source /etc/profile &> /dev/null
#Test版本-github直连
sh -c "$(curl -kfsSl --resolve raw.githubusercontent.com:443:199.232.68.133 https://raw.githubusercontent.com/juewuy/ShellClash/master/install.sh)" -s 1 && source /etc/profile &> /dev/null
```
•启用后可以通过 http://clash.razord.top (或者 https://yacd.haishan.me http://app.tossp.com Host为网关IP端口为9999密钥为空管理clash内置规则<br>
问题反馈:
~**使用wget安装**<br>
```sh
#Release版本-jsdelivrCDN源
wget -q --no-check-certificate -O /tmp/install.sh https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master/install.sh && sh /tmp/install.sh 2 && source /etc/profile &> /dev/null
```
~**非root用户安装后**请额外执行以下命令以读取环境变量:<br>
```shell
source ~/.bashrc &> /dev/null
```
~安装完成管理脚本后,执行如下命令以**运行管理脚本**<br>
```Shell
clash #正常模式运行
clash -h #脚本帮助及说明
clash -t #测试模式运行
```
~**运行时的额外依赖**<br>
`大部分的设备/系统都已经预装了以下的大部分依赖,使用时如无影响可以无视之`
```sh
bash/ash 必须 全部缺少时无法安装及运行脚本
curl/wget 必须 全部缺少时无法在线安装及更新,无法使用节点保存功能
iptables 重要 缺少时只能使用纯净模式
systemd/rc.common 一般 全部缺少时只能使用保守模式
iptables-mod-nat 一般 缺少时无法使用redir模式混合模式
ip6tables-mod-nat 较低 缺少时影响redir模式混合模式对ipv6的支持
crontab 较低 缺少时无法启用定时任务功能
net-tools 极低 缺少时无法正常检测端口占用
ubus/iproute-doc 极低 缺少时无法正常获取本机host地址
```
更新日志:
--
### https://t.me/clashfm
故障解决:
### [点击查看](https://github.com/juewuy/ShellClash/releases)
交流反馈:
--
•部分设备安装时提示bin目录只读readonly可以通过输入mount -o remount rw /bin 来使目录临时可写,之后重新执行安装命令即可完成安装<br>
•部分设备确实无法写入bin目录的也可以通过sh /etc/clash/clashsh 命令来运行管理脚本<br>
•如果能正常连接国内网站而无法访问屏蔽网站:请在浏览器中打开 http://clash.razord.top 并使用测速功能,之后手动指定服务器即可;如果所有服务器都不可用即代表配置文件有问题<br>
### [TG讨论组](https://t.me/clashfm)
已知问题
相关Q&A
--
•由于使用了clash的fake-ip模式故两种模式均不支持ipv6<br>
•Tun模式下clash服务可能会和小米路由器内置的tx网游加速器冲突请谨慎同时使用<br>
•Tun模式下部分软件可能不会经过clash可以通过设置软件内置sock5IP=路由IPport=7891或http代理IP=路由IPport=7890解决<br>
•Redir模式无法转发udp流量外服游戏可能会受影响此功能是由官方系统阉割了Tproxy导致暂时无解外服游戏用户建议使用Tun模式<br>
ToDo
### [详见博客](https://juewuy.github.io)
友情推广:
--
~~•管理脚本增加订阅功能~~<br>
•管理脚本增加更新功能<br>
•添加一键安装脚本<br>
•修复redir-host DNS以及IPV6支持<br>
•……<br>
感谢:
--
•https://lancellc.gitbook.io/clash/start-clash/clash-tun-mode<br>
•https://comzyh.gitbook.io/clash/<br>
•https://h-cheung.gitlab.io/post/使用_clash_和路由表实现透明代理<br>
•https://www.right.com.cn/forum/thread-4042741-1-1.html<br>
### [顶级8K专线机场-墙洞](https://dler.best/auth/register?affid=89698)

BIN
bin/Country.mmdb Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
bin/clash/clash-linux-386 Normal file

Binary file not shown.

BIN
bin/clash/clash-linux-amd64 Normal file

Binary file not shown.

BIN
bin/clash/clash-linux-armv5 Normal file

Binary file not shown.

BIN
bin/clash/clash-linux-armv7 Normal file

Binary file not shown.

BIN
bin/clash/clash-linux-armv8 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
bin/clashdb.tar.gz Normal file

Binary file not shown.

BIN
bin/clashfm.tar.gz Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

4
bin/version Normal file
View File

@@ -0,0 +1,4 @@
clash_v=1.2.0
versionsh=1.0.0beta16
clashpre_v=2020.10.26
GeoIP_v=20201031

BIN
bin/yacd.tar.gz Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,86 +0,0 @@
#!/bin/sh /etc/rc.common
# Example script
# Copyright (C) 2007 OpenWrt.org
USE_PROCD=1
START=99
getconfig(){
cpath=/etc/clash
ccfg=$cpath/mark
if [ ! -f "$ccfg" ]; then
echo mark文件不存在默认以Redir模式运行
cat >$ccfg<<EOF
#标识clash运行状态的文件请勿改动
EOF
redir_mod=redir模式
fi
source $ccfg
}
mark_time(){
start_time=`date +%s`
sed -i '/start_time*/'d $ccfg
sed -i "3i\start_time=$start_time" $ccfg
}
start_redir(){
#修改iptables规则使流量进入clash
iptables -t nat -N clash
iptables -t nat -A clash -d 0.0.0.0/8 -j RETURN
iptables -t nat -A clash -d 10.0.0.0/8 -j RETURN
iptables -t nat -A clash -d 127.0.0.0/8 -j RETURN
iptables -t nat -A clash -d 169.254.0.0/16 -j RETURN
iptables -t nat -A clash -d 172.16.0.0/12 -j RETURN
iptables -t nat -A clash -d 192.168.0.0/16 -j RETURN
iptables -t nat -A clash -d 224.0.0.0/4 -j RETURN
iptables -t nat -A clash -d 240.0.0.0/4 -j RETURN
iptables -t nat -A clash -p tcp -j REDIRECT --to-ports 7892
iptables -t nat -A PREROUTING -p tcp -j clash
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to 1053
ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to 1053
}
stop_redir(){
#重置iptables规则
iptables -t nat -D PREROUTING -p tcp -j clash > /dev/null 2>&1
iptables -t nat -F clash > /dev/null 2>&1
iptables -t nat -X clash > /dev/null 2>&1
iptables -t nat -D PREROUTING -p udp --dport 53 -j REDIRECT --to 1053 > /dev/null 2>&1
ip6tables -t nat -D PREROUTING -p udp --dport 53 -j REDIRECT --to 1053 > /dev/null 2>&1
}
start_tun(){
#修改iptables规则使流量进入clash
iptables -I FORWARD -o utun -j ACCEPT
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to 1053
ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to 1053
}
stop_tun(){
iptables -t nat -D PREROUTING -p udp --dport 53 -j REDIRECT --to 1053 > /dev/null 2>&1
ip6tables -t nat -D PREROUTING -p udp --dport 53 -j REDIRECT --to 1053 > /dev/null 2>&1
}
start_service() {
getconfig
#创建clash后台进程
procd_open_instance
procd_set_param respawn
procd_set_param stderr 1
procd_set_param stdout 1
procd_set_param command $cpath/clash -d $cpath
procd_close_instance
#修改iptables规则使流量进入clash
if [[ "$redir_mod" = "Tun模式" ]];then
stop_tun
start_tun
mark_time
else
stop_redir
start_redir
mark_time
fi
}
stop_service() {
getconfig
if [[ "$redir_mod" = "Tun模式" ]];then
stop_tun
else
stop_redir
fi
}

View File

@@ -1,574 +0,0 @@
#!/bin/sh
# Copyright (C) Juewuy
echo "***********************************************"
echo "** 欢迎使用 **"
echo "** Clash for Miwifi **"
echo "** by Juewuy **"
echo "***********************************************"
getconfig(){
#文件路径
cpath=/etc/clash #clash目录地址如有变动只需要修改此处
sed -i "/^cpath\=*/ccpath\=$cpath" /etc/init.d/clash #同步service文件中的clash路径
ccfg=$cpath/mark
yaml=$cpath/config.yaml
#检查标识文件
if [ ! -f "$ccfg" ]; then
echo mark文件不存在正在创建
cat >$ccfg<<EOF
#标识clash运行状态的文件请勿改动
EOF
fi
source $ccfg
#获取自启状态
if [ $auto_start = true ] > /dev/null 2>&1; then
auto="\033[32m已设置开机启动\033[0m"
auto1="禁用clash开机启动"
else
auto="\033[31m未设置开机启动\033[0m"
auto1="允许clash开机启动"
fi
#获取运行模式
if [ ! -n "$redir_mod" ]; then
sed -i "2i\redir_mod=Redir模式" $ccfg
redir_mod=Redir模式
fi
#获取运行状态
uid=`ps |grep -w 'clash -d'|grep -v grep|awk '{print $1}'`
if [ $uid > 0 ];then
run="\033[32m正在运行$redir_mod\033[0m"
VmRSS=`cat /proc/$uid/status|grep -w VmRSS|awk '{print $2,$3}'`
#获取运行时长
if [ "$start_time" > 0 ] > /dev/null 2>&1; then
time=$((`date +%s`-$start_time))
day=$(($time/86400))
if [[ $day != 0 ]]; then
day=$day天
else
day=""
fi
time=`date -u -d @${time} +"%-H小时%-M分%-S秒"`
fi
else
run="\033[31m没有运行$redir_mod\033[0m"
fi
#输出状态
echo -----------------------------------------------
echo -e "Clash服务"$run""$auto""
if [ $uid > 0 ];then
echo -e "当前内存占用:\033[44m"$VmRSS"\033[0m已运行\033[46;30m"$day"\033[44;37m"$time"\033[0m"
fi
}
getyaml(){
source $ccfg
#前后端订阅服务器地址索引,可在此处添加!
Server=`sed -n ""$server_link"p"<<EOF
subconverter-web.now.sh
subcon.py6.pw
api.dler.io
api.wcc.best
EOF`
Config=`sed -n ""$rule_link"p"<<EOF
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online.ini
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_MultiMode.ini
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_AdblockPlus.ini
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_AdblockPlus.ini
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_NoReject.ini
EOF`
Https="https://$Server/sub?target=clashr&new_name=true&url=$Url&insert=false&config=$Config"
echo -----------------------------------------------
echo 正在连接服务器获取配置文件…………链接地址为:
echo -e "\033[4;32m$Https\033[0m"
echo 可以手动复制该链接到浏览器打开并查看数据是否正常!
echo -e "\033[36m-----------------------------------------------"
echo -e "| |"
echo -e "| 需要一点时间,请耐心等待! |"
echo -e "| |"
echo -e "-----------------------------------------------\033[0m"
#获取在线yaml文件
yamlnew=$yaml.new
rm $yamlnew > /dev/null 2>&1
result=$(curl -w %{http_code} -skLo $yamlnew $Https)
if [ "$result" != "200" ];then
echo -----------------------------------------------
echo -e "\033[31m配置文件获取失败\033[0m"
echo -----------------------------------------------
echo
read -p "是否更换后端地址后重试?[1/0] > " res
if [ "$res" = '1' ]; then
sed -i '/server_link=*/'d $ccfg
if [ "$server_link" = '4' ]; then
server_link=0
fi
server_link=$(($server_link + 1))
echo $server_link
sed -i "5i\server_link=$server_link" $ccfg
getyaml
fi
exit;
else
if cat $yamlnew | grep ', server:' >/dev/null;then
##########需要变更的配置###########
redir='redir-port: 7892'
external='external-controller: 0.0.0.0:9999'
dns='dns: {enable: true, listen: 0.0.0.0:1053, fake-ip-range: 198.18.0.1/16, enhanced-mode: fake-ip, nameserver: [tls://dns.rubyfish.cn:853, 127.0.0.1:53], fallback: [tcp://1.1.1.1, tls://dns.google:853]}'
tun='tun: {enable: false, stack: system}'
exper='experimental: {ignore-resolve-fail: true, interface-name: en0}'
###################################
#预删除需要添加的项目
sed -i '/redir-port:*/'d $yamlnew
sed -i '/external-controller:*/'d $yamlnew
sed -i '/dns:*/'d $yamlnew
sed -i '/tun:*/'d $yamlnew
sed -i '/experimental:*/'d $yamlnew
#添加配置
sed -i "2a$redir" $yamlnew
sed -i "6a$external" $yamlnew
sed -i "7a$dns" $yamlnew
sed -i "8a$tun" $yamlnew
sed -i "9a$experimental" $yamlnew
sed -i "1,40s/sni: \S*/\1skip-cert-verify: true}/" $yamlnew
#替换文件
mv $yaml $yaml.bak
mv $yamlnew $yaml
echo 配置文件已生成正在重启clash使其生效
#重启clash服务
/etc/init.d/clash stop
/etc/init.d/clash start
sleep 1
uid=`ps |grep -w 'clash -d'|grep -v grep|awk '{print $1}'`
if [ $uid > 0 ];then
echo -----------------------------------------------
echo -e "\033[32mclash服务已启动\033[0m"
echo 可以使用 http://clash.razord.top IP为网关IP端口为9999管理clash内置规则
clashsh
else
echo -----------------------------------------------
echo -e "\033[31mclash服务启动失败请检查配置文件\033[0m"
clashsh
fi
exit;
else
echo -----------------------------------------------
echo -e "\033[33m囧囧囧 获取到了配置文件,但格式似乎不对 囧囧囧\033[0m"
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sed -n '1,20p' $yamlnew
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo -e "\033[33m请检查如上配置文件信息:\033[0m"
echo -----------------------------------------------
fi
exit;
fi
exit
}
getlink(){
#设置输入循环
i=1
while [ $i -le 9 ]
do
echo -----------------------------------------------
echo -e "\033[44m 实验性功能遇问题请加TG群反馈\033[42;30m t.me/clashfm \033[0m"
echo -----------------------------------------------
echo -e "\033[33m支持批量导入\033[30;46m Http/Https/Clash \033[0;33m等格式的订阅链接"
echo -e "支持批量导入\033[30;42m Vmess/SSR/SS/Trojan/Sock5 \033[0;33m等格式的节点链接"
echo -e "\033[36m多个较短的链接可以用\033[30;47m | \033[0;36m分隔以一次性输入"
echo -e "多个较长的链接请尽量分多次输入,可支持多达\033[30;47m 9 \033[0;36m次输入"
echo -e "\033[0m注意SSR/SS不支持\033[30;47m chacha20加密 \033[0m"
echo -e "\033[44;37m直接输入回车以结束输入并开始导入链接\033[0m"
echo -e "\033[33m 0 返回上级目录!\033[0m"
echo
url=""
read -p "请输入第"$i"个链接 > " url
test=$(echo $url | grep "://")
url=`echo ${url/\ \(*\)/''}` #删除恶心的超链接内容
url=`echo ${url/*\&url\=/""}` #将clash完整链接还原成单一链接
url=`echo ${url/\&config\=*/""}` #将clash完整链接还原成单一链接
url=`echo ${url//\&/\%26}` #将分隔符 & 替换成urlcode%26
if [[ "$test" != "" ]];then
if [[ $i == 1 ]];then
Url="$url"
else
Url="$Url"\|"$url"
fi
i=$(($i+1))
elif [ -z $url ];then
if [ -n $Url ];then
echo -----------------------------------------------
echo -e 请检查输入的链接是否正确:
echo -e "\033[4m$Url\033[0m"
read -p "确认导入配置文件原配置文件将被更名为config.bak![1/0] > " res
if [ "$res" = '1' ]; then
#将用户链接写入mark
sed -i '/Url=*/'d $ccfg
sed -i "6i\Url=\'$Url\'" $ccfg
#获取在线yaml文件
getyaml
exit;
fi
clashlink
fi
elif [[ $url == 0 ]];then
clashlink
else
echo -----------------------------------------------
echo -e "\033[31m请输入正确的订阅/分享链接!!!\033[0m"
fi
done
echo -----------------------------------------------
echo 输入太多啦,可能会导致订阅失败!
echo "多个较短的链接请尽量用“|”分隔以一次性输入!"
echo -e "请检查输入的链接是否正确:\033[4m$Url\033[0m"
read -p "确认导入配置文件原配置文件将被更名为config.bak![1/0] > " res
if [ "$res" = '1' ]; then
#将用户链接写入mark
sed -i '/Url=*/'d $ccfg
sed -i "6i\Url=\'$Url\'" $ccfg
#获取在线yaml文件
getyaml
exit;
else
echo -----------------------------------------------
echo 操作已取消!返回上级菜单!
clashlink
fi
clashlink
}
clashlink(){
#获取订阅规则
if [ ! -n "$rule_link" ]; then
sed -i '/rule_link=*/'d $ccfg
sed -i "4i\rule_link=1" $ccfg
rule_link=1
fi
#获取后端服务器地址
if [ ! -n "$server_link" ]; then
sed -i '/server_link=*/'d $ccfg
sed -i "5i\server_link=3" $ccfg
server_link=3
fi
echo -----------------------------------------------
echo -e "\033[44m 实验性功能遇问题请加TG群反馈\033[42;30m t.me/clashfm \033[0m"
echo -e "\033[32m 欢迎使用订阅功能!\033[0m"
echo -e 1 输入订阅链接
echo -e 2 选取规则模版
echo -e 3 选择后端地址
echo -e 4 还原配置文件
echo -e 5 手动更新订阅
echo -e 6 设置自动更新(未完成)
echo -e 0 返回上级菜单
read -p "请输入对应数字 > " num
if [ -z $num ];then
echo -----------------------------------------------
echo -e "\033[31m请输入正确的数字\033[0m"
clashsh
elif [[ $num == 1 ]];then
getlink
elif [[ $num == 2 ]];then
echo -----------------------------------------------
echo -e "\033[44m 实验性功能遇问题请加TG群反馈\033[42;30m t.me/clashfm \033[0m"
echo 当前使用规则为:$rule_link
echo 1 ACL4SSR默认通用版推荐
echo 2 ACL4SSR精简全能版推荐
echo 3 ACL4SSR通用版去广告加强
echo 4 ACL4SSR精简版去广告加强
echo 5 ACL4SSR通用版无去广告
echo 0 返回上级菜单
read -p "请输入对应数字 > " num
if [ -z $num ];then
echo -----------------------------------------------
echo -e "\033[31m请输入正确的数字\033[0m"
clashlink
else
#将对应标记值写入mark
sed -i '/rule_link*/'d $ccfg
sed -i "4i\rule_link="$num"" $ccfg
echo -----------------------------------------------
echo -e "\033[32m设置成功返回上级菜单\033[0m"
clashlink
fi
elif [[ $num == 3 ]];then
echo -----------------------------------------------
echo -e "\033[44m 实验性功能遇问题请加TG群反馈\033[42;30m t.me/clashfm \033[0m"
echo 当前使用后端为:$server_link
echo 1 subconverter-web.now.sh
echo 2 subcon.py6.pw
echo 3 api.dler.io
echo 4 api.wcc.best
echo 0 返回上级菜单
read -p "请输入对应数字 > " num
if [ -z $num ];then
echo -----------------------------------------------
echo -e "\033[31m请输入正确的数字\033[0m"
clashlink
else
if [[ $num == 0 ]];then
clashlink
fi
#将对应标记值写入mark
sed -i '/server_link*/'d $ccfg
sed -i "4i\server_link="$num"" $ccfg
echo -----------------------------------------------
echo -e "\033[32m设置成功返回上级菜单\033[0m"
clashlink
fi
elif [[ $num == 4 ]];then
yamlbak=$yaml.bak
if [ ! -f "$yaml".bak ];then
echo -----------------------------------------------
echo -e "\033[31m没有找到配置文件的备份\033[0m"
else
echo -----------------------------------------------
echo -e 备份文件共有"\033[32m`wc -l < $yamlbak`\033[0m"行内容,当前文件共有"\033[32m`wc -l < $yaml`\033[0m"行内容
read -p "确认还原配置文件?此操作不可逆![1/0] > " res
if [ "$res" = '1' ]; then
mv $yamlbak $yaml
echo -----------------------------------------------
echo -e "\033[32m配置文件已还原请手动重启clash服务\033[0m"
else
echo -----------------------------------------------
echo -e "\033[31m操作已取消返回上级菜单\033[0m"
fi
fi
clashsh
elif [[ $num == 5 ]];then
if [ ! -n "$Url" ];then
echo -----------------------------------------------
echo 没有找到你的订阅链接!请先输入链接!
clashlink
else
echo -----------------------------------------------
echo -----------------------------------------------
echo -e "\033[33m当前系统记录的订阅链接为\033[0m"
echo -e "\033[4;32m$Url\033[0m"
echo -----------------------------------------------
read -p "确认更新配置文件?[1/0] > " res
if [ "$res" = '1' ]; then
getyaml
fi
clashlink
fi
elif [[ $num == 0 ]];then
clashsh
else
echo -----------------------------------------------
echo -e "\033[31m请输入正确的数字\033[0m"
exit;
fi
}
clashadv(){
echo -----------------------------------------------
echo -e "\033[33m欢迎使用高级模式菜单\033[0m"
echo 1 切换代理模式Tun/Redir
echo 2 更新clash核心文件施工中
echo 3 更新GeoIP数据库施工中
echo 4 更新管理脚本(施工中)
echo 9 卸载clash
echo 0 返回上级菜单
read -p "请输入对应数字 > " num
if [[ $num -le 9 ]] > /dev/null 2>&1; then
if [[ $num == 0 ]]; then
clashsh
elif [[ $num == 1 ]]; then
echo -----------------------------------------------
echo -e "当前代理模式为:\033[47;30m $redir_mod \033[0m"
echo -e "\033[33m切换模式时会重启clash服务可能会导致短时间的网络中断\033[0m"
echo "1 Tun模式 支持UDP转发且延迟低"
echo " 但CPU及内存占用更高"
echo " 适合外服游戏用户"
echo "2 Redir模式CPU以及内存占用较低"
echo " 但不支持UDP流量转发"
echo " 日常使用推荐此模式"
echo 0 返回上级菜单
read -p "请输入对应数字 > " num
if [[ $num == 0 ]]; then
clashadv
elif [[ $num == 1 ]]; then
if [[ $redir_mod = "Redir模式" ]]; then
sed -i '/redir_mod*/'d $ccfg
sed -i "2i\redir_mod=Tun模式" $ccfg #修改redir_mod标记
sed -i '5,20s/tun: {enable: false/tun: {enable: true/' $yaml #修改配置文件
if [ $uid > 0 ];then > /dev/null 2>&1
echo -----------------------------------------------
echo -e "\033[33m正在重启clash进程……\033[0m"
/etc/init.d/clash stop > /dev/null 2>&1
fi
/etc/init.d/clash start
sleep 1
uid=`ps |grep -w 'clash -d'|grep -v grep|awk '{print $1}'`
if [ $uid > 0 ];then
echo -----------------------------------------------
echo -e "\033[32mclash服务已启动\033[0m"
echo -e "\033[33mclash已成功切换为\033[47;34m Tun模式! \033[0m"
echo -e 可以使用 "\033[32mhttp://clash.razord.top\033[0m"IP为网关IP端口为9999管理clash内置规则
clashsh
else
echo -----------------------------------------------
echo -e "\033[31mclash服务启动失败请检查配置文件\033[0m"
clashsh
fi
else
echo -----------------------------------------------
echo -e "\033[33m当前已经处于Tun模式无需重复设置\033[0m"
clashadv
fi
elif [[ $num == 2 ]]; then
if [[ $redir_mod = "Tun模式" ]]; then
sed -i '/redir_mod*/'d $ccfg
sed -i "2i\redir_mod=Redir模式" $ccfg #修改redir_mod标记
sed -i '5,20s/tun: {enable: true/tun: {enable: false/' $yaml #修改配置文件
if [ $uid > 0 ];then
echo -----------------------------------------------
echo -e "\033[33m正在重启clash进程……\033[0m"
/etc/init.d/clash stop > /dev/null 2>&1
fi
/etc/init.d/clash start
sleep 1
uid=`ps |grep -w 'clash -d'|grep -v grep|awk '{print $1}'`
if [ $uid > 0 ];then
echo -----------------------------------------------
echo -e "\033[32mclash服务已启动\033[0m"
echo -e "\033[33mclash已成功切换为\033[47;34m Redir模式! \033[0m"
echo -e 可以使用 "\033[32mhttp://clash.razord.top\033[0m"IP为网关IP端口为9999管理clash内置规则
clashsh
else
echo -----------------------------------------------
echo -e "\033[31mclash服务启动失败请检查配置文件\033[0m"
clashsh
fi
else
echo -----------------------------------------------
echo -e "\033[33m当前已经处于Redir模式无需重复设置\033[0m"
clashadv
fi
else
echo -----------------------------------------------
echo -e "\033[31m请输入正确的数字\033[0m"
clashadv
fi
elif [[ $num == 9 ]]; then
read -p "确认卸载clash警告该操作不可逆[1/0] " res
if [ "$res" = '1' ]; then
/etc/init.d/clash disable
/etc/init.d/clash stop
rm -rf $cpath
rm /etc/init.d/clash
rm $csh
echo 已卸载clash相关文件
fi
exit;
else
echo -e "\033[31m暂未支持的选项\033[0m"
clashadv
fi
else
echo -----------------------------------------------
echo -e "\033[31m请输入正确的数字\033[0m"
clashsh
fi
exit;
}
clashsh(){
#############################
getconfig
#############################
echo 1 启动/重启clash服务
echo 2 测试代理服务器连通性
echo 3 停止clash服务
echo 4 $auto1
echo 5 设置定时任务(施工中)
echo 6 使用链接导入节点/订阅
echo 7 高级设置
echo 0 退出脚本
read -p "请输入对应数字 > " num
if [[ $num -le 7 ]] > /dev/null 2>&1; then
if [[ $num == 0 ]]; then
exit;
elif [[ $num == 1 ]]; then
if [ $uid > 0 ];then
echo -----------------------------------------------
/etc/init.d/clash stop > /dev/null 2>&1
echo -e "\033[31mClash服务已停止\033[0m"
fi
/etc/init.d/clash start
sleep 1
uid=`ps |grep -w 'clash -d'|grep -v grep|awk '{print $1}'`
if [ $uid > 0 ];then
echo -----------------------------------------------
echo -e "\033[32mclash服务已启动\033[0m"
echo 可以使用 http://clash.razord.top IP为网关IP端口为9999管理clash内置规则
clashsh
else
echo -----------------------------------------------
echo -e "\033[31mclash服务启动失败请检查配置文件\033[0m"
clashsh
fi
exit;
elif [[ $num == 2 ]]; then
echo 注意:测试结果不保证一定准确!
delay=`curl -kx socks5://127.0.0.1:7891 -o /dev/null -s -w '%{time_starttransfer}' 'https://google.tw' & { sleep 3 ; kill $! & }` > /dev/null 2>&1
delay=`echo |awk "{print $delay*1000}"` > /dev/null 2>&1
echo -----------------------------------------------
if [ `echo ${#delay}` -gt 1 ];then
echo -e "\033[32m连接成功响应时间为"$delay" ms\033[0m"
else
echo -e "\033[31m连接超时请重试或检查节点配置\033[0m"
fi
clashsh
elif [[ $num == 3 ]]; then
/etc/init.d/clash stop > /dev/null 2>&1
echo -----------------------------------------------
echo -e "\033[31mClash服务已停止\033[0m"
echo -----------------------------------------------
exit;
elif [[ $num == 4 ]]; then
sed -i '/auto_start*/'d $ccfg
echo -----------------------------------------------
if [ $auto_start = true ] > /dev/null 2>&1; then
/etc/init.d/clash disable
sed -i "1i\auto_start=false" $ccfg
echo -e "\033[33m已禁止Clash开机启动\033[0m"
else
/etc/init.d/clash enable
sed -i "1i\auto_start=true" $ccfg
echo -e "\033[32m已设置Clash开机启动\033[0m"
fi
clashsh
elif [[ $num == 5 ]]; then
echo -----------------------------------------------
echo -e "\033[31m正在施工中敬请期待\033[0m"
echo -e "\033[32m正在施工中敬请期待\033[0m"
echo -e "\033[33m正在施工中敬请期待\033[0m"
echo -e "\033[34m正在施工中敬请期待\033[0m"
echo -e "\033[35m正在施工中敬请期待\033[0m"
echo -e "\033[36m正在施工中敬请期待\033[0m"
clashsh
elif [[ $num == 6 ]]; then
clashlink
elif [[ $num == 7 ]]; then
clashadv
else
echo -----------------------------------------------
echo -e "\033[31m请输入正确的数字\033[0m"
fi
exit 1
else
echo -----------------------------------------------
echo -e "\033[31m请输入正确的数字\033[0m"
fi
exit 1
}
clashsh

192
install.sh Normal file
View File

@@ -0,0 +1,192 @@
#! /bin/bash
# Copyright (C) Juewuy
echo='echo -e' && [ -n "$(echo -e|grep e)" ] && echo=echo
[ -z "$1" ] && test=0 || test=$1
echo "***********************************************"
echo "** 欢迎使用 **"
echo "** ShellClash **"
echo "** by Juewuy **"
echo "***********************************************"
#检查root权限
if [ "$USER" != "root" ];then
echo 当前用户:$USER
$echo "\033[31m请尽量使用root用户执行安装!\033[0m"
echo -----------------------------------------------
read -p "仍要安装?可能会产生大量未知错误!(1/0) > " res
[ "$res" != "1" ] && exit
fi
webget(){
#参数【$1】代表下载目录【$2】代表在线地址
#参数【$3】代表输出显示【$4】不启用重定向
if curl --version > /dev/null 2>&1;then
[ "$3" = "echooff" ] && progress='-s' || progress='-#'
[ -z "$4" ] && redirect='-L' || redirect=''
result=$(curl -w %{http_code} --connect-timeout 5 $progress $redirect -ko $1 $2)
else
[ "$3" = "echooff" ] && progress='-q' || progress='-q --show-progress'
[ "$3" = "echoon" ] && progress=''
[ -z "$4" ] && redirect='' || redirect='--max-redirect=0'
wget -Y on $progress $redirect --no-check-certificate --timeout=5 -O $1 $2
[ $? -eq 0 ] && result="200"
fi
}
#检查更新
url="https://cdn.jsdelivr.net/gh/juewuy/ShellClash"
if [ "$test" -gt 0 ];then
url="https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master"
[ "$test" -eq 2 ] && url="http://192.168.31.30:8080/clash-for-Miwifi"
[ "$test" -eq 3 ] && url="http://192.168.123.90:8080/clash-for-Miwifi"
else
webget /tmp/clashrelease https://github.com.cnpmjs.org/juewuy/ShellClash/releases/latest echoon rediroff 2>/tmp/clashrelease
release_new=$( cat /tmp/clashrelease | grep -aoE "releases/tag/.*" | awk -F '[/" ]' '{print $3}')
[ -z "$release_new" ] && release_new=master
url=$url@$release_new
fi
webget /tmp/clashversion $url/bin/version echooff
[ "$result" = "200" ] && versionsh=$(cat /tmp/clashversion | grep "versionsh" | awk -F "=" '{print $2}')
[ -z "$release_new" ] && release_new=$versionsh
rm -rf /tmp/clashversion
rm -rf /tmp/clashrelease
[ -z "$release_new" ] && echo "无法连接服务器!" && exit
tarurl=$url/bin/clashfm.tar.gz
gettar(){
webget /tmp/clashfm.tar.gz $tarurl
[ "$result" != "200" ] && echo "文件下载失败!" && exit 1
#解压
echo -----------------------------------------------
echo 开始解压文件!
mkdir -p $clashdir > /dev/null
tar -zxvf '/tmp/clashfm.tar.gz' -C $clashdir/
[ $? -ne 0 ] && echo "文件解压失败!" && rm -rf /tmp/clashfm.tar.gz && exit 1
#初始化文件目录
[ -f "$clashdir/mark" ] || echo '#标识clash运行状态的文件不明勿动' > $clashdir/mark
#判断系统类型写入不同的启动文件
if [ -f /etc/rc.common ];then
#设为init.d方式启动
mv $clashdir/clashservice /etc/init.d/clash
chmod 777 /etc/init.d/clash
else
[ -w /etc/systemd/system ] && sysdir=/etc/systemd/system
[ -w /usr/lib/systemd/system ] && sysdir=/usr/lib/systemd/system
if [ -n "$sysdir" ];then
#设为systemd方式启动
mv $clashdir/clash.service $sysdir/clash.service
sed -i "s%/etc/clash%$clashdir%g" $sysdir/clash.service
systemctl daemon-reload
else
#设为保守模式启动
sed -i '/start_old=*/'d $clashdir/mark
echo start_old=已开启 >> $clashdir/mark
fi
fi
#修饰文件及版本号
shtype=sh && [ -n "$(ls -l /bin/sh|grep -o dash)" ] && shtype=bash
sed -i "s%#!/bin/sh%#!/bin/$shtype%g" $clashdir/start.sh
chmod 777 $clashdir/start.sh
sed -i '/versionsh_l=*/'d $clashdir/mark
echo versionsh_l=$release_new >> $clashdir/mark
#设置环境变量
[ -w ~/.bashrc ] && profile=~/.bashrc
[ -w /etc/profile ] && profile=/etc/profile
sed -i '/alias clash=*/'d $profile
echo "alias clash=\"$shtype $clashdir/clash.sh\"" >> $profile #设置快捷命令环境变量
sed -i '/export clashdir=*/'d $profile
echo "export clashdir=\"$clashdir\"" >> $profile #设置clash路径环境变量
#删除临时文件
rm -rf /tmp/clashfm.tar.gz
rm -rf $clashdir/clashservice
rm -rf $clashdir/clash.service
}
#下载及安装
install(){
echo -----------------------------------------------
echo 开始从服务器获取安装文件!
echo -----------------------------------------------
gettar
echo -----------------------------------------------
echo ShellClash 已经安装成功!
echo -----------------------------------------------
$echo "\033[33m输入\033[30;47m clash \033[0;33m命令即可管理\033[0m"
echo -----------------------------------------------
}
setdir(){
echo -----------------------------------------------
$echo "\033[33m安装ShellClash至少需要预留约10MB的磁盘空间\033[0m"
$echo " 1 在\033[32m/etc目录\033[0m下安装(适合路由设备)"
$echo " 2 在\033[32m/usr/share目录\033[0m下安装(适合大多数设备)"
$echo " 3 在\033[32m当前用户目录\033[0m下安装(适合非root用户)"
$echo " 4 手动设置安装目录"
$echo " 0 退出安装"
echo -----------------------------------------------
read -p "请输入相应数字 > " num
#设置目录
if [ -z $num ];then
echo 安装已取消
exit;
elif [ "$num" = "1" ];then
dir=/etc
elif [ "$num" = "2" ];then
dir=/usr/share
elif [ "$num" = "3" ];then
dir=~/.local/share
mkdir -p ~/.config/systemd/user
elif [ "$num" = "4" ];then
echo -----------------------------------------------
echo '可用路径 剩余空间:'
df -h | awk '{print $6,$4}'| sed 1d
echo '路径是必须带 / 的格式,写入虚拟内存(/tmp,/sys,..)的文件会在重启后消失!!!'
read -p "请输入自定义路径 > " dir
if [ -z "$dir" ];then
$echo "\033[31m路径错误请重新设置\033[0m"
setdir
fi
else
echo 安装已取消!!!
exit;
fi
if [ ! -w $dir ];then
$echo "\033[31m没有$dir目录写入权限!请重新设置!\033[0m" && sleep 1 && setdir
else
echo 目标目录磁盘剩余:$(df -h $dir | awk '{print $4}' | sed 1d )
read -p "确认安装?(1/0) > " res
[ "$res" = "1" ] && clashdir=$dir/clash || setdir
fi
}
#输出
$echo "最新版本:\033[32m$release_new\033[0m"
echo -----------------------------------------------
$echo "\033[44m如遇问题请加TG群反馈\033[42;30m t.me/clashfm \033[0m"
$echo "\033[37m支持各种基于openwrt的路由器设备"
$echo "\033[33m支持Debian、Centos等标准Linux系统\033[0m"
if [ -n "$clashdir" ];then
echo -----------------------------------------------
$echo "检测到旧的安装目录\033[36m$clashdir\033[0m是否覆盖安装"
$echo "\033[32m覆盖安装时不会移除配置文件\033[0m"
read -p "覆盖安装/卸载旧版本?(1/0) > " res
if [ "$res" = "1" ];then
install
elif [ "$res" = "0" ];then
rm -rf $clashdir
echo -----------------------------------------------
$echo "\033[31m 旧版本文件已卸载!\033[0m"
setdir
install
elif [ "$res" = "9" ];then
echo 测试模式,变更安装位置
setdir
install
else
$echo "\033[31m输入错误已取消安装\033[0m"
exit;
fi
else
setdir
install
fi

15
scripts/clash.service Normal file
View File

@@ -0,0 +1,15 @@
[Unit]
Description=clash
After=network.target
[Service]
Type=simple
User=root
ExecStart=/etc/clash/clash -d /etc/clash
ExecStartPost=/etc/clash/start.sh afstart
Restart=on-failure
RestartSec=3s
[Install]
WantedBy=multi-user.target

1034
scripts/clash.sh Normal file

File diff suppressed because it is too large Load Diff

40
scripts/clashservice Normal file
View File

@@ -0,0 +1,40 @@
#!/bin/sh /etc/rc.common
START=92
SERVICE_DAEMONIZE=1
SERVICE_WRITE_PID=1
USE_PROCD=1
#获取目录
DIR=$(cat /etc/profile | grep clashdir | awk -F "\"" '{print $2}')
BINDIR=$(cat $DIR/mark | grep bindir | awk -F "=" '{print $2}')
[ -z "$BINDIR" ] && BINDIR=$DIR
start_service() {
#检测必须文件
$DIR/start.sh bfstart
#使用procd创建clash后台进程
procd_open_instance
procd_set_param respawn
procd_set_param stderr 1
procd_set_param stdout 1
procd_set_param command $BINDIR/clash -d $BINDIR
procd_close_instance
#其他设置
$DIR/start.sh afstart
}
start() {
if [ -z "$(pidof procd)" ];then
#检测必须文件
$DIR/start.sh bfstart
#创建后台进程
service_start $BINDIR/clash -d $BINDIR
#其他设置
$DIR/start.sh afstart
#设置守护进程
$DIR/start.sh deamon
else
start_service
fi
}

966
scripts/getdate.sh Normal file
View File

@@ -0,0 +1,966 @@
#!/bin/bash
# Copyright (C) Juewuy
webget(){
[ -n "$(pidof clash)" ] && export all_proxy="http://127.0.0.1:$mix_port" #设置临时http代理
#参数【$1】代表下载目录【$2】代表在线地址
#参数【$3】代表输出显示【$4】不启用重定向
if curl --version > /dev/null 2>&1;then
[ "$3" = "echooff" ] && progress='-s' || progress='-#'
[ -z "$4" ] && redirect='-L' || redirect=''
result=$(curl -w %{http_code} --connect-timeout 5 $progress $redirect -ko $1 $2)
else
[ "$3" = "echooff" ] && progress='-q' || progress='-q --show-progress'
[ "$3" = "echoon" ] && progress=''
[ -z "$4" ] && redirect='' || redirect='--max-redirect=0'
wget -Y on $progress $redirect --no-check-certificate --timeout=5 -O $1 $2
[ $? -eq 0 ] && result="200"
fi
export all_proxy=''
}
#导入订阅、配置文件相关
linkconfig(){
echo -----------------------------------------------
echo -e "\033[44m 实验性功能遇问题请加TG群反馈\033[42;30m t.me/clashfm \033[0m"
echo 当前使用规则为:$rule_link
echo 1 ACL4SSR通用版无去广告推荐
echo 2 ACL4SSR精简全能版推荐
echo 3 ACL4SSR通用版+去广告加强
echo 4 ACL4SSR精简版+去广告加强
echo 5 ACL4SSR重度全分组+奈飞分流
echo 6 ACL4SSR重度全分组+去广告加强
echo 7 洞主规则精简版(推荐)
echo 8 洞主规则重度完整版
echo 9 神机规则高级版
echo 10 神机规则-回国专用
echo 11 李哥规则-墙洞专用
echo 12 基础规则-仅Geoip CN+Final
echo 13 网易云解锁-仅规则分组
echo -----------------------------------------------
echo 0 返回上级菜单
read -p "请输入对应数字 > " num
if [ -z "$num" ] || [ "$num" -gt 13 ];then
errornum
elif [ "$num" = 0 ];then
echo
elif [ "$num" -le 13 ];then
#将对应标记值写入mark
rule_link=$num
setconfig rule_link $rule_link
echo -----------------------------------------------
echo -e "\033[32m设置成功返回上级菜单\033[0m"
fi
}
linkserver(){
echo -----------------------------------------------
echo -e "\033[44m 实验性功能遇问题请加TG群反馈\033[42;30m t.me/clashfm \033[0m"
echo -e "\033[36m 感谢 https://github.com/tindy2013/subconverter \033[0m"
echo 当前使用后端为:$server_link
echo 1 subcon.dlj.tf
echo 2 subconverter.herokuapp.com
echo 3 subcon.py6.pw
echo 4 api.dler.io
echo 5 api.wcc.best
echo -----------------------------------------------
echo 0 返回上级菜单
read -p "请输入对应数字 > " num
if [ -z "$num" ] || [ "$num" -gt 5 ];then
errornum
elif [ "$num" = 0 ];then
echo
elif [ "$num" -le 5 ];then
#将对应标记值写入mark
server_link=$num
setconfig server_link $server_link
echo -----------------------------------------------
echo -e "\033[32m设置成功返回上级菜单\033[0m"
fi
}
linkfilter(){
[ -z "$exclude" ] && exclude="未设置"
echo -----------------------------------------------
echo -e "\033[44m 实验性功能遇问题请加TG群反馈\033[42;30m t.me/clashfm \033[0m"
echo -e "\033[33m当前过滤关键字\033[47;30m$exclude\033[0m"
echo -----------------------------------------------
echo -e "\033[33m匹配关键字的节点会在导入时被【屏蔽】\033[0m"
echo -e "多个关键字可以用\033[30;47m | \033[0m号分隔"
echo -e "\033[32m支持正则表达式\033[0m空格请使用\033[30;47m + \033[0m号替代"
echo -----------------------------------------------
echo -e " 000 \033[31m删除\033[0m关键字"
echo -e " 回车 取消输入并返回上级菜单"
echo -----------------------------------------------
read -p "请输入关键字 > " exclude
if [ -z "$exclude" ]; then
linkset
elif [ "$exclude" = '000' ]; then
echo -----------------------------------------------
exclude=''
echo -e "\033[31m 已删除节点过滤关键字!!!\033[0m"
fi
setconfig exclude \'$exclude\'
linkset
}
linkfilter2(){
[ -z "$include" ] && include="未设置"
echo -----------------------------------------------
echo -e "\033[44m 实验性功能遇问题请加TG群反馈\033[42;30m t.me/clashfm \033[0m"
echo -e "\033[33m当前筛选关键字\033[47;30m$include\033[0m"
echo -----------------------------------------------
echo -e "\033[33m仅有匹配关键字的节点才会被【导入】\033[0m"
echo -e "多个关键字可以用\033[30;47m | \033[0m号分隔"
echo -e "\033[32m支持正则表达式\033[0m空格请使用\033[30;47m + \033[0m号替代"
echo -----------------------------------------------
echo -e " 000 \033[31m删除\033[0m关键字"
echo -e " 回车 取消输入并返回上级菜单"
echo -----------------------------------------------
read -p "请输入关键字 > " include
if [ -z "$include" ]; then
linkset
elif [ "$include" = '000' ]; then
echo -----------------------------------------------
include=''
echo -e "\033[31m 已删除节点匹配关键字!!!\033[0m"
fi
setconfig include \'$include\'
linkset
}
linkset(){
if [ -n "$Url" ];then
[ -z "$skip_cert" ] && skip_cert=已开启
echo -----------------------------------------------
echo -e "\033[47;30m请检查输入的链接是否正确\033[0m"
echo -e "\033[32;4m$Url\033[0m"
echo -----------------------------------------------
echo -e " 1 \033[36m生成配置文件\033[0m原文件将被备份"
echo -e " 2 设置\033[31m节点过滤\033[0m关键字 \033[47;30m$exclude\033[0m"
echo -e " 3 设置\033[32m节点筛选\033[0m关键字 \033[47;30m$include\033[0m"
echo -e " 4 选取在线\033[33m配置规则模版\033[0m"
echo -e " 5 \033[0m选取在线生成服务器\033[0m"
echo -e " 6 \033[0m跳过本地证书验证 \033[36m$skip_cert\033[0m ————自建tls节点务必开启"
echo -----------------------------------------------
echo -e " 0 \033[31m取消导入\033[0m并返回上级菜单"
echo -----------------------------------------------
read -p "请输入对应数字 > " num
if [ -z "$num" ]; then
clashlink
elif [ "$num" = '0' ]; then
clashlink
elif [ "$num" = '1' ]; then
#将用户链接写入mark
sed -i '/Https=*/'d $ccfg
setconfig Url \'$Url\'
Https=""
#获取在线yaml文件
$clashdir/start.sh getyaml
startover
exit;
elif [ "$num" = '2' ]; then
linkfilter
linkset
elif [ "$num" = '3' ]; then
linkfilter2
linkset
elif [ "$num" = '4' ]; then
linkconfig
linkset
elif [ "$num" = '5' ]; then
linkserver
linkset
elif [ "$num" = '6' ]; then
echo -----------------------------------------------
[ "$skip_cert" = "未开启" ] && skip_cert=已开启 || skip_cert=未开启
setconfig skip_cert $skip_cert
linkset
else
errornum
linkset
fi
clashlink
fi
}
getlink(){
#设置输入循环
i=1
while [ $i -le 99 ]
do
echo -----------------------------------------------
echo -e "\033[44m 遇问题请加TG群反馈\033[42;30m t.me/clashfm \033[0m"
echo -e "\033[31m本功能依赖第三方网站在线服务实现脚本本身不提供任何代理服务\033[0m"
echo -----------------------------------------------
echo -e "支持批量导入订阅文件的在线链接"
echo -----------------------------------------------
echo -e " 0 \033[31m撤销输入\033[0m"
echo -e "回车 \033[32m完成输入\033[0m并\033[33m开始导入\033[0m配置文件"
echo -----------------------------------------------
read -p "请输入第${i}个链接 > " url
test=$(echo $url | grep "://")
url=`echo ${url/\ \(*\)/''}` #删除恶心的超链接内容
url=`echo ${url/*\&url\=/""}` #将clash完整链接还原成单一链接
url=`echo ${url/\&config\=*/""}` #将clash完整链接还原成单一链接
url=`echo ${url//\&/\%26}` #将分隔符 & 替换成urlcode%26
if [ -n "$test" ];then
if [ -z "$Url" ];then
Url="$url"
else
Url="$Url"\|"$url"
fi
i=$((i+1))
elif [ -z "$url" ];then
[ -n "$Url" ] && linkset
elif [ "$url" = 0 ];then
echo -----------------------------------------------
echo -e "\033[31m已撤销并删除所有已输入的链接\033[0m"
Url=""
sleep 1
clashlink
else
echo -----------------------------------------------
echo -e "\033[31m请输入正确的订阅链接\033[0m"
fi
done
####
echo -----------------------------------------------
echo 输入太多啦,可能会导致订阅失败!
echo "多个较短的链接请尽量用“|”分隔以一次性输入!"
clashlink
}
getlink2(){
echo -----------------------------------------------
echo -e "\033[33m仅限导入完整clash配置文件链接\033[0m"
echo -e "可以使用\033[32m https://acl4ssr.netlify.app \033[0m在线生成配置文件"
echo -e "\033[36m导入后如无法运行请使用【导入订阅】功能"
echo -----------------------------------------------
echo -e "\033[33m0 返回上级菜单\033[0m"
echo -----------------------------------------------
read -p "请输入完整链接 > " Https
test=$(echo $Https | grep -iE "http.*://" )
Https=`echo ${Https/\ \(*\)/''}` #删除恶心的超链接内容
if [ -n "$Https" -a -n "$test" ];then
echo -----------------------------------------------
echo -e 请检查输入的链接是否正确:
echo -e "\033[4m$Https\033[0m"
read -p "确认导入配置文件原配置文件将被更名为config.yaml.bak![1/0] > " res
if [ "$res" = '1' ]; then
#将用户链接写入mark
sed -i '/Url=*/'d $ccfg
setconfig Https \'$Https\'
#获取在线yaml文件
$clashdir/start.sh getyaml
startover
exit;
fi
elif [ "$Https" = 0 ];then
clashlink
else
echo -----------------------------------------------
echo -e "\033[31m请输入正确的配置文件链接地址\033[0m"
echo -e "\033[33m链接地址必须是http或者https开头的形式\033[0m"
clashlink
fi
}
clashlink(){
[ -z "$rule_link" ] && rule_link=1
[ -z "$server_link" ] && server_link=1
echo -----------------------------------------------
echo -e "\033[30;47m 欢迎使用导入配置文件功能!\033[0m"
echo -----------------------------------------------
echo -e " 1 在线导入\033[36m订阅\033[0m并生成Clash配置文件"
echo -e " 2 在线导入\033[33mClash\033[0m配置文件"
echo -e " 3 设置\033[31m节点过滤\033[0m关键字 \033[47;30m$exclude\033[0m"
echo -e " 4 设置\033[32m节点筛选\033[0m关键字 \033[47;30m$include\033[0m"
echo -e " 5 选取\033[33mClash配置规则\033[0m在线模版"
echo -e " 6 选择在线生成服务器-subconverter"
echo -e " 7 \033[36m还原\033[0m之前的配置文件"
echo -e " 8 \033[33m手动更新\033[0m配置文件"
echo -e " 9 设置\033[36m自动更新\033[0m配置文件"
echo -----------------------------------------------
echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num
if [ -z "$num" ];then
errornum
clashsh
elif [ "$num" = 1 ];then
if [ -n "$Url" ];then
echo -----------------------------------------------
echo -e "\033[33m检测到已记录的订阅链接\033[0m"
echo -e "\033[4;32m$Url\033[0m"
echo -----------------------------------------------
read -p "清空链接/追加导入?[1/0] > " res
if [ "$res" = '1' ]; then
Url=""
echo -----------------------------------------------
echo -e "\033[31m链接已清空\033[0m"
fi
fi
getlink
elif [ "$num" = 2 ];then
if [ -n "$Url" ];then
echo -----------------------------------------------
echo -e "\033[33m检测到已记录的订阅链接\033[0m"
echo -e "\033[4;32m$Url\033[0m"
echo -----------------------------------------------
read -p "清空链接/追加导入?[1/0] > " res
if [ "$res" = '1' ]; then
Url=""
echo -----------------------------------------------
echo -e "\033[31m链接已清空\033[0m"
fi
fi
getlink2
elif [ "$num" = 3 ];then
linkfilter
clashlink
elif [ "$num" = 4 ];then
linkfilter2
clashlink
elif [ "$num" = 5 ];then
linkconfig
clashlink
elif [ "$num" = 6 ];then
linkserver
clashlink
elif [ "$num" = 7 ];then
yamlbak=$yaml.bak
if [ ! -f "$yaml".bak ];then
echo -----------------------------------------------
echo -e "\033[31m没有找到配置文件的备份\033[0m"
else
echo -----------------------------------------------
echo -e 备份文件共有"\033[32m`wc -l < $yamlbak`\033[0m"行内容,当前文件共有"\033[32m`wc -l < $yaml`\033[0m"行内容
read -p "确认还原配置文件?此操作不可逆![1/0] > " res
if [ "$res" = '1' ]; then
mv $yamlbak $yaml
echo -----------------------------------------------
echo -e "\033[32m配置文件已还原请手动重启clash服务\033[0m"
else
echo -----------------------------------------------
echo -e "\033[31m操作已取消返回上级菜单\033[0m"
fi
fi
clashsh
elif [ "$num" = 8 ];then
if [ -z "$Url" -a -z "$Https" ];then
echo -----------------------------------------------
echo -e "\033[31m没有找到你的订阅链接请先输入链接\033[0m"
sleep 2
clashlink
else
echo -----------------------------------------------
echo -e "\033[33m当前系统记录的订阅链接为\033[0m"
echo -e "\033[4;32m$Url\033[0m"
echo -----------------------------------------------
read -p "确认更新配置文件?[1/0] > " res
if [ "$res" = '1' ]; then
$clashdir/start.sh getyaml
startover
exit;
fi
clashlink
fi
elif [ "$num" = 9 ];then
clashcron
elif [ "$num" = 0 ];then
clashsh
else
errornum
clashsh
fi
}
#下载更新相关
gettar(){
webget /tmp/clashfm.tar.gz $tarurl
[ "$result" != "200" ] && echo "文件下载失败!" && exit 1
#解压
echo -----------------------------------------------
echo 开始解压文件!
mkdir -p $clashdir > /dev/null
tar -zxvf '/tmp/clashfm.tar.gz' -C $clashdir/
[ $? -ne 0 ] && echo "文件解压失败!" && rm -rf /tmp/clashfm.tar.gz && exit 1
#初始化文件目录
[ -f "$clashdir/mark" ] || echo '#标识clash运行状态的文件不明勿动' > $clashdir/mark
#判断系统类型写入不同的启动文件
if [ -f /etc/rc.common ];then
#设为init.d方式启动
mv $clashdir/clashservice /etc/init.d/clash
chmod 777 /etc/init.d/clash
else
[ -w /etc/systemd/system ] && sysdir=/etc/systemd/system
[ -w /usr/lib/systemd/system ] && sysdir=/usr/lib/systemd/system
if [ -n "$sysdir" ];then
#设为systemd方式启动
mv $clashdir/clash.service $sysdir/clash.service
sed -i "s%/etc/clash%$clashdir%g" $sysdir/clash.service
systemctl daemon-reload
else
#设为保守模式启动
sed -i '/start_old=*/'d $clashdir/mark
echo start_old=已开启 >> $clashdir/mark
fi
fi
#修饰文件及版本号
shtype=sh && [ -n "$(ls -l /bin/sh|grep -o dash)" ] && shtype=bash
sed -i "s%#!/bin/sh%#!/bin/$shtype%g" $clashdir/start.sh
chmod 777 $clashdir/start.sh
sed -i '/versionsh_l=*/'d $clashdir/mark
echo versionsh_l=$release_new >> $clashdir/mark
#设置环境变量
[ -w ~/.bashrc ] && profile=~/.bashrc
[ -w /etc/profile ] && profile=/etc/profile
sed -i '/alias clash=*/'d $profile
echo "alias clash=\"$shtype $clashdir/clash.sh\"" >> $profile #设置快捷命令环境变量
sed -i '/export clashdir=*/'d $profile
echo "export clashdir=\"$clashdir\"" >> $profile #设置clash路径环境变量
#删除临时文件
rm -rf /tmp/clashfm.tar.gz
rm -rf $clashdir/clashservice
rm -rf $clashdir/clash.service
}
getsh(){
echo -----------------------------------------------
echo -e "当前脚本版本为:\033[33m $versionsh_l \033[0m"
echo -e "最新脚本版本为:\033[32m $release_new \033[0m"
echo -----------------------------------------------
read -p "是否更新脚本?[1/0] > " res
if [ "$res" = '1' ]; then
tarurl=$update_url/bin/clashfm.tar.gz
#下载更新
gettar
#提示
echo -----------------------------------------------
echo -e "\033[32m管理脚本更新成功!\033[0m"
echo -----------------------------------------------
exit;
else
update
fi
}
getcpucore(){
cputype=$(uname -ms | tr ' ' '_' | tr '[A-Z]' '[a-z]')
[ -n "$(echo $cputype | grep -E "linux.*armv.*")" ] && cpucore="armv5"
[ -n "$(echo $cputype | grep -E "linux.*armv7.*")" ] && [ -n "$(cat /proc/cpuinfo | grep vfp)" ] && cpucore="armv7"
[ -n "$(echo $cputype | grep -E "linux.*aarch64.*|linux.*armv8.*")" ] && cpucore="armv8"
[ -n "$(echo $cputype | grep -E "linux.*86.*")" ] && cpucore="386"
[ -n "$(echo $cputype | grep -E "linux.*86_64.*")" ] && cpucore="amd64"
if [ -n "$(echo $cputype | grep -E "linux.*mips.*")" ];then
mipstype=$(echo -n I | hexdump -o | awk '{ print substr($2,6,1); exit}') #通过判断大小端判断mips或mipsle
[ "$mipstype" = "1" ] && cpucore="mipsle-softfloat" || cpucore="mips-softfloat"
fi
[ -n "$cpucore" ] && setconfig cpucore $cpucore
}
setcpucore(){
cpucore_list="armv5 armv7 armv8 386 amd64 \nmipsle-softfloat mipsle-hardfloat mips-softfloat"
echo -----------------------------------------------
echo -e "\033[31m仅适合脚本无法正确识别核心或核心无法正常运行时使用\033[0m"
echo -e "当前可供在线下载的处理器架构为:"
echo -e "\033[32m$cpucore_list\033[0m"
echo -e "如果您的CPU架构未在以上列表中请运行【uname -a】命令,并复制好返回信息"
echo -e "之后前往 t.me/clashfm 群提交或 github.com/juewuy/ShellClash 提交issue"
echo -----------------------------------------------
read -p "请手动输入处理器架构 > " cpucore
if [ -z "$(echo $cpucore_list |grep "$cpucore")" ];then
echo -e "\033[31m请输入正确的处理器架构\033[0m"
sleep 1
cpucore=""
else
setconfig cpucore $cpucore
fi
}
getcore(){
[ -z "$clashcore" ] && clashcore=clashpre
[ -z "$cpucore" ] && getcpucore
#生成链接
corelink="$update_url/bin/$clashcore/clash-linux-$cpucore"
#获取在线clash核心文件
webget /tmp/clash.new $corelink
if [ "$result" != "200" ];then
exit 1
else
mv -f /tmp/clash.new $bindir/clash
chmod 777 $bindir/clash #授予权限
fi
}
setcore(){
#获取核心及版本信息
[ ! -f $clashdir/clash ] && clashcore="未安装核心"
###
echo -----------------------------------------------
[ -z "$cpucore" ] && getcpucore
echo -e "当前clash核心\033[47;30m $clashcore \033[46;30m$clashv\033[0m"
echo -e "当前系统处理器架构:\033[32m $cpucore \033[0m"
echo -e "\033[33m请选择需要使用的核心版本\033[0m"
echo -----------------------------------------------
echo "1 clash 稳定,内存占用小,推荐!"
echo "(官方正式版) 不支持Tun模式、混合模式"
echo
echo "2 clashpre 支持Tun模式、混合模式"
echo "(高级预览版) 内存占用更高"
echo
echo "3 手动指定处理器架构"
echo -----------------------------------------------
echo 0 返回上级菜单
read -p "请输入对应数字 > " num
if [ -z "$num" ]; then
errornum
update
elif [ "$num" = 0 ]; then
update
elif [ "$num" = 1 ]; then
clashcore=clash
version=$clash_v
elif [ "$num" = 2 ]; then
clashcore=clashpre
version=$clashpre_v
elif [ "$num" = 3 ]; then
setcpucore
setcore
else
errornum
update
fi
echo -----------------------------------------------
echo 在线获取clash核心文件……
getcore
if [ "$?" = 0 ];then
echo -e "\033[32m$clashcore核心下载成功\033[0m"
setconfig clashcore $clashcore
setconfig clashv $version
else
echo -e "\033[31m核心文件下载失败\033[0m"
fi
}
getgeo(){
webget /tmp/Country.mmdb $update_url/bin/Country.mmdb
if [ "$result" != "200" ];then
exit 1
else
mv -f /tmp/Country.mmdb $bindir/Country.mmdb
fi
}
setgeo(){
echo -----------------------------------------------
echo -e "当前GeoIP版本为\033[33m $Geo_v \033[0m"
echo -e "最新GeoIP版本为\033[32m $GeoIP_v \033[0m"
echo -----------------------------------------------
read -p "是否更新数据库文件?[1/0] > " res
if [ "$res" = '1' ]; then
echo -----------------------------------------------
echo 正在从服务器获取数据库文件…………
getgeo
if [ "$?" != 0 ];then
echo -----------------------------------------------
echo -e "\033[31m文件下载失败\033[0m"
else
echo -----------------------------------------------
echo -e "\033[32mGeoIP数据库文件下载成功\033[0m"
setconfig Geo_v $GeoIP_v
fi
else
update
fi
}
getdb(){
echo -----------------------------------------------
echo -e "\033[36m安装本地版dashboard管理面板\033[0m"
echo -e "\033[32m打开管理面板的速度更快且更稳定\033[0m"
echo -----------------------------------------------
echo -e "请选择面板\033[33m安装类型\033[0m"
echo -----------------------------------------------
echo -e " 1 安装\033[32m官方面板\033[0m(约500kb)"
echo -e " 2 安装\033[32mYacd面板\033[0m(约1.1mb)"
echo -e " 3 卸载\033[33m本地面板\033[0m"
echo " 0 返回上级菜单"
read -p "请输入对应数字 > " num
if [ -z "$num" ];then
update
elif [ "$num" = '1' ]; then
db_type=clashdb
elif [ "$num" = '2' ]; then
db_type=yacd
elif [ "$num" = '3' ]; then
read -p "确认卸载本地面板?(1/0) > " res
if [ "$res" = 1 ];then
rm -rf /www/clash
rm -rf $clashdir/ui
echo -----------------------------------------------
echo -e "\033[31m面板已经卸载\033[0m"
sleep 1
fi
update
else
errornum
update
fi
echo -----------------------------------------------
echo -e "请选择面板\033[33m安装目录\033[0m"
echo -----------------------------------------------
echo -e " 1 在$clashdir/ui目录安装(推荐安装后会自动重启clash服务)"
echo -e " 2 在/www/clash目录安装(依赖Openwrt的Nginx服务可能失败)"
echo -----------------------------------------------
echo " 0 返回上级菜单"
read -p "请输入对应数字 > " num
if [ -z "$num" ];then
update
elif [ "$num" = '1' ]; then
dbdir=$clashdir/ui
hostdir=":$db_port/ui"
elif [ "$num" = '2' ]; then
dbdir=/www/clash
hostdir='/clash'
else
update
fi
#下载及安装
if [ -d /www/clash -o -d $clashdir/ui ];then
echo -----------------------------------------------
echo -e "\033[31m检测到您已经安装过本地面板了\033[0m"
echo -----------------------------------------------
read -p "是否覆盖安装?[1/0] > " res
if [ -z "$res" ]; then
update
elif [ "$res" = 1 ]; then
rm -rf /www/clash
rm -rf $clashdir/ui
else
update
fi
fi
dblink="${update_url}/bin/${db_type}.tar.gz"
echo -----------------------------------------------
echo 正在连接服务器获取安装文件…………
webget /tmp/clashdb.tar.gz $dblink
if [ "$result" != "200" ];then
echo -----------------------------------------------
echo -e "\033[31m文件下载失败\033[0m"
echo -----------------------------------------------
getdb
else
echo -e "\033[33m下载成功正在解压文件\033[0m"
mkdir -p $dbdir > /dev/null
tar -zxvf "/tmp/clashdb.tar.gz" -C $dbdir > /dev/null
[ $? -ne 0 ] && echo "文件解压失败!" && rm -rf /tmp/clashfm.tar.gz && exit 1
#修改默认host和端口
if [ "$db_type" = "clashdb" ];then
sed -i "s/127.0.0.1/${host}/g" $dbdir/static/js/*.js
sed -i "s/9090/${db_port}/g" $dbdir/static/js/*.js
else
sed -i "s/127.0.0.1/${host}/g" $dbdir/app*.js
sed -i "s/7892/${db_port}/g" $dbdir/app*.js
fi
#如果clash在运行则重启clash服务
[ "$dbdir" != "/www/clash" ] && [ -n "$PID" ] && $clashdir/start.sh restart
#写入配置文件
setconfig hostdir \'$hostdir\'
echo -----------------------------------------------
echo -e "\033[32m面板安装成功\033[0m"
echo -e "\033[36m请使用\033[32;4mhttp://$host$hostdir\033[0;36m访问面板\033[0m"
rm -rf /tmp/clashdb.tar.gz
sleep 1
fi
}
setserver(){
echo -----------------------------------------------
echo -e "\033[30;47m您可以在此处切换在线更新时使用的资源地址\033[0m"
echo -e "当前源:\033[4;32m$update_url\033[0m"
echo -----------------------------------------------
echo -e " 1 Jsdelivr-CDN源(test版本)"
echo -e " 2 Jsdelivr-CDN源(release版本)"
echo -e " 3 Github源(test版本需开启clash服务)"
echo -e " 4 Gitee源(release版本可能滞后)"
echo -e " 5 自定义输入(请务必确保路径正确)"
echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num
if [ -z "$num" ]; then
errornum
update
elif [ "$num" = 1 ]; then
update_url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master'
elif [ "$num" = 2 ]; then
update_url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash'
elif [ "$num" = 3 ]; then
update_url='https://raw.githubusercontent.com/juewuy/ShellClash/master'
elif [ "$num" = 4 ]; then
update_url='https://gitee.com/juewuy/ShellClash/raw/master'
elif [ "$num" = 5 ]; then
echo -----------------------------------------------
read -p "请输入个人源路径 > " update_url
if [ -z "$update_url" ];then
echo -----------------------------------------------
echo -e "\033[31m取消输入返回上级菜单\033[0m"
update
fi
elif [ "$num" = 9 ]; then
update_url='http://192.168.31.30:8080/clash-for-Miwifi'
else
errornum
update
fi
#写入mark文件
setconfig update_url \'$update_url\'
echo -----------------------------------------------
echo -e "\033[32m源地址更新成功\033[0m"
release_new=""
update
}
checkupdate(){
if [ -z "$release_new" ];then
if [ "$update_url" = "https://cdn.jsdelivr.net/gh/juewuy/ShellClash" ];then
webget /tmp/clashrelease https://github.com.cnpmjs.org/juewuy/ShellClash/releases/latest echoon rediroff 2>/tmp/clashrelease
release_new=$( cat /tmp/clashrelease | grep -aoE "releases/tag/.*" | awk -F '[/" ]' '{print $3}')
[ -z "$release_new" ] && release_new=master
update_url=$update_url@$release_new
fi
webget /tmp/clashversion $update_url/bin/version echooff
[ "$result" = "200" ] && source /tmp/clashversion || echo -e "\033[31m检查更新失败\033[0m"
[ -z "$release_new" ] && release_new=$versionsh
rm -rf /tmp/clashversion
rm -rf /tmp/clashrelease
fi
}
update(){
echo -----------------------------------------------
echo -ne "\033[32m正在检查更新\033[0m\r"
checkupdate
[ "$clashcore" = "clash" ] && clash_n=$clash_v || clash_n=$clashpre_v
echo -e "\033[30;47m欢迎使用更新功能\033[0m"
echo -----------------------------------------------
echo -e " 1 更新\033[36m管理脚本 \033[33m$versionsh_l\033[0m > \033[32m$versionsh\033[0m"
echo -e " 2 切换\033[33mclash核心 \033[33m$clashv\033[0m > \033[32m$clash_n\033[0m"
echo -e " 3 更新\033[32mGeoIP数据库 \033[33m$Geo_v\033[0m > \033[32m$GeoIP_v\033[0m"
echo -e " 4 安装本地\033[35mDashboard\033[0m面板"
echo -----------------------------------------------
echo -e " 7 切换\033[36m安装源\033[0m地址"
echo -e " 8 鸣谢"
echo -e " 9 \033[31m卸载\033[34mShellClash\033[0m"
echo -e " 0 返回上级菜单"
echo -----------------------------------------------
read -p "请输入对应数字 > " num
if [ -z "$num" ]; then
errornum
clashsh
elif [ "$num" = 0 ]; then
clashsh
elif [ "$num" = 1 ]; then
getsh
elif [ "$num" = 2 ]; then
setcore
update
elif [ "$num" = 3 ]; then
setgeo
update
elif [ "$num" = 4 ]; then
getdb
update
elif [ "$num" = 7 ]; then
setserver
elif [ "$num" = 8 ]; then
echo -----------------------------------------------
echo -e "感谢:\033[32mClash \033[0m作者\033[36m Dreamacro\033[0m 项目地址:\033[32mhttps://github.com/Dreamacro/clash\033[0m"
echo -e "感谢:\033[32msubconverter \033[0m作者\033[36m tindy2013\033[0m 项目地址:\033[32mhttps://github.com/tindy2013/subconverter\033[0m"
echo -e "感谢:\033[32malecthw提供的GeoIP数据库\033[0m 项目地址:\033[32mhttps://github.com/alecthw/mmdb_china_ip_list\033[0m"
echo -e "感谢:\033[32myacd \033[0m作者\033[36m haishanh\033[0m 项目地址:\033[32mhttps://github.com/haishanh/yacd\033[0m"
echo -e "感谢:\033[32m更多的帮助过我的人\033[0m"
sleep 2
update
elif [ "$num" = 9 ]; then
read -p "确认卸载ShellClash警告该操作不可逆[1/0] " res
if [ "$res" = '1' ]; then
$clashdir/start.sh stop
rm -rf $clashdir
rm -rf /etc/init.d/clash
rm -rf /etc/systemd/system/clash.service
rm -rf /usr/lib/systemd/system/clash.service
rm -rf /www/clash
[ -w ~/.bashrc ] && profile=~/.bashrc
[ -w /etc/profile ] && profile=/etc/profile
sed -i '/alias clash=*/'d $profile
sed -i '/export clashdir=*/'d $profile
sed -i '/http*_proxy/'d $profile
sed -i '/HTTP*_PROXY/'d $profile
source $profile > /dev/null 2>&1
echo -----------------------------------------------
echo -e "\033[36m已卸载ShellClash相关文件有缘再会\033[0m"
echo -e "\033[33m请手动关闭当前窗口以重置环境变量\033[0m"
echo -----------------------------------------------
exit
fi
echo -e "\033[31m操作已取消\033[0m"
update
else
errornum
clashsh
fi
exit;
}
#新手引导
userguide(){
whichmod(){
echo -----------------------------------------------
echo -e "\033[33m是否需要代理UDP流量(主要用于游戏) \033[0m"
echo -----------------------------------------------
echo -e " 1 \033[0m不代理UDP流量(可能会导致一部分游戏/应用无法连接)\033[0m"
modinfo tun >/dev/null 2>&1 && [ "$?" = 0 ] && \
echo -e " 2 \033[0m使用Tun虚拟网卡代理UDP流量(更低的延迟但更多的CPU消耗)\033[0m" || \
echo -e " 0 \033[0m使用Tun模式(你的设备不支持此模式,如为虚拟机运行请调整虚拟网卡设置)\033[0m"
[ -n "$(iptables -j TPROXY 2>&1 | grep 'on-port')" ] && \
echo -e " 3 \033[0m使用Tproxy模式代理UDP流量(较低CPU消耗但更高的延迟)033[0m"
echo -----------------------------------------------
read -p "请输入对应数字 > " num
if [ -z "$num" ] || [ "$num" -gt 4 ];then
errornum
whichmod
elif [ "$num" = 1 ];then
setconfig redir_mod "Redir模式"
setconfig clashcore "clash"
elif [ "$num" = 2 ];then
setconfig redir_mod "混合模式"
setconfig clashcore "clashpre"
elif [ "$num" = 3 ];then
setconfig redir_mod "Redir模式"
setconfig clashcore "clash"
setconfig tproxy_mod "已开启"
fi
}
forwhat(){
echo -----------------------------------------------
echo -e "\033[30;46m 欢迎使用ShellClash新手引导 \033[0m"
echo -----------------------------------------------
echo -e "\033[33m请先选择你的使用环境 \033[0m"
echo -e "\033[0m(你之后依然可以在设置中更改各种配置)\033[0m"
echo -----------------------------------------------
echo -e " 1 \033[32m各类路由设备\033[0m配置局域网透明路由"
echo -e " 2 \033[36mLinux桌面系统\033[0m仅配置本机路由"
echo -e " 3 \033[32m服务器Linux系统\033[0m仅配置本机路由"
echo -e " 4 \033[36m多功能设备\033[0m配置本机及局域网路由"
echo -----------------------------------------------
read -p "请输入对应数字 > " num
if [ -z "$num" ] || [ "$num" -gt 4 ];then
errornum
forwhat
elif [ "$num" = 1 ];then
whichmod
elif [ "$num" = 2 -o "$num" = 3 ];then
setconfig redir_mod "纯净模式"
setconfig clashcore "clash"
echo -----------------------------------------------
echo -e "\033[36m请选择设置本机代理的方式\033[0m"
localproxy
elif [ "$num" = 4 ];then
whichmod
fi
}
forwhat
dir_size=$(df $clashdir | awk '{print $4}' | sed 1d)
if [ "$dir_size" -lt 10240 ];then
echo -e "\033[33m检测到你的安装目录空间不足10M是否开启小闪存模式\033[0m"
echo -e "\033[0m开启后核心及数据库文件将被下载到内存中这将占用一部分内存空间\033[0m"
echo -e "\033[0m每次开机后首次运行clash时都会自动的重新下载相关文件\033[0m"
read -p "是否开启?(1/0) > " res
[ "$res" = 1 ] && setconfig bindir="/tmp/clash_$USER"
fi
echo -----------------------------------------------
echo -e "\033[33m安装本地Dashboard面板可以更快捷的管理clash内置规则\033[0m"
read -p "需要安装本地Dashboard面板吗(1/0) > " res
[ "$res" = 1 ] && getdb
echo -----------------------------------------------
echo -e "\033[32m请导入订阅链接或者导入配置文件\033[0m"
read -p "开始导入?(1/0) > " res
[ "$res" = 1 ] && clashlink
clashsh
}
#测试菜单
testcommand(){
echo -----------------------------------------------
echo -e "\033[30;47m这里是测试命令菜单\033[0m"
echo -e "\033[33m如遇问题尽量运行相应命令后截图发群\033[0m"
echo -e "磁盘占用/所在目录:"
du -sh $clashdir
echo -----------------------------------------------
echo " 1 查看clash运行时的报错信息"
echo " 2 查看系统DNS端口(:53)占用 "
echo " 3 测试ssl加密aes-128-gcm跑分"
echo " 4 查看iptables端口转发详情"
echo " 5 查看config.yaml前40行"
echo " 6 测试代理服务器连通性google.tw)"
echo " 7 重新进入新手引导"
echo " 9 查看后台脚本运行日志"
echo -----------------------------------------------
echo " 0 返回上级目录!"
read -p "请输入对应数字 > " num
if [ -z "$num" ]; then
errornum
clashsh
elif [ "$num" = 0 ]; then
clashsh
elif [ "$num" = 1 ]; then
$clashdir/start.sh stop
echo -----------------------------------------------
$clashdir/clash -t -d $clashdir
[ "$?" = 0 ] && testover=32m测试通过|| testover=31m出现错误请截图后到TG群询问
echo -e "\033[$testover\033[0m"
exit;
elif [ "$num" = 2 ]; then
echo -----------------------------------------------
netstat -ntulp |grep 53
echo -----------------------------------------------
echo -e "可以使用\033[44m netstat -ntulp |grep xxx \033[0m来查询任意(xxx)端口"
exit;
elif [ "$num" = 3 ]; then
echo -----------------------------------------------
openssl speed -multi 4 -evp aes-128-gcm
echo -----------------------------------------------
exit;
elif [ "$num" = 4 ]; then
echo -----------------------------------------------
iptables -t nat -L PREROUTING --line-numbers
echo -----------------------------------------------
iptables -t nat -L clash --line-numbers
echo -----------------------------------------------
iptables -t nat -L clash_dns --line-numbers
exit;
elif [ "$num" = 5 ]; then
echo -----------------------------------------------
sed -n '1,40p' $yaml
echo -----------------------------------------------
exit;
elif [ "$num" = 6 ]; then
echo "注意依赖curl(不支持wget),且测试结果不保证一定准确!"
delay=`curl -kx ${authentication}@127.0.0.1:$mix_port -o /dev/null -s -w '%{time_starttransfer}' 'https://google.tw' & { sleep 3 ; kill $! & }` > /dev/null 2>&1
delay=`echo |awk "{print $delay*1000}"` > /dev/null 2>&1
echo -----------------------------------------------
if [ `echo ${#delay}` -gt 1 ];then
echo -e "\033[32m连接成功响应时间为"$delay" ms\033[0m"
else
echo -e "\033[31m连接超时请重试或检查节点配置\033[0m"
fi
clashsh
elif [ "$num" = 7 ]; then
userguide
elif [ "$num" = 9 ]; then
echo -----------------------------------------------
cat $clashdir/log
exit;
else
errornum
clashsh
fi
}

595
scripts/start.sh Normal file
View File

@@ -0,0 +1,595 @@
#!/bin/sh
# Copyright (C) Juewuy
#脚本内部工具
getconfig(){
#加载配置文件
[ -z "$clashdir" ] && source /etc/profile > /dev/null
[ -z "$clashdir" ] && source ~/.bashrc > /dev/null
ccfg=$clashdir/mark
[ -f $ccfg ] && source $ccfg
#默认设置
[ -z "$bindir" ] && bindir=$clashdir
[ -z "$redir_mod" ] && [ "$USER" = "root" -o "$USER" = "admin" ] && redir_mod=Redir模式
[ -z "$redir_mod" ] && redir_mod=纯净模式
[ -z "$skip_cert" ] && skip_cert=已开启
[ -z "$common_ports" ] && common_ports=已开启
[ -z "$dns_mod" ] && dns_mod=redir_host
[ -z "$dns_over" ] && dns_over=已开启
[ -z "$modify_yaml" ] && modify_yaml=未开启
[ -z "$ipv6_support" ] && ipv6_support=未开启
[ -z "$start_old" ] && start_old=未开启
[ -z "$local_proxy" ] && local_proxy=未开启
[ -z "$mix_port" ] && mix_port=7890
[ -z "$redir_port" ] && redir_port=7892
[ -z "$db_port" ] && db_port=9999
[ -z "$dns_port" ] && dns_port=1053
[ -z "$dns_nameserver" ] && dns_nameserver='114.114.114.114, 223.5.5.5'
[ -z "$dns_fallback" ] && dns_fallback='1.0.0.1, 8.8.4.4'
#是否代理常用端口
[ "$common_ports" = "已开启" ] && ports='-m multiport --dports 53,587,465,995,993,143,80,443 '
}
setconfig(){
#参数1代表变量名参数2代表变量值,参数3即文件路径
[ -z "$3" ] && configpath=$clashdir/mark || configpath=$3
sed -i "/${1}*/"d $configpath
echo "${1}=${2}" >> $configpath
}
webget(){
[ -n "$(pidof clash)" ] && export all_proxy="http://127.0.0.1:$mix_port" #设置临时http代理
#参数【$1】代表下载目录【$2】代表在线地址
#参数【$3】代表输出显示【$4】不启用重定向
if curl --version > /dev/null 2>&1;then
[ "$3" = "echooff" ] && progress='-s' || progress='-#'
[ -z "$4" ] && redirect='-L' || redirect=''
result=$(curl -w %{http_code} --connect-timeout 5 $progress $redirect -ko $1 $2)
else
[ "$3" = "echooff" ] && progress='-q' || progress='-q --show-progress'
[ "$3" = "echoon" ] && progress=''
[ -z "$4" ] && redirect='' || redirect='--max-redirect=0'
wget -Y on $progress $redirect --no-check-certificate --timeout=5 -O $1 $2
[ $? -eq 0 ] && result="200"
fi
export all_proxy=''
}
logger(){
[ -n "$2" ] && echo -e "\033[$2m$1\033[0m"
echo `date "+%G-%m-%d %H:%M:%S"` $1 >> $clashdir/log
[ "$(wc -l $clashdir/log | awk '{print $1}')" -gt 30 ] && sed -i '1,5d' $clashdir/log
}
cronset(){
# 参数1代表要移除的关键字,参数2代表要添加的任务语句
crondir=/tmp/cron_$USER
crontab -l > $crondir
sed -i "/$1/d" $crondir
echo "$2" >> $crondir
crontab $crondir
rm -f $crondir
}
mark_time(){
start_time=`date +%s`
sed -i '/start_time*/'d $clashdir/mark
echo start_time=$start_time >> $clashdir/mark
}
#配置文件相关
getyaml(){
[ -z "$rule_link" ] && rule_link=1
[ -z "$server_link" ] && server_link=1
#前后端订阅服务器地址索引,可在此处添加!
Server=`sed -n ""$server_link"p"<<EOF
subcon.dlj.tf
subconverter.herokuapp.com
subcon.py6.pw
api.dler.io
api.wcc.best
EOF`
Config=`sed -n ""$rule_link"p"<<EOF
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_NoReject.ini
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_MultiMode.ini
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_AdblockPlus.ini
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Mini_AdblockPlus.ini
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_Netflix.ini
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_AdblockPlus.ini
https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/lhie1_clash.ini
https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/lhie1_dler.ini
https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/connershua_pro.ini
https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/connershua_backtocn.ini
https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/raw/dlercloud_lige_platinum.ini
https://subconverter.oss-ap-southeast-1.aliyuncs.com/Rules/RemoteConfig/special/basic.ini
https://subconverter.oss-ap-southeast-1.aliyuncs.com/Rules/RemoteConfig/special/netease.ini
EOF`
#如果传来的是Url链接则合成Https链接否则直接使用Https链接
if [ -z "$Https" ];then
Https="https://$Server/sub?target=clash&insert=true&new_name=true&scv=true&exclude=$exclude&include=$include&url=$Url&config=$Config"
markhttp=1
fi
#输出
echo -----------------------------------------------
echo 正在连接服务器获取配置文件…………链接地址为:
echo -e "\033[4;32m$Https\033[0m"
echo 可以手动复制该链接到浏览器打开并查看数据是否正常!
#获取在线yaml文件
yaml=$clashdir/config.yaml
yamlnew=/tmp/clash_config_$USER.yaml
rm -rf $yamlnew
webget $yamlnew $Https
if [ "$result" != "200" ];then
if [ -z "$markhttp" ];then
echo -----------------------------------------------
logger "配置文件获取失败!" 31
echo -e "\033[31m请尝试使用【导入订阅】功能\033[0m"
echo -----------------------------------------------
exit 1
else
if [ "$retry" -ge 5 ];then
logger "无法获取配置文件,请检查链接格式以及网络连接状态!" 31
exit 1
else
retry=$((retry+1))
logger "配置文件获取失败!" 31
echo -e "\033[32m尝试使用其他服务器获取配置\033[0m"
logger "正在重试第$retry次/共5次" 32
sed -i '/server_link=*/'d $ccfg
if [ "$server_link" -ge 5 ]; then
server_link=0
fi
server_link=$((server_link+1))
echo server_link=$server_link >> $ccfg
Https=""
getyaml
fi
fi
else
Https=""
#检测节点
if [ -z "$(cat $yamlnew | grep 'server:' | grep -v 'nameserver')" ];then
echo -----------------------------------------------
logger "获取到了配置文件,但似乎并不包含正确的节点信息!" 31
echo -----------------------------------------------
sed -n '1,30p' $yamlnew
echo -----------------------------------------------
echo -e "\033[33m请检查如上配置文件信息:\033[0m"
echo -----------------------------------------------
exit 1
fi
#检测旧格式
if cat $yamlnew | grep 'Proxy Group:' >/dev/null;then
echo -----------------------------------------------
logger "已经停止对旧格式配置文件的支持!!!" 31
echo -e "请使用新格式或者使用【导入节点/链接】功能!"
echo -----------------------------------------------
exit 1
fi
#检测不支持的加密协议
if cat $yamlnew | grep 'cipher: chacha20,' >/dev/null;then
echo -----------------------------------------------
logger "不支持chacha20加密请更换节点加密协议" 31
echo -----------------------------------------------
exit 1
fi
#如果不同则备份并替换文件
if [ -f $yaml ];then
cmp -s $yamlnew $yaml
[ "$?" = 0 ] && rm -f $yamlnew || mv -f $yaml $yaml.bak && mv -f $yamlnew $yaml
else
mv -f $yamlnew $yaml
fi
echo 配置文件已生成正在启动clash使其生效
#重启clash服务
$0 stop
$0 start
if [ "$?" = 0 ];then
logger "配置文件获取成功clash服务已启动"
exit 0
else
if [ -f $yaml.bak ];then
$0 stop
mv -f $yaml.bak $yaml
$0 start
[ "$?" = 0 ] && logger "已还原配置文件并重启clash" 32 && exit 0
logger "已还原配置文件但依然无法启动clash" 31 && exit 1
fi
fi
fi
}
modify_yaml(){
##########需要变更的配置###########
lan='allow-lan: true'
mode='mode: Rule'
log='log-level: info'
[ "$ipv6_support" = "已开启" ] && ipv6='ipv6: true' || ipv6='ipv6: false'
external="external-controller: 0.0.0.0:$db_port"
[ -d $clashdir/ui ] && db_ui=ui
[ "$redir_mod" != "Redir模式" ] && tun='tun: {enable: true, stack: system}' || tun='tun: {enable: false}'
exper='experimental: {ignore-resolve-fail: true, interface-name: en0}'
#dns配置
[ "$dns_over" = "未开启" ] && dns_local=', 127.0.0.1:53'
if [ "$dns_mod" = "fake-ip" ];then
dns='dns: {enable: true, listen: 0.0.0.0:'$dns_port', use-hosts: true, fake-ip-range: 198.18.0.1/16, enhanced-mode: fake-ip, fake-ip-filter: ["*.lan", "time.windows.com", "time.nist.gov", "time.apple.com", "time.asia.apple.com", "*.ntp.org.cn", "*.openwrt.pool.ntp.org", "time1.cloud.tencent.com", "time.ustc.edu.cn", "pool.ntp.org", "ntp.ubuntu.com", "ntp.aliyun.com", "ntp1.aliyun.com", "ntp2.aliyun.com", "ntp3.aliyun.com", "ntp4.aliyun.com", "ntp5.aliyun.com", "ntp6.aliyun.com", "ntp7.aliyun.com", "time1.aliyun.com", "time2.aliyun.com", "time3.aliyun.com", "time4.aliyun.com", "time5.aliyun.com", "time6.aliyun.com", "time7.aliyun.com", "*.time.edu.cn", "time1.apple.com", "time2.apple.com", "time3.apple.com", "time4.apple.com", "time5.apple.com", "time6.apple.com", "time7.apple.com", "time1.google.com", "time2.google.com", "time3.google.com", "time4.google.com", "music.163.com", "*.music.163.com", "*.126.net", "musicapi.taihe.com", "music.taihe.com", "songsearch.kugou.com", "trackercdn.kugou.com", "*.kuwo.cn", "api-jooxtt.sanook.com", "api.joox.com", "joox.com", "y.qq.com", "*.y.qq.com", "streamoc.music.tc.qq.com", "mobileoc.music.tc.qq.com", "isure.stream.qqmusic.qq.com", "dl.stream.qqmusic.qq.com", "aqqmusic.tc.qq.com", "amobile.music.tc.qq.com", "*.xiami.com", "*.music.migu.cn", "music.migu.cn", "*.msftconnecttest.com", "*.msftncsi.com", "localhost.ptlogin2.qq.com", "*.*.*.srv.nintendo.net", "*.*.stun.playstation.net", "xbox.*.*.microsoft.com", "*.*.xboxlive.com", "proxy.golang.org"], nameserver: ['$dns_nameserver', 127.0.0.1:53], fallback: ['$dns_fallback'], fallback-filter: {geoip: true}}'
else
dns='dns: {enable: true, ipv6: true, listen: 0.0.0.0:'$dns_port', use-hosts: true, enhanced-mode: redir-host, nameserver: ['$dns_nameserver$dns_local'], fallback: ['$dns_fallback'], fallback-filter: {geoip: true}}'
fi
###################################
#设置目录
yaml=$clashdir/config.yaml
tmpdir=/tmp/clash_$USER
#预删除需要添加的项目
a=$(grep -n "port:" $yaml | head -1 | cut -d ":" -f 1)
b=$(grep -n "^prox" $yaml | head -1 | cut -d ":" -f 1)
b=$((b-1))
mkdir -p $tmpdir > /dev/null
sed "${a},${b}d" $yaml > $tmpdir/rule.yaml
#跳过本地tls证书验证
[ "$skip_cert" = "已开启" ] && sed -i '10,99s/skip-cert-verify: false/skip-cert-verify: true/' $tmpdir/rule.yaml
#添加配置
cat > $tmpdir/set.yaml <<EOF
mixed-port: $mix_port
redir-port: $redir_port
authentication: ["$authentication"]
$lan
$mode
$log
$ipv6
external-controller: :$db_port
external-ui: $db_ui
secret: $secret
$tun
$exper
$dns
EOF
cat $tmpdir/set.yaml $tmpdir/rule.yaml > $tmpdir/config.yaml
if [ "$tmpdir" != "$bindir" ];then #如果没有使用小闪存模式
cmp -s $tmpdir/config.yaml $yaml
[ "$?" != 0 ] && mv -f $tmpdir/config.yaml $yaml || rm -f $tmpdir/config.yaml
fi
rm -f $tmpdir/set.yaml
rm -f $tmpdir/rule.yaml
}
#设置路由规则
start_redir(){
#流量过滤规则
iptables -t nat -N clash
iptables -t nat -A clash -d 0.0.0.0/8 -j RETURN
iptables -t nat -A clash -d 10.0.0.0/8 -j RETURN
iptables -t nat -A clash -d 127.0.0.0/8 -j RETURN
iptables -t nat -A clash -d 169.254.0.0/16 -j RETURN
iptables -t nat -A clash -d 172.16.0.0/12 -j RETURN
iptables -t nat -A clash -d 192.168.0.0/16 -j RETURN
iptables -t nat -A clash -d 224.0.0.0/4 -j RETURN
iptables -t nat -A clash -d 240.0.0.0/4 -j RETURN
for mac in $(cat $clashdir/mac); do
iptables -t nat -A clash -m mac --mac-source $mac -j RETURN
done
#设置防火墙流量转发
iptables -t nat -A clash -p tcp $ports-j REDIRECT --to-ports $redir_port
iptables -t nat -A PREROUTING -p tcp -j clash
#设置ipv6转发
if [ -n "ip6_nat" -a "$ipv6_support" = "已开启" ];then
ip6tables -t nat -N clashv6
for mac in $(cat $clashdir/mac); do
ip6tables -t nat -A clashv6 -m mac --mac-source $mac -j RETURN
done
ip6tables -t nat -A clashv6 -p tcp $ports-j REDIRECT --to-ports $redir_port
ip6tables -t nat -A PREROUTING -p tcp -j clashv6
fi
}
start_dns(){
#允许tun网卡接受流量
if [ "$redir_mod" = "Tun模式" -o "$redir_mod" = "混合模式" ];then
iptables -I FORWARD -o utun -j ACCEPT
[ "$ipv6_support" = "已开启" ] && ip6tables -I FORWARD -o utun -j ACCEPT > /dev/null 2>&1
fi
#设置dns转发
iptables -t nat -N clash_dns
for mac in $(cat $clashdir/mac); do
iptables -t nat -A clash_dns -m mac --mac-source $mac -j RETURN
done
iptables -t nat -A clash_dns -p udp --dport 53 -j REDIRECT --to $dns_port
iptables -t nat -A clash_dns -p tcp --dport 53 -j REDIRECT --to $dns_port
iptables -t nat -A PREROUTING -p udp -j clash_dns
#Google home DNS特殊处理
iptables -t nat -I PREROUTING -p tcp -d 8.8.8.8 -j clash_dns
iptables -t nat -I PREROUTING -p tcp -d 8.8.4.4 -j clash_dns
#ipv6DNS
ip6_nat=$(ip6tables -t nat -L 2>&1|grep -o 'Chain')
if [ -n "ip6_nat" ];then
ip6tables -t nat -N clashv6_dns > /dev/null 2>&1
for mac in $(cat $clashdir/mac); do
ip6tables -t nat -A clashv6_dns -m mac --mac-source $mac -j RETURN > /dev/null 2>&1
done
ip6tables -t nat -A clashv6_dns -p udp --dport 53 -j REDIRECT --to $dns_port > /dev/null 2>&1
ip6tables -t nat -A PREROUTING -p udp -j clashv6_dns > /dev/null 2>&1
else
ip6tables -I INPUT -p tcp --dport 53 -j REJECT
ip6tables -I INPUT -p udp --dport 53 -j REJECT
fi
}
start_udp(){
ip rule add fwmark 1 table 100
ip route add local default dev lo table 100
iptables -t mangle -N clash
iptables -t mangle -A clash -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A clash -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A clash -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A clash -d 169.254.0.0/16 -j RETURN
iptables -t mangle -A clash -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A clash -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A clash -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A clash -d 240.0.0.0/4 -j RETURN
iptables -t mangle -A clash -p udp -j TPROXY --on-port $redir_port --tproxy-mark 1
iptables -t mangle -A PREROUTING -p udp -j clash
}
stop_iptables(){
#重置iptables规则
iptables -t nat -D PREROUTING -p tcp -j clash > /dev/null 2>&1
iptables -t nat -D PREROUTING -p udp -j clash_dns > /dev/null 2>&1
iptables -t nat -D PREROUTING -p tcp -d 8.8.8.8 -j clash_dns > /dev/null 2>&1
iptables -t nat -D PREROUTING -p tcp -d 8.8.4.4 -j clash_dns > /dev/null 2>&1
iptables -t nat -F clash > /dev/null 2>&1
iptables -t nat -X clash > /dev/null 2>&1
iptables -t nat -F clash_dns > /dev/null 2>&1
iptables -t nat -X clash_dns > /dev/null 2>&1
iptables -D FORWARD -o utun -j ACCEPT > /dev/null 2>&1
#重置udp规则
iptables -t mangle -D PREROUTING -p udp -j clash > /dev/null 2>&1
iptables -t mangle -F clash > /dev/null 2>&1
iptables -t mangle -X clash > /dev/null 2>&1
#重置ipv6规则
ip6tables -t nat -D PREROUTING -p tcp -j clashv6 > /dev/null 2>&1
ip6tables -t nat -D PREROUTING -p udp -j clashv6_dns > /dev/null 2>&1
ip6tables -t nat -F clashv6 > /dev/null 2>&1
ip6tables -t nat -X clashv6 > /dev/null 2>&1
ip6tables -t nat -F clashv6_dns > /dev/null 2>&1
ip6tables -t nat -X clashv6_dns > /dev/null 2>&1
ip6tables -D FORWARD -o utun -j ACCEPT > /dev/null 2>&1
}
#面板配置保存相关
web_save(){
get_save(){
if curl --version > /dev/null 2>&1;then
curl -s -H "Authorization: Bearer ${secret}" -H "Content-Type:application/json" "$1"
elif [ -n "$(wget --help 2>&1|grep '\-\-method')" ];then
wget -q --header="Authorization: Bearer ${secret}" --header="Content-Type:application/json" -O - "$1"
else
logger 当前系统未安装curl且wget的版本太低无法保存节点配置 31
getconfig
cronset '保存节点配置'
fi
}
#使用get_save获取面板节点设置
get_save http://localhost:${db_port}/proxies | awk -F "{" '{for(i=1;i<=NF;i++) print $i}' | grep -E '^"all".*"Selector"' | grep -oE '"name".*"now".*",' | sed 's/"name"://g' | sed 's/"now"://g'| sed 's/"//g' > /tmp/clash_web_save_$USER
#对比文件,如果有变动则写入磁盘,否则清除缓存
cmp -s /tmp/clash_web_save_$USER $clashdir/web_save
[ "$?" = 0 ] && rm -rf /tmp/clash_web_save_$USER || mv -f /tmp/clash_web_save_$USER $clashdir/web_save
}
web_restore(){
put_save(){
if curl --version > /dev/null 2>&1;then
curl -sS -X PUT -H "Authorization: Bearer ${secret}" -H "Content-Type:application/json" "$1" -d "$2" >/dev/null
else
wget -q --method=PUT --header="Authorization: Bearer ${secret}" --header="Content-Type:application/json" --body-data="$2" "$1" >/dev/null
fi
}
#设置循环检测clash面板端口
i=1
while [ $i -lt 10 ]
do
sleep 1
if curl --version > /dev/null 2>&1;then
test=$(curl -s http://localhost:${db_port})
else
test=$(wget -q -O - http://localhost:${db_port})
fi
[ -n "$test" ] && i=10
done
#发送数据
num=$(cat $clashdir/web_save | wc -l)
for i in `seq $num`;
do
group_name=$(awk -F ',' 'NR=="'${i}'" {print $1}' $clashdir/web_save | sed 's/ /%20/g')
now_name=$(awk -F ',' 'NR=="'${i}'" {print $2}' $clashdir/web_save)
put_save http://localhost:${db_port}/proxies/${group_name} "{\"name\":\"${now_name}\"}"
done
exit 0
}
#启动相关
catpac(){
host=$(ubus call network.interface.lan status 2>&1 | grep \"address\" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}';)
[ -z "$host" ] && host=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep -E '192.|10.' | sed 's/.*inet.//g' | sed 's/\/[0-9][0-9].*$//g' | head -n 1)
[ -z "$host" ] && host=127.0.0.1
cat > /tmp/clash_pac <<EOF
function FindProxyForURL(url, host) {
if (
isInNet(host, "0.0.0.0", "255.0.0.0")||
isInNet(host, "10.0.0.0", "255.0.0.0")||
isInNet(host, "127.0.0.0", "255.0.0.0")||
isInNet(host, "224.0.0.0", "224.0.0.0")||
isInNet(host, "240.0.0.0", "240.0.0.0")||
isInNet(host, "172.16.0.0", "255.240.0.0")||
isInNet(host, "192.168.0.0", "255.255.0.0")||
isInNet(host, "169.254.0.0", "255.255.0.0")
)
return "DIRECT";
else
return "SOCKS5 $host:$mix_port; PROXY $host:$mix_port; DIRECT;"
}
EOF
cmp -s /tmp/clash_pac $bindir/ui/pac
[ "$?" = 0 ] && rm -rf /tmp/clash_pac || mv -f /tmp/clash_pac $bindir/ui/pac
}
bfstart(){
[ ! -d $bindir/ui ] && mkdir -p $bindir/ui
[ -z "$update_url" ] && update_url=https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master
#检查clash核心
if [ ! -f $bindir/clash ];then
if [ -f $clashdir/clash ];then
mv $clashdir/clash $bindir/clash && chmod 777 $bindir/clash
else
logger "未找到clash核心正在下载" 33
[ -z "$clashcore" ] && clashcore=clash
[ -z "$cpucore" ] && source $clashdir/getdate.sh && getcpucore
[ -z "$cpucore" ] && logger 找不到设备的CPU信息请手动指定处理器架构类型 31 && setcpucore
webget $bindir/clash "$update_url/bin/$clashcore/clash-linux-$cpucore"
[ "$?" = 1 ] && logger "核心下载失败,已退出!" 31 && rm -f $bindir/clash && exit 1
[ ! -x $bindir/clash ] && chmod +x $bindir/clash #检测可执行权限
clashv=$($bindir/clash -v | awk '{print $2}')
setconfig clashv $clashv
fi
fi
#检查数据库文件
if [ ! -f $bindir/Country.mmdb ];then
if [ -f $clashdir/Country.mmdb ];then
mv $clashdir/Country.mmdb $bindir/Country.mmdb
else
logger "未找到GeoIP数据库正在下载" 33
webget $bindir/Country.mmdb $update_url/bin/Country.mmdb
[ "$?" = 1 ] && logger "数据库下载失败,已退出!" 31 && rm -f $bindir/Country.mmdb && exit 1
GeoIP_v=$(date +"%Y%m%d")
setconfig GeoIP_v $GeoIP_v
fi
fi
#检查dashboard文件
if [ -f $clashdir/ui/index.html -a ! -f $bindir/ui/index.html ];then
cp -rf $clashdir/ui $bindir
fi
catpac #生成pac文件
#检查yaml配置文件
if [ ! -f $clashdir/config.yaml ];then
if [ -n "$Url" -o -n "$Https" ];then
logger "未找到配置文件,正在下载!" 33
getyaml
exit 0
else
logger "未找到配置文件链接,请先导入配置文件!" 31
exit 1
fi
fi
}
afstart(){
#读取配置文件
getconfig
$bindir/clash -t -d $bindir >/dev/null
if [ "$?" = 0 ];then
#修改iptables规则使流量进入clash
[ "$redir_mod" != "纯净模式" ] && [ "$dns_no" != "已禁用" ] && start_dns
[ "$redir_mod" != "纯净模式" ] && [ "$redir_mod" != "Tun模式" ] && start_redir
[ "$redir_mod" = "Redir模式" ] && [ "$tproxy_mod" = "已开启" ] && start_udp
#标记启动时间
mark_time
#设置本机代理
[ "$local_proxy" = "已开启" ] && $0 set_proxy $mix_port $db_port
#启用面板配置自动保存
cronset '#每10分钟保存节点配置' "*/10 * * * * test -n \"$(pidof clash)\" && $clashdir/start.sh web_save #每10分钟保存节点配置"
[ -f $clashdir/web_save ] && web_restore & #后台还原面板配置
else
logger "clash服务启动失败请查看报错信息" 31
logger `$bindir/clash -t -d $bindir 1>&0` 0
$0 stop &
exit 1
fi
exit 0
}
start_old(){
#使用传统后台执行二进制文件的方式执行
$bindir/clash -d $bindir >/dev/null &
afstart
daemon
}
case "$1" in
bfstart)
bfstart
;;
afstart)
afstart
;;
start)
[ -n "$(pidof clash)" ] && $0 stop #禁止多实例
getconfig
#检测必须文件并下载
bfstart
#使用内置规则强行覆盖config配置文件
[ "$modify_yaml" != "已开启" ] && modify_yaml
#使用不同方式启动clash服务
if [ "$start_old" = "已开启" ];then
start_old
elif [ -f /etc/rc.common ];then
/etc/init.d/clash start
elif [ "$USER" = "root" ];then
systemctl start clash.service
else
start_old
fi
;;
stop)
getconfig
web_save #保存面板配置
#删除守护进程&面板配置自动保存
cronset "clash保守模式守护进程"
cronset "保存节点配置"
#多种方式结束进程
if [ -f /etc/rc.common ];then
/etc/init.d/clash stop >/dev/null 2>&1
elif [ "$USER" = "root" ];then
systemctl stop clash.service >/dev/null 2>&1
fi
PID=$(pidof clash) && [ -n "$PID" ] && kill -9 $PID >/dev/null 2>&1
stop_iptables #清理iptables
[ "$local_proxy" = "已开启" ] && $0 unset_proxy #禁用本机代理
;;
restart)
$0 stop
$0 start
;;
getyaml)
getconfig
getyaml
;;
webget)
webget $1 $2 $3 $4
;;
web_save)
getconfig
web_save
;;
daemon)
getconfig
cronset '#clash保守模式守护进程' "*/1 * * * * test -z \"$(pidof clash)\" && $clashdir/start.sh restart #clash保守模式守护进程"
;;
set_proxy)
getconfig
#GNOME配置
if [ "$local_proxy_type" = "GNOME" ];then
gsettings set org.gnome.system.proxy autoconfig-url "http://127.0.0.1:$db_port/ui/pac"
gsettings set org.gnome.system.proxy mode "auto"
#KDE配置
elif [ "$local_proxy_type" = "KDE" ];then
kwriteconfig5 --file kioslaverc --group "Proxy Settings" --key "Proxy Config Script" "http://127.0.0.1:$db_port/ui/pac"
kwriteconfig5 --file kioslaverc --group "Proxy Settings" --key "ProxyType" 2
#环境变量方式
else
[ -w ~/.bashrc ] && profile=~/.bashrc
[ -w /etc/profile ] && profile=/etc/profile
echo 'export all_proxy=http://127.0.0.1:'"$mix_port" >> $profile
echo 'export ALL_PROXY=$all_proxy' >> $profile
fi
;;
unset_proxy)
#GNOME配置
if gsettings --version >/dev/null 2>&1 ;then
gsettings set org.gnome.system.proxy mode "none"
fi
#KDE配置
if kwriteconfig5 -h >/dev/null 2>&1 ;then
kwriteconfig5 --file kioslaverc --group "Proxy Settings" --key "ProxyType" 0
fi
#环境变量方式
[ -w ~/.bashrc ] && profile=~/.bashrc
[ -w /etc/profile ] && profile=/etc/profile
sed -i '/all_proxy/'d $profile
sed -i '/ALL_PROXY/'d $profile
;;
esac
exit 0